理解神经网络中的交叉熵损失函数及其局限性
交叉熵损失函数
一种用于分类问题1的损失函数2,原理为:将模型输出的概率,与标准答案3的值对比。
和正确答案越接近,则计算结果:交叉熵越低,模型质量越好
和错误答案越接近,则交叉熵越大,模型质量越差
下图为交叉熵损失函数的图像
横轴为“输出与标答的符合程度”,横轴为“交叉熵大小”
优点:
①值域(0 ~ +∞),且斜率变化在整个定义域中都很明显,不容易出现梯度消失
②在模型学习的初期阶段,容易出错的,此损失函数的损失值保持在很高的程度,有利于模型在初期时自我纠正
——————————
缺点:
①在模型学习的后期阶段,模型趋于平稳,曲线的变化率也变低,反而不利于后期进一步纠正模型
②随着分类数目的增大,分类层的线性变化矩阵参数也随着增大(多分类问题时)(?)
③对于封闭集(?)分类问题,学习到的特征是可分离的,但对于开放集(?)人脸识别问题,所学特征却没有足够的区分性(?)
④擅长于学习类间的信息,因为它采用了类间竞争机制(?),它只关心对于正确标签预测概率的准确性,忽略了其他非正确标签的差异,导致学习到的特征比较散
【优缺点来源链接: https://zhuanlan.zhihu.com/p/35709485】
小概念:独热(one hot/一位有效编码)
在交叉熵损失函数中,意为用0、1来表示唯一的正确标准答案
如三种动物识别,猫、狗、猪
在任意一张图片的正确结果中,只有一个作为正确答案
如
[1,0,0]代表此图片正确答案为“猫”
在交叉熵损失函数中的使用如下图:
方差损失函数
一种用于回归问题4的损失函数,原理为:计算模型输出的值,与需要回归的值之间的差,再进行平方。得到模型输出与实际值的损失
图像如下
横轴为“输出与实际值的偏离程度(注意±)”,横轴为“方差损失大小”
优点:
①无论对于什么样的输入值,都有着稳定的梯度,相比于Re_lu(线性整流函数)。不容易梯度爆炸(?)
②对于个别偏离趋势的值,会随着偏离得越远而降低此值的影响。也就是说,更关注数据整体的趋势(惩罚值是固定的)
缺点:
①大部分情况下梯度5保持相等(虽然在y−f(x)=0【曲线完美符合时】导数不存在),这意味着即使对于小的损失值,其梯度也是大的。这不利于函数的收敛和模型的学习。
- 输出为概率的问题 ↩︎
- 监督学习中会用到此函数 ↩︎
- (转化为1/0、即:正确答案/非正确答案) ↩︎
- 输出为具体值的问题 ↩︎
- 高维时的导数和 ↩︎
上一篇: 聊聊交叉熵损失函数的作用与应用
下一篇: Python实现交叉熵损失函数的调用方法
推荐阅读
-
【python实现卷积神经网络】损失函数的定义(均方误差损失、交叉熵损失)
-
玩转神经网络:自定义损失函数、交叉熵与softmax的优化技巧
-
深度学习入门5:交叉熵损失函数、MSE与CTC在序列问题中的应用,以及Balanced L1 Loss在目标检测中的妙用
-
入门机器学习:监督学习中的交叉熵损失函数详解
-
深入理解交叉熵损失函数的原理
-
揭秘交叉熵损失函数的运作原理,让你轻松理解
-
深度学习新手必看:交叉熵损失函数、MSE、CTC损失与序列问题的解决方案,以及Balanced L1 Loss在目标检测中的应用
-
深入理解:交叉熵损失函数在深度学习中的应用
-
理解 softmax、softmax 损失函数和交叉熵损失函数:简单易懂的解释
-
理解并实现PyTorch中的交叉熵损失函数(附带Python代码)