再探反向传播神经网络,这是从一个比较有名的线上书《Neural Networks and Deep Learning》上看到并做的笔记。
反向传播背后的四个基本等式
假设在第l层的输入值上有大小为$\Delta{z_j^l}$的扰动,则输出值$\sigma(z_j^l+\Delta{z_j^l})$对于损失函数的影响为$\frac{\partial{C}}{\partial{z_j^l}}\Delta{z_j^l}$。我们的目的是让cost下降,如果$\frac{\partial{C}}{\partial{z_j^l}}$很大的话,可以选取与其符号相反的一个$\Delta{z_j^l}$(但是绝对值也不能太大,否则这个式子就不成立了),如果$\frac{\partial{C}}{\partial{z_j^l}}$很小,那么对于损失函数的影响就很小了。
在此定义:$\delta_j^l \equiv \frac{\partial{C}}{\partial{z_j^l}}$
等式一:误差与输出值的关系函数
$$\delta_j^l = \frac{\partial{C}}{\partial{a_j^l}}\sigma’(z_j^l)$$ 这里的$a_j^l$是$\sigma(z_j^l)$
证明: $$\delta_j^l=\frac{\partial{C}}{\partial{z_j^l}}=\sum_k{\frac{\partial{C}}{\partial{a_k^l}}}\frac{\partial{a_k^l}}{\partial{z_j^l}}$$ $\because z_j^l$只与$a_j^l$有关 $$\therefore \sum_k{\frac{\partial{C}}{\partial{a_k^l}}}\frac{\partial{a_k^l}}{\partial{z_j^l}} = \frac{\partial{C}}{\partial{a_j^l}}\frac{\partial{a_j^l}}{\partial{z_j^l}}$$ $$\because a_j^l=\sigma(z_j^l)$$ $$\therefore \delta_j^l=\frac{\partial{C}}{\partial{a_j^l}}\sigma’(z_j^l)$$
等式二:后一层误差与前一层误差的关系函数
$$\delta^l=[(w^{l+1})^T\delta^{l+1}]\odot\sigma’(z^l)$$ 证明: $$\sigma_j^l=\frac{\partial{C}}{\partial{z_j^l}}=\sum_k{\frac{\partial{C}}{\partial{z_k^{l+1}}}\frac{\partial{z_k^{l+1}}}{\partial{z_j^l}}}=\sum_k{\frac{\partial{z_k^{l+1}}}{\partial{z_j^l}}\delta_k^{l+1}}$$ $$\because z_k^{l+1}=\sum_j{w_{kj}^{l+1}a_j^l+b_k^{l+1}}=\sum_j{w_{kj}^{l+1}\sigma(z_j^l)+b_k^{l+1}}$$ $$\therefore \frac{\partial{z_k^{l+1}}}{\partial{z_j^l}}=\sum_j{w_{kj}^{l+1}\sigma’(z_j^l)}$$ $$\therefore \delta^l=[(w^{l+1})^T\delta^{l+1}]\odot\sigma’(z^l)$$
等式三:误差C因bias而改变的关系函数
$$\frac{\partial{C}}{\partial{b_j^l}}=\delta_j^l$$ 证明: $$\frac{\partial{C}}{\partial{b_j^l}}=\sum_k{\frac{\partial{C}}{\partial{z_k^l}}} \frac{\partial{z_k^l}}{\partial{b_j^l}}=\sum_k{\delta_j^l\frac{\partial{z_k^l}}{\partial{b_j}}}$$ $$\because z_k^l=\sum_j{w_{kj}^la_j^{l-1}+b_j^l}$$ $$\therefore \frac{\partial{z_k^l}}{\partial{b_j}}=1$$ $$\frac{\partial{C}}{\partial{b_j^l}}=\delta_j^l$$
等式四:误差C因权重而改变的关系函数
$$\frac{\partial{C}}{\partial{w_{jk}^l}}=\delta_j^la_k^{l-1}$$
证明: $$\frac{\partial{C}}{\partial{w_{jk}^l}}=\frac{\partial{C}}{\partial{z_j^l}}\frac{\partial{z_j^l}}{\partial{w_{jk}^l}}=\delta_j^la_k^{l-1}$$
由此四公式得出的结论
当$\sigma$为sigmoid函数时,由等式1-4,可以知道在$z$很大或者很小的时候,$\sigma'$趋近于0,所以权重和bias的更新会停滞。这样的神经元状态称为饱和,又因为等式2,所有输入到饱和神经元的权重也都会更新得很缓慢。