公式 8-11 的内容如下:
L ( y , a ) = − [ y log a + ( 1 − y ) log ( 1 − a ) ] L(y, a) = -[y \log a + (1 - y) \log (1 - a)] L(y,a)=−[yloga+(1−y)log(1−a)]
这个公式表示的是交叉熵损失函数(Cross-Entropy Loss Function),它广泛用于二分类问题,尤其是神经网络的输出层为 sigmoid 激活函数的情况下。让我们详细解释这个公式的含义。
1. 公式的组成部分:
-
y y y:表示真实标签,它的值通常为 0 或 1。
- y = 1 y = 1 y=1 表示样本属于正类。
- y = 0 y = 0 y=0 表示样本属于负类。
-
a a a:表示模型的预测输出值。由于此处的激活函数为 Sigmoid 函数,所以输出 a a a 是一个概率值,范围为 0 ≤ a ≤ 1 0 \leq a \leq 1 0≤a≤1。可以理解为模型预测该样本属于正类的概率。
-
log a \log a loga 和 log ( 1 − a ) \log (1 - a) log(1−a):分别表示预测为正类和负类时的对数损失。
2. 交叉熵损失的解释:
交叉熵损失是用来衡量两个概率分布之间的差异。在这里,它衡量的是模型的预测概率分布 a a a 与真实分布 y y y 之间的差异。损失函数的形式通过对数函数来放大预测误差较大的情况,以此来惩罚错误的预测。
-
当 y = 1 y = 1 y=1 时:
L ( y , a ) = − log a L(y, a) = -\log a L(y,a)=−loga这意味着我们只考虑预测为正类的概率 a a a。如果预测 a a a 越接近 1,损失就越小;反之,预测越接近 0,损失越大。
-
当 y = 0 y = 0 y=0 时:
L ( y , a ) = − log ( 1 − a ) L(y, a) = -\log (1 - a) L(y,a)=−log(1−a)这意味着我们只考虑预测为负类的概率 1 − a 1 - a 1−a。如果预测 a a a 越接近 0(即 1 − a 1 - a 1−a 越接近 1),损失就越小;反之,预测 a a a 越接近 1,损失就越大。
3. 交叉熵损失函数的推导:
交叉熵损失函数的基本形式是:
L ( y , a ) = − [ y log a + ( 1 − y ) log ( 1 − a ) ] L(y, a) = -[y \log a + (1 - y) \log (1 - a)] L(y,a)=−[yloga+(1−y)log(1−a)]
这个公式是通过信息熵推导得到的。它衡量了真实标签 y y y 和预测输出 a a a 之间的不一致程度。公式的两部分分别对应着:
- 当 y = 1 y = 1 y=1 时,只考虑 log a \log a loga 部分,因为我们希望模型的预测 a a a 越接近 1 越好。
- 当 y = 0 y = 0 y=0 时,只考虑 log ( 1 − a ) \log (1 - a) log(1−a) 部分,因为我们希望 a a a 越接近 0 越好。
4. 交叉熵损失函数的性质:
- 凸性:交叉熵损失函数是一个凸函数,因此使用梯度下降等优化算法可以找到全局最小值。
- 惩罚错误预测:当模型的预测与真实标签差距较大时,交叉熵损失的值会迅速增大。因此,它可以有效惩罚错误的预测,并推动模型朝着正确预测的方向优化。
5. 交叉熵损失的意义:
交叉熵损失函数在神经网络的训练过程中非常重要,特别是在分类任务中。它结合了模型的预测输出和真实标签,提供了一个衡量预测准确性的标准。在反向传播中,我们通过最小化这个损失函数来调整模型的权重,从而提高模型的预测能力。
举个例子:
假设某个样本的真实标签为 y = 1 y = 1 y=1,而模型的预测为 a = 0.9 a = 0.9 a=0.9:
L ( y , a ) = − [ 1 log 0.9 + ( 1 − 1 ) log ( 1 − 0.9 ) ] = − log 0.9 ≈ 0.105 L(y, a) = -[1 \log 0.9 + (1 - 1) \log (1 - 0.9)] = -\log 0.9 \approx 0.105 L(y,a)=−[1log0.9+(1−1)log(1−0.9)]=−log0.9≈0.105
此时损失比较小,因为模型的预测接近真实值。
如果模型的预测为 a = 0.1 a = 0.1 a=0.1,则:
L ( y , a ) = − [ 1 log 0.1 + ( 1 − 1 ) log ( 1 − 0.1 ) ] = − log 0.1 = 1 L(y, a) = -[1 \log 0.1 + (1 - 1) \log (1 - 0.1)] = -\log 0.1 = 1 L(y,a)=−[1log0.1+(1−1)log(1−0.1)]=−log0.1=1
此时损失较大,说明预测误差大。
总结:
公式 8-11 定义的是交叉熵损失函数,用于衡量模型预测与真实标签之间的差异。通过最小化这个损失函数,我们可以不断调整模型的参数,使得模型的预测更加准确。交叉熵损失函数的特点在于它能够有效地惩罚错误的预测,并且是凸函数,适合用梯度下降进行优化。