常见损失函数总结
loss一般是正的,而且越小越好。
0-1 loss / abs loss
- 应用场景:回归问题
- 0-1 loss:只要预测值和标签不相等,就
loss+=1;或者预测值q和标签p之间的差值大于阈值t,就loss+=1.或者套用其他的非线性函数。 - abs loss:
loss += abs(p-q).
square loss
- 应用场景:很多,分类问题和回归问题都可以
- loss输入:模型通过预测给出一个tensor(scalar, vector甚至matrix),而标签也是一个同样size的tensor
- 计算:
Jmse=∑i,j(pi,j−qi,j)2J_{mse} = \sum_{i, j}(p_{i, j} - q_{i, j})^2Jmse=i,j∑(pi,j−qi,j)2
hinge loss
- 应用场景:N分类问题
- loss输入:模型输入一个N维向量为分类结果,针对这个向量计算loss.(这个N维向量一般是一个全连接层(线性层)的输出,是模型对于每个类别的打分。)
- 计算方法:向量的每个分量和正确分类的分量比较,如果差的不多甚至超过(说明有混淆),则在loss中反映出来。在下面的公式中,iii是正确的类别,ttt是阈值(一般为1,或是某个计算出来的平均值)。
Jhinge=∑j=1,j≠iNmax(0,sj−si+t)J_{hinge} = \sum_{j=1, j\neq i}^{N}max(0, s_j - s_i + t)Jhinge=j=1,j=i∑Nmax(0,sj−si+t)
softmax loss
- 应用场景:N分类问题
- loss输入:模型输出一个N维向量,为模型预测的分类概率。
- 计算方法:
Jsoftmax=−logP(i∣model)J_{softmax} = -logP(i|model)Jsoftmax=−logP(i∣model)
cross entropy loss
- 应用场景:在自然语言中很常用
- loss输入:模型输出一个N维向量q,即模型预测的分布(分布律)。但是实际上的分布是N维向量p.
- 计算方法:
Jcross_entropy=−∑i=1NpilogqiJ_{cross\_entropy} = -\sum_{i=1}^{N}p_ilogq_iJcross_entropy=−i=1∑Npilogqi
有的时候也会使用困惑度作为loss
Jcross_entropy=2Jcross_entropyJ_{cross\_entropy} = 2^{J_{cross\_entropy} }Jcross_entropy=2Jcross_entropy
L1正则项
- 正则项又叫做罚项,是为了限制模型的参数过度地往同一个方向发展,从而导致模型过拟合,而加在损失函数后面的一项。
- 计算:所有参数的线性和/加权线性和。
- 如果所有参数都位于同一量度,那么可以直接线性和;如果有的参数和其他参数量度不同(比如分布不同,均值的差距太大)(这可能是因为输入没有标准化导致的),那就乘以一个线性系数。
- L1会趋向于产生少量的特征,而其他的特征都是0.这样可以提取出较少的特征。图像解释:因为L1范数在平面坐标系的单位圆是菱形的,有向四个坐标轴突出的迹象,所以趋向于产生少量的值较大的特征。
- 如果样本原本的分布符合Laplace分布,那么推荐使用L1正则项。
L2正则项
- 计算:所有参数的平方和/加权平方和。
- L2产生的特征数比L1多,但是都是接近于0的。图像解释:因为L2范数在平面坐标系的单位圆是圆,在各个方向的扩展比较均匀,所以趋向于产生大量的值较小的特征。
- 如果样本原本的分布符合Gauss分布,那么推荐使用L2正则项。
本文深入解析了多种机器学习和深度学习中的损失函数,包括0-1loss、absloss、squareloss、hingeloss、softmaxloss、crossentropyloss等,探讨了它们的应用场景、计算方法及如何选择正则项。
1210

被折叠的 条评论
为什么被折叠?



