引言
在深度学习的分类任务中,Softmax函数与交叉熵损失(Cross-Entropy Loss)的组合堪称经典组合。这对黄金搭档不仅具有数学上的优雅性,更能显著提升模型训练效率。本文将通过直观解释、数学推导和实践意义三个维度,揭示它们的协同工作原理。
一、Softmax函数:概率分布函数
1.1 功能定义
对于神经网络的原始输出值 z=[z1,z2,...,zn],Softmax函数通过指数归一化将其转化为概率分布:
si=∑j=1nezjezi
- 输出满足 0<si<1 且 ∑si=1
- 指数运算放大差异:原始输出的微小差距会被指数函数显著放大
1.2 直观示例
假设神经网络输出为 [2.0,1.0,0.1],经过Softmax处理:
s1s2s3=e2.0+e1.0+e0.1e2.0≈0.659=e2.0+e1.0+e0.1e1.0≈0.242=e2.0+e1.0+e0.1e0.1≈0.099
1.3 Softmax求导过程
第一种情况:i=j
- 分子导数∂zj∂=ezi,因为i=j
- 分母导数∂zj∂∑k=1nezk=ezj=ezi
推导过程:
∂zj∂softmax(zi)=(∑kezk)2ezi⋅∑kezk−ezi⋅ezj=∑kezkezi⋅∑kezk∑kezk−ezj=softmax(zi)⋅(1−softmax(zi))
第二种情况:i=j
- 分子导数∂zj∂=0
- 分母导数∂zj∂∑k=1nezk=ezj
推导过程:
∂zj∂softmax(zi)=(∑kezk)20⋅∑kezk−ezi⋅ezj=−(∑kezk)2eziezj=−softmax(zi)⋅softmax(zj)
二交叉熵(Cross-Entropy)的数学原理
2.1. 交叉熵的定义
交叉熵(Cross-Entropy)是衡量两个概率分布之间差异的度量,常用于机器学习和信息论,特别是在分类任务中衡量预测分布与真实分布的匹配程度。
对于两个概率分布 p(x) 和 q(x),交叉熵定义为:
H(p,q)=−i∑p(xi)lnq(xi)
其中:
- p(x) 表示真实分布(ground truth label),通常是独热编码(one-hot encoding)。
- q(x) 表示预测分布(模型输出的概率分布)。
三 Softmax与交叉熵组合的数学原理及梯度推导
1.基于链式法则
,交叉熵损失函数对 Softmax 函数第 j 维输入 zj的导数形式为:
∂zj∂Loss=∂softmax(z)∂Loss⋅∂zj∂softmax(z)
2.在多分类问题中
,真实值y采用 one-hot编码,其中只有一个维度是1,其他维度都是0。所以我们可以假设第k纬是1,即yk = 1,那么交叉熵损失函数可以简化为:
Loss=−i∑yiln(softmax(z)i)=−yk⋅ln(softmax(z)k)=−ln(softmax(z)k)
- 其中yi是第i个分类的真实标签值,softmax(z)isoftmax函数对第i个分类的预测概率
3.因此,梯度可以表示为:
∂zj∂Loss=∂softmax(z)k∂(−ln(softmax(z)k))⋅∂zj∂softmax(z)k=−softmax(z)k1⋅∂zj∂softmax(z)k
4.根据 Softmax 函数的导数
,我们有:
∂xj∂(softmax(x)i)={softmax(x)i(1−softmax(x)j),i=j−softmax(x)i⋅softmax(x)j,i=j
最终代入得到
:
∂zj∂Loss={softmax(zj)−1,softmax(zj),if j=kif j=k
可以看到,Softmax 函数与交叉熵的结合不仅在数学上完美统一,而且在梯度计算上也非常简洁。基于上述梯度形式,通过反向传播方法可以高效地完成整个神经网络权重的更新。
总结
Softmax 函数和交叉熵损失函数的组合在多分类任务中非常高效。Softmax 函数将神经网络的输出转化为概率分布,而交叉熵损失函数则衡量预测分布与真实分布之间的差异。这种组合不仅能够有效衡量模型的预测性能,还能在反向传播过程中提供简洁且稳定的梯度更新。希望本文能够帮助你更好地理解 Softmax 和交叉熵的数学原理及其在深度学习中的应用。
Reference
王喆 《深度学习推荐系统》