1 概念:
损失函数是衡量预测模型在能够预测预期结果方面的表现有多好的指标。寻找最小值的最常用的方法是“梯度下降”。
2 平方损失
3 交叉熵损失
3.1 nn.CrossEntropyLoss()的计算公式为:
3.2 交叉熵损失的torch代码:
output是网络的输出,size=[batch_size, class]
#如网络的batch size为128,数据分为10类,则size=[128, 10]
# target是数据的真实标签,是标量,size=[batch_size]
#如网络的batch size为128,则size=[128]
crossentropyloss=nn.CrossEntropyLoss()
crossentropyloss_output=crossentropyloss(output,target)
注意:使用nn.CrossEntropyLoss()时,不需要现将输出经过softmax层,否则计算的损失会有误,即直接将网络输出用来计算损失即可
参考博客:
4 中心损失
5 正则化损失(L1正则化,L2正则化)
5.1 什么是范数?
范数,是具有“距离”概念的函数。我们知道距离的定义是一个宽泛的概念,只要满足非负、自反、三角不等式就可以称之为距离。范数是一种强化了的距离概念,它在定义上比距离多了一条数乘的运算法则。有时候为了便于理解,我们可以把范数当作距离来理解。
在数学上,范数包括向量范数和矩阵范数,向量范数表征向量空间中向量的大小,矩阵范数表征矩阵引起变化的大小。一种非严密的解释就是,对应向量范数,向量空间中的向量都是有大小的,这个大小如何度量,就是用范数来度量的,不同的范数都可以来度量这个大小,就好比米和尺都可以来度量远近一样;对于矩阵范数,学过线性代数,我们知道,通过运算AX=B,可以将向量X变化为B,矩阵范数就是来度量这个变化大小的。
5.2 L-p范数
5.3 L-0范数
当P=0时,也就是L0范数,由上面可知,**L0范数并不是一个真正的范数**,它主要被用来度量向量中非零元素的个数。用上面的L-P定义可以得到的L-0的定义为:<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/25456842/1648123012770-d9e7040f-746e-45a6-b966-e2851a77d775.png#clientId=u571efb61-4035-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ud38a9245&margin=%5Bobject%20Object%5D&name=image.png&originHeight=66&originWidth=125&originalType=url&ratio=1&rotation=0&showTitle=false&size=1914&status=done&style=none&taskId=ud2de4179-a5f9-43ed-9cf5-ecd9ae49f36&title=)<br /> 这里就有点问题了,我们知道非零元素的零次方为1,但零的零次方,非零数开零次方都是什么鬼,很不好说明L0的意义,所以在通常情况下,大家都用的是:<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/25456842/1648123106038-940d337a-eb93-4fbc-8305-3e6106dbb532.png#clientId=u571efb61-4035-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=22&id=ub51018c9&margin=%5Bobject%20Object%5D&name=image.png&originHeight=19&originWidth=146&originalType=url&ratio=1&rotation=0&showTitle=false&size=1220&status=done&style=none&taskId=u3057ca02-b3f4-451f-a680-ea6d81c4b3b&title=&width=166.98863220214844)<br /> 表示向量x中非零元素的个数。对于L0范数,其优化问题为:<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/25456842/1648123183420-3369f71d-34e1-4420-8543-79433a566722.png#clientId=u571efb61-4035-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u4b1b0914&margin=%5Bobject%20Object%5D&name=image.png&originHeight=60&originWidth=127&originalType=url&ratio=1&rotation=0&showTitle=false&size=1544&status=done&style=none&taskId=ua3f5e406-e26a-47f3-be7c-320caa79aec&title=)<br /> 在实际应用中,由于L0范数本身不容易有一个好的数学表示形式,给出上面问题的形式化表示是一个很难的问题,故被人认为是一个NP难问题。所以在 **实际情况中**, **L0的最优问题会被放宽到L1或L2下的最优化。**
5.4 L-1范数
L1范数是我们经常见到的一种范数,它的定义如下:<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/25456842/1648124605627-27215f7d-dd23-43f5-a28a-a9fb8f1fa68c.png#clientId=u571efb61-4035-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u360052b1&margin=%5Bobject%20Object%5D&name=image.png&originHeight=51&originWidth=111&originalType=url&ratio=1&rotation=0&showTitle=false&size=1377&status=done&style=none&taskId=u8ae32997-bbf8-4964-bbcf-d37f127996c&title=)<br />表示向量x中非零元素的绝对值之和。<br /> L1范数有很多的名字,例如我们熟悉的 **曼哈顿距离、最小绝对误差**等。使用 **L1范数可以度量两个向量间的差异,如绝对误差和(Sum of Absolute Difference)**:<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/25456842/1648124851851-d3227b76-44b9-49a9-8391-9865296c0628.png#clientId=u571efb61-4035-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=uf4d88c24&margin=%5Bobject%20Object%5D&name=image.png&originHeight=50&originWidth=225&originalType=url&ratio=1&rotation=0&showTitle=false&size=2170&status=done&style=none&taskId=u3655ff7a-5c7f-4692-8601-dc4aaab4f14&title=)<br /> 对于L1范数,它的优化问题如下:<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/25456842/1648124640585-0cb22a5d-2c16-428d-8775-cf6c4160a570.png#clientId=u571efb61-4035-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u8decb108&margin=%5Bobject%20Object%5D&name=image.png&originHeight=56&originWidth=138&originalType=url&ratio=1&rotation=0&showTitle=false&size=1641&status=done&style=none&taskId=u96dd2faa-baf2-4db9-aa9d-00d4a3edbf0&title=)<br /> 由于L1范数的天然性质,对L1优化的解是一个稀疏解, **因此L1范数也被叫做稀疏规则算子**。 **通过L1可以实现特征的稀疏,去掉一些没有信息的特征(为什么L1范数可以实现特征的稀疏,去掉一些没有信息的特征?答案看**[**参考链接**](https://blog.csdn.net/ningyanggege/article/details/84071910)**(解答三好理解些))**。例如在对用户的电影爱好做分类的时候,用户有100个特征,可能只有十几个特征是对分类有用的,大部分特征如身高体重等可能都是无用的,利用L1范数就可以过滤掉。
5.5 L-2范数
L2范数是我们最常见最常用的范数了,我们用的最多的度量距离欧氏距离就是一种L2范数,它的定义如下:
表示向量元素的平方和再开平方。
像L1范数一样,L2也可以度量两个向量间的差异,如平方差和(Sum of Squared Difference):
对于L2范数,它的优化问题如下:
L2范数通常会被用来做优化目标函数的正则化项,防止模型为了迎合训练集而过于复杂造成过拟合的情况,从而提高模型的泛化能力。
5.6 L∞ 范数
当 p=∞时,也就是L∞范数,它主要被用来度量向量元素的最大值,与L0一样,通常情况下表示为
5.7 扩展一点:
使用机器学习方法解决实际问题时,我们通常要用L1或L2范数做正则化(regularization),从而限制权值大小,减少过拟合风险。特别是在使用梯度下降来做目标函数优化时。
5.8 L1和L2的区别
L1范数(L1 norm)是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算”(Lasso regularization)。
比如 向量A=[1,-1,3], 那么A的L1范数为 |1|+|-1|+|3|.
简单总结一下就是:
L1范数: 为x向量各个元素绝对值之和。
L2范数: 为x向量各个元素平方和的1/2次方,L2范数又称Euclidean范数或者Frobenius范数
Lp范数: 为x向量各个元素绝对值p次方和的1/p次方.
5.8.1 L1正则化产生稀疏的权值, L2正则化产生平滑的权值为什么会这样?
在支持向量机学习过程中,L1范数实际是一种对于成本函数求解最优的过程,因此,L1范数正则化通过向成本函数中添加L1范数,使得学习得到的结果满足稀疏化,从而方便提取特征。
L1范数可以使权值稀疏,方便特征提取。 L2范数可以防止过拟合,提升模型的泛化能力。
5.8.2 L1和L2正则先验分别服从什么分布
L1和L2正则先验分别服从什么分布,L1是拉普拉斯分布,L2是高斯分布。
以上内容转载于SethChai的博客,再次感谢博主的分享,转载请附上原文链接:
https://blog.csdn.net/qq_37466121/article/details/87855185
5