# Cross-Entropy Cost

我们理想情况是让神经网络学习更快

sigmod函数学习的很慢

因此定义一个新的CostCost函数CrossEntropyCross-Entropy

C=1nx[ylna+(1y)ln(1a)]C = -\frac{1}{n}\sum_x[ylna+(1-y)ln(1-a)]

  • CC的函数值大于等于00
  • a=ya = y时,cost=0cost=0

Cwj=1nx(yσ(z)(1y)1σ(z))σwj=1nx(yσ(z)(1y)1σ(z))σ(z)xj\frac{\partial C}{\partial w_j} = -\frac{1}{n}\sum_x(\frac{y}{\sigma(z)} - \frac{(1-y)}{1-\sigma(z)}) \frac{\partial \sigma}{\partial w_j} = -\frac{1}{n}\sum_x(\frac{y}{\sigma(z)} - \frac{(1-y)}{1-\sigma(z)}) \sigma'(z)x_j

整理后得到

Cwj=1nxσ(z)xjσ(z)(1σ(z))(σ(z)y)\frac{\partial C}{\partial w_j} = -\frac{1}{n}\sum_x \frac{\sigma'(z)x_j}{\sigma(z)(1-\sigma(z))} (\sigma(z)-y)

sigmodsigmod函数定义

σ(z)=11+ez\sigma(z) = \frac{1}{1+e^{-z}}

得到

σ(z)=σ(z)(1σ(z))\sigma'(z) = \sigma(z)(1-\sigma(z))

代入上面的偏导方程,得到

Cwj=1nxxi(σ(z)y)\frac{\partial C}{\partial w_j} = \frac{1}{n}\sum_x x_i(\sigma(z)-y)

学习的快慢取决于

σ(z)y\sigma(z) - y

也就是errorerror,好处就是:错误大的时候,更新多,学得快;错误小的时候,学习慢。

对于偏向,有

Cwj=1nx(σ(z)y)\frac{\partial C}{\partial w_j} = \frac{1}{n}\sum_x (\sigma(z)-y)

其学习快慢同样只与errorerror有关,可以提高学习速度。