神经网络与深度学习(Michael Nielsen)\text{(Michael Nielsen)}(Michael Nielsen)笔记(二)
误差反向传播算法
首先定义神经网络中的一些重要参数
wjklw^{l}_{jk}wjkl:表示从(l−1)th(l-1)^{\mathrm{th}}(l−1)th层的第kthk^{\mathrm{th}}kth个神经元到 lthl^{\mathrm{th}}lth层的第jthj^{\mathrm{th}}jth个神经元的连接权重,如下图所示

bjlb_{j}^{l}bjl:表示在lthl^{\mathrm{th}}lth层第jthj^{\mathrm{th}}jth个神经元的偏置
ajla_{j}^{l}ajl:表示lthl^{\mathrm{th}}lth层第jthj^{\mathrm{th}}jth个神经元的激活值,如下图所示:

lthl^{\mathrm{th}}lth 层第jthj^{\mathrm{th}}jth个神经元的激活值ajla_{j}^{l}ajl和(l−1)th(l-1)^{\mathrm{th}}(l−1)th层的激活值通过下面方程关联起来ajl=σ(∑kwjklakl−1+bjl)a_{j}^{l}=\sigma\left(\sum_{k} w_{j k}^{l} a_{k}^{l-1}+b_{j}^{l}\right)ajl=σ(k∑wjklakl−1+bjl)其中求和是在(l−1)th(l-1)^{\mathrm{th}}(l−1)th层的所有kkk个神经元上进行的.
定义权重矩阵wlw^lwl ,第jthj^{\mathrm{th}}jth行第kthk^{\mathrm{th}}kth列的元素就是wjklw_{j k}^{l}wjkl ,对每一层定义一个偏置向量,则lthl^{\mathrm{th}}lth层的偏置向量为blb^lbl激活向量定义为ala^lal,其元素为激活值ajla_{j}^{l}ajl,于是上式的向量形式可写成:al=σ(wlal−1+bl)a^{l}=\sigma\left(w^{l} a^{l-1}+b^{l}\right)al=σ(wlal−1+bl)令中间量zl≡wlal−1+blz^{l} \equiv w^{l} a^{l-1}+b^{l}zl≡wlal−1+bl ,称zlz^lzl为lll层神经元的带权输入,上式也写成al=σ(zl)a^{l}=\sigma\left(z^{l}\right)al=σ(zl)的形式,zlz^lzl的每个元素是zjl=∑kwjklakl−1+bjlz_{j}^{l}=\sum_{k} w_{j k}^{l} a_{k}^{l-1}+b_{j}^{l}zjl=∑kwjklakl−1+bjl ,zjlz_j^lzjl是第lll层第jjj个神经元的激活函数的带权输入
二次代价函数:C=12n∑x∥y(x)−aL(x)∥2C=\frac{1}{2 n} \sum_{x}\left\|y(x)-a^{L}(x)\right\|^{2}C=2n1∑x∥∥y(x)−aL(x)∥∥2 ,LLL表示网络的层数
Hahamard\boldsymbol{\text{Hahamard}}Hahamard乘积s⊙ts \odot ts⊙t 表示按元素乘积,如:[12]⊙[34]=[1∗32∗4]=[38]\left[\begin{array}{l}{1} \\ {2}\end{array}\right] \odot\left[\begin{array}{l}{3} \\ {4}\end{array}\right]=\left[\begin{array}{l}{1 * 3} \\ {2 * 4}\end{array}\right]=\left[\begin{array}{l}{3} \\ {8}\end{array}\right][12]⊙[34]=[1∗32∗4]=[38]
反向传播的四个方程
为了计算偏导数∂C∂wjkl\frac{\partial C }{ \partial w_{j k}^{l}}∂wjkl∂C,∂C∂jl\frac{\partial C }{ \partial _{j}^{l}}∂jl∂C,首先引入一个中间量,δjl\delta_{j}^{l}δjl,我们称为在lthl^{\mathrm{th}}l