引入cross-entropy代价函数

定义一个神经元上的cross-entropy代价函数为:

\begin{eqnarray} C = -\frac{1}{n} \sum_x \left[y \ln a + (1-y ) \ln (1-a) \right], \tag{57}\end{eqnarray}

问:为什么说C是一个代价函数?

答:1. C > 0 2. 当a接近y时C接近0

问:为什么cross-entropy代价函数能解决"learning slow down"的问题?

答:已知

a=σ(z)sigmoid函数z=jwjxj+bσ(z)=σ(z)(1σ(z))a = \sigma(z) 是sigmoid函数 \\ z = \sum_jw_jx_j + b\\ \sigma'(z) = \sigma(z)(1-\sigma(z))

求C对w和b的偏导得:

\begin{eqnarray} \frac{\partial C}{\partial w_j} = \frac{1}{n} \sum_x x_j(\sigma(z)-y). \tag{61} \\ \frac{\partial C}{\partial b} = \frac{1}{n} \sum_x (\sigma(z)-y). \tag{62}\end{eqnarray}

可见,w和b的偏导与σ(z)\sigma'(z)无关,只与y-a的差异有关。

使用cross-entropy作为代价函数对一个神经元的效果。

将cross-entropy应用到整个神经网络

\begin{eqnarray} C = -\frac{1}{n} \sum_x \sum_j \left[y_j \ln a^L_j + (1-y_j) \ln (1-a^L_j) \right]. \tag{63}\end{eqnarray}

根据公式(63)可求出整个神经网络和w、b的偏导。

\begin{eqnarray} \frac{\partial C}{\partial w^L_{jk}} & = & \frac{1}{n} \sum_x a^{L-1}_k (a^L_j-y_j) \tag{69}\\ \frac{\partial C}{\partial b^L_{j}} & = & \frac{1}{n} \sum_x (a^L_j-y_j). \tag{70}\end{eqnarray}

由公式可知,cross-entropy代价函数能解决整个神经网络的learn slowly的问题。

交叉熵代价函数 VS 二次代价函数

几乎所有的情况下交叉熵代价函数都要优于二次代价函数。

但当: 1. 输出层的神经元是线性神经元,即ajL=zjLa^L_j = z^L_j时, 2. 代价函数为二次代价函数

时,可计算出w、b的偏导与使用cross-entropy代价函数得到的结果相同。

\begin{eqnarray} \frac{\partial C}{\partial w^L_{jk}} & = & \frac{1}{n} \sum_x a^{L-1}_k (a^L_j-y_j) \tag{69}\\ \frac{\partial C}{\partial b^L_{j}} & = & \frac{1}{n} \sum_x (a^L_j-y_j). \tag{70}\end{eqnarray}

Last updated