[{"data":1,"prerenderedAt":306},["ShallowReactive",2],{"content-query-TDYGxsGCz8":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"cover":11,"type":12,"category":13,"body":14,"_type":300,"_id":301,"_source":302,"_file":303,"_stem":304,"_extension":305},"/technology-blogs/zh/1886","zh",false,"","【MindSpore易点通】网络实战之计算回归模型类Loss函数","平均绝对误差是一种用于回归模型的损失函数。","2022-09-27","https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2022/09/30/7370e695471f46ab999f6680fd242d1d.png","technology-blogs","基础知识",{"type":15,"children":16,"toc":297},"root",[17,25,35,40,52,62,70,75,84,89,94,99,107,112,120,128,133,138,146,151,156,161,166,174,179,184,192,202,207,212,217,222,230,235,243,253,261,266,274,279,287,292],{"type":18,"tag":19,"props":20,"children":22},"element","h1",{"id":21},"mindspore易点通网络实战之计算回归模型类loss函数",[23],{"type":24,"value":8},"text",{"type":18,"tag":26,"props":27,"children":28},"p",{},[29],{"type":18,"tag":30,"props":31,"children":32},"strong",{},[33],{"type":24,"value":34},"简介",{"type":18,"tag":26,"props":36,"children":37},{},[38],{"type":24,"value":39},"本篇内容给大家分享下计算回归模型的loss函数，这是loss系列的第三篇，之前两篇的传送门如下，欢迎浏览~",{"type":18,"tag":26,"props":41,"children":42},{},[43],{"type":18,"tag":44,"props":45,"children":49},"a",{"href":46,"rel":47},"https://bbs.huaweicloud.com/forum/thread-0226980880953380012-1-1.html",[48],"nofollow",[50],{"type":24,"value":51},"【MindSpore易点通】网络实战之交叉熵类Loss函数",{"type":18,"tag":26,"props":53,"children":54},{},[55],{"type":18,"tag":44,"props":56,"children":59},{"href":57,"rel":58},"https://bbs.huaweicloud.com/forum/thread-0220986737119280001-1-1.html",[48],[60],{"type":24,"value":61},"【MindSpore易点通】网络实战之计算相似度类Loss函数",{"type":18,"tag":26,"props":63,"children":64},{},[65],{"type":18,"tag":30,"props":66,"children":67},{},[68],{"type":24,"value":69},"MAE loss、MSELoss和RMSE loss",{"type":18,"tag":26,"props":71,"children":72},{},[73],{"type":24,"value":74},"**L1 loss：平均绝对误差（MAE）是一种用于回归模型的损失函数。**MAE是真实值和预测值之间的绝对差值之和。所以它衡量的是一组预测值中的平均误差大小，不去考虑它们的方向。范围为0到∞。",{"type":18,"tag":26,"props":76,"children":77},{},[78],{"type":18,"tag":79,"props":80,"children":83},"img",{"alt":81,"src":82},"cke_1691.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/00f/38d/1f8/08e359bae900f38d1f8fc0153abba3cc.20220922083535.09526300888262819887004605314807:50530929073546:2400:21FAAA3CEEF4336DA557243BD5C19347B2F9D2576003644F17B0658FBF067B4E.png",[],{"type":18,"tag":26,"props":85,"children":86},{},[87],{"type":24,"value":88},"优点：MAE有个优点就是，对于离群点（异常值）不那么敏感。因为MAE计算的是误差|f(x)-y|，是一个绝对值，所以无论对于什么样的输入值，都有着稳定的梯度，稳定的梯度让其惩罚都是固定的。不会导致梯度爆炸问题，所以在求最优解的过程中也会比较稳定。",{"type":18,"tag":26,"props":90,"children":91},{},[92],{"type":24,"value":93},"缺点：MAE曲线连续，但是在|f(x)-y|=0处不可导。而且 MAE 大部分情况下梯度都是相等的，这意味着即使对于小的损失值，其梯度也是大的。这不利于函数的收敛和模型的学习。",{"type":18,"tag":26,"props":95,"children":96},{},[97],{"type":24,"value":98},"**L2 loss：均方误差（MSE）是回归损失函数中最常用的误差。**它是预测值f(x)与目标值y之间差值平方和的均值，其公式如下所示：",{"type":18,"tag":26,"props":100,"children":101},{},[102],{"type":18,"tag":79,"props":103,"children":106},{"alt":104,"src":105},"cke_2437.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/00f/38d/1f8/08e359bae900f38d1f8fc0153abba3cc.20220922083550.78116187237627634305434574577043:50530929073546:2400:E82AE9119BE5D1776480AD28F09DC1B5433CBF30CF6374F74E9CFC09D360858C.png",[],{"type":18,"tag":26,"props":108,"children":109},{},[110],{"type":24,"value":111},"下图是均方误差值的曲线分布，其中最小值为预测值为目标值的位置。我们可以看到随着误差的增加损失函数增加的更为迅猛。",{"type":18,"tag":26,"props":113,"children":114},{},[115],{"type":18,"tag":79,"props":116,"children":119},{"alt":117,"src":118},"cke_4375.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/00f/38d/1f8/08e359bae900f38d1f8fc0153abba3cc.20220922083643.44335195153730154982305461418912:50530929073546:2400:505A7E1E17B8949B239690A7334E19EC2A8B40505B3B154893BDD7F2DA8E7E48.png",[],{"type":18,"tag":26,"props":121,"children":122},{},[123],{"type":18,"tag":30,"props":124,"children":125},{},[126],{"type":24,"value":127},"也因此引出来了RMSELoss：均方根误差",{"type":18,"tag":26,"props":129,"children":130},{},[131],{"type":24,"value":132},"RMSELoss用来测量x和y元素之间的均方根误差，其中x是输入Tensor，y是目标值，它可以让损失函数值的变化不再那么迅猛。",{"type":18,"tag":26,"props":134,"children":135},{},[136],{"type":24,"value":137},"假设x和y为一维Tensor，长度为N，x和y的loss为：",{"type":18,"tag":26,"props":139,"children":140},{},[141],{"type":18,"tag":79,"props":142,"children":145},{"alt":143,"src":144},"cke_5632.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/00f/38d/1f8/08e359bae900f38d1f8fc0153abba3cc.20220922083706.30076359323443837772783834111149:50530929073546:2400:920A4004F75A2F1E286621E7DF4941055BA3903BDB313CAB7F91BD9BE5CA5D8F.png",[],{"type":18,"tag":26,"props":147,"children":148},{},[149],{"type":24,"value":150},"从表达式很明显可以对比出来是MAE开方得到的，重点在于开方的意义，这将输出和目标值同等单位的值，更方便使用，MSE和RMSE的内核还是一致的。",{"type":18,"tag":26,"props":152,"children":153},{},[154],{"type":24,"value":155},"优点：对比与MAE，MSE的函数曲线是连续，处处可导的，便于使用梯度下降算法，是一种常用的损失函数。而且，随着误差的减小，梯度也在减小，这有利于收敛，即使使用固定的学习速率，也能较快的收敛到最小值。",{"type":18,"tag":26,"props":157,"children":158},{},[159],{"type":24,"value":160},"缺点：当真实值y和预测值f(x)的差值大于1时，会放大误差；而当差值小于1时，则会缩小误差，这是平方运算决定的。MSE对于较大的误差(>1)给予较大的惩罚，较小的误差(\u003C1）给予较小的惩罚。这样就会对异常值比较敏感，受其影响较大。",{"type":18,"tag":26,"props":162,"children":163},{},[164],{"type":24,"value":165},"对比MAE和MSE受异常值的影响，MSE会给离群点更高的权重，这就会影响其它正常点数据的预测效果，最终降低整体的模型性能。针对上面带有离群点的数据，MAE的效果要好于MSE。如下图：",{"type":18,"tag":26,"props":167,"children":168},{},[169],{"type":18,"tag":79,"props":170,"children":173},{"alt":171,"src":172},"cke_6809.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/00f/38d/1f8/08e359bae900f38d1f8fc0153abba3cc.20220922083718.92763399082695852682428632192302:50530929073546:2400:B5CFFCB3AE16EAF702A83686C3AFDBE37EE940639E4D19CA520236A1C1B0EA14.png",[],{"type":18,"tag":26,"props":175,"children":176},{},[177],{"type":24,"value":178},"如果从梯度求解以及收敛方面选择，MSE是优于MAE。MSE梯度值也是动态变化的，并且可导，能够快速的收敛；而MAE在0点处不可导，且其梯度保持不变。对于很小的损失值其梯度也很大，在深度学习中，就需要使用变化的学习率，在损失值很小时降低学习率。",{"type":18,"tag":26,"props":180,"children":181},{},[182],{"type":24,"value":183},"那么有没有方法能够避开MAE的不可导以及MSE的对异常值敏感的问题呢，那么它们来啦，就是Huber Loss和SmoothL1Loss。",{"type":18,"tag":26,"props":185,"children":186},{},[187],{"type":18,"tag":30,"props":188,"children":189},{},[190],{"type":24,"value":191},"Huber Loss和SmoothL1Loss",{"type":18,"tag":26,"props":193,"children":194},{},[195,200],{"type":18,"tag":30,"props":196,"children":197},{},[198],{"type":24,"value":199},"Huber Loss是一个用于回归问题的带参损失函数",{"type":24,"value":201},", 优点是能增强平方误差损失函数(MSE, mean square error)对离群点的鲁棒性。",{"type":18,"tag":26,"props":203,"children":204},{},[205],{"type":24,"value":206},"·当预测偏差小于δ时，它采用平方误差,",{"type":18,"tag":26,"props":208,"children":209},{},[210],{"type":24,"value":211},"·当预测偏差大于δ时，采用的线性误差。",{"type":18,"tag":26,"props":213,"children":214},{},[215],{"type":24,"value":216},"相比于最小二乘的线性回归，HuberLoss降低了对离群点的惩罚程度，所以 HuberLoss 是一种常用的鲁棒的回归损失函数。",{"type":18,"tag":26,"props":218,"children":219},{},[220],{"type":24,"value":221},"Huber Loss 定义如下",{"type":18,"tag":26,"props":223,"children":224},{},[225],{"type":18,"tag":79,"props":226,"children":229},{"alt":227,"src":228},"cke_9056.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/00f/38d/1f8/08e359bae900f38d1f8fc0153abba3cc.20220922083756.68570045317470563622213709251402:50530929073546:2400:B802A6DBDEA714DB96BC5E102CFCCDBAD82E2387B26C2F6AC484C90F10671106.png",[],{"type":18,"tag":26,"props":231,"children":232},{},[233],{"type":24,"value":234},"参数a通常表示residuals，写作y−f(x)，当a = y−f(x)时，Huber loss的表达式以及函数形状为：",{"type":18,"tag":26,"props":236,"children":237},{},[238],{"type":18,"tag":79,"props":239,"children":242},{"alt":240,"src":241},"cke_10421.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/00f/38d/1f8/08e359bae900f38d1f8fc0153abba3cc.20220922083808.07134588199786763255780458124017:50530929073546:2400:270C339E875F900874F84CFC7CB41C4548FC346511E18A13C5A916701559D133.png",[],{"type":18,"tag":26,"props":244,"children":245},{},[246,251],{"type":18,"tag":30,"props":247,"children":248},{},[249],{"type":24,"value":250},"SmoothL1损失函数",{"type":24,"value":252},"，如果预测值和目标值的逐个元素绝对误差小于设定阈值beta则用平方项，否则用绝对误差项。给定两个输入x,y，其中β代表阈值beta。SmoothL1Loss定义如下：",{"type":18,"tag":26,"props":254,"children":255},{},[256],{"type":18,"tag":79,"props":257,"children":260},{"alt":258,"src":259},"cke_11976.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/00f/38d/1f8/08e359bae900f38d1f8fc0153abba3cc.20220922083819.61981384952503195195849004785066:50530929073546:2400:C155C67B2A5EC8CA8622D33EB3DA3D62BCB6DA29FD61BAA7F92BEF210EE6DAF7.png",[],{"type":18,"tag":26,"props":262,"children":263},{},[264],{"type":24,"value":265},"当 reduction 不是设定为 none 时，计算如下:",{"type":18,"tag":26,"props":267,"children":268},{},[269],{"type":18,"tag":79,"props":270,"children":273},{"alt":271,"src":272},"cke_13239.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/00f/38d/1f8/08e359bae900f38d1f8fc0153abba3cc.20220922083824.63864882815451664461452823784086:50530929073546:2400:9E067B189F676311CC6716A48559B4455BCB338F8545314B047EF50AE60AD895.png",[],{"type":18,"tag":26,"props":275,"children":276},{},[277],{"type":24,"value":278},"整体的计算逻辑和Huber Loss是一致的，都是采用设置阈值的方法，控制loss的计算方式，保证模型的鲁棒性。",{"type":18,"tag":26,"props":280,"children":281},{},[282],{"type":18,"tag":30,"props":283,"children":284},{},[285],{"type":24,"value":286},"总结",{"type":18,"tag":26,"props":288,"children":289},{},[290],{"type":24,"value":291},"本篇内容首先分析了MAE和MSE损失函数的计算以及优缺点，因为MAE的不可导以及MSE的对异常值敏感，我们继续分析了它们的组合体Huber Loss和SmoothL1Loss，通过阈值分段式的组合，缓解了MAE和MSE的缺点。",{"type":18,"tag":26,"props":293,"children":294},{},[295],{"type":24,"value":296},"谢谢浏览，如有不正确的地方欢迎留言指正~",{"title":7,"searchDepth":298,"depth":298,"links":299},4,[],"markdown","content:technology-blogs:zh:1886.md","content","technology-blogs/zh/1886.md","technology-blogs/zh/1886","md",1776506116629]