交叉熵与均方误差

均方代价函数及不足

  • 均方代价函数:

    L=12Nx||y(x)a2(x)||2 L = 1 2 N ∑ x | | y ( x ) − a 2 ( x ) | | 2

  • 预期:NN在训练时,如果预测值与实际值误差越大,那么反向传播过程中,各种参数的调整的幅度就要更大,从而使训练更快收敛, 然而如果使用均方误差函数,实际有可能误差越大,参数调整的幅度可能更小,训练更缓慢。

    Lw=(ay)σxLb=(ay)σ ∂ L ∂ w = ( a − y ) σ ‘ x ∂ L ∂ b = ( a − y ) σ ‘

    w w b b 的梯度跟激活函数的梯度成正比。与期望不符合,若y=0,实际输出为0.8、0.9时,sigmoid在0.9时梯度比0.8低

交叉熵代价函数

  • 交叉熵定义:

L=1Nx[ylna+(1y)ln(1a)]Lwj=1Nx(yσ(z)(1y)1σ(z))σwj=1Nx(yσ(z)(1y)1σ(z))σ(z)xj=1Nx(yσ(z)(1y)1σ(z))(σ(z)y)=1Nxxj(σ(z)y) L = − 1 N ∑ x [ y l n a + ( 1 − y ) l n ( 1 − a ) ] ∂ L ∂ w j = − 1 N ∑ x ( y σ ( z ) − ( 1 − y ) 1 − σ ( z ) ) ∂ σ ∂ w j = − 1 N ∑ x ( y σ ( z ) − ( 1 − y ) 1 − σ ( z ) ) σ ‘ ( z ) x j = − 1 N ∑ x ( y σ ( z ) − ( 1 − y ) 1 − σ ( z ) ) ( σ ( z ) − y ) = 1 N ∑ x x j ( σ ( z ) − y )

同理
Lb=1Nx(σ(z)y) ∂ L ∂ b = 1 N ∑ x ( σ ( z ) − y )

为什么会想到交叉熵?

在均方误差函数下:

Lb=(ay)σ(z) ∂ L ∂ b = ( a − y ) σ ′ ( z )

想找到:
Lb=ay ∂ L ∂ b = a − y

又有
Lb=Laazzb=Laσ(z) ∂ L ∂ b = ∂ L ∂ a ⋅ ∂ a ∂ z ⋅ ∂ z ∂ b = ∂ L ∂ a ⋅ σ ′ ( z )

即找
Laσ(z)=(ay) ∂ L ∂ a ⋅ σ ′ ( z ) = ( a − y )

对上式两边积分得
L=[ylna+(1y)ln(1a)]+C L = − [ y l n a + ( 1 − y ) l n ( 1 − a ) ] + C

积分公式
1(1a)da=11a+1ada ∫ 1 ( 1 − a ) d a = ∫ 1 1 − a + 1 a d a

你可能感兴趣的:(机器学习)