引入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"的问题?
答:已知
求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的偏导与无关,只与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. 输出层的神经元是线性神经元,即时, 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