松原网站建设哪家专业,谈谈你对seo概念的理解,江西网络推广,wordpress极验验证注册卷积神经网络反向传播算法与训练过程 1、前向传播1.1卷积层前向传播1.2池化层前向传播1.3全连接层前向传播 2、损失函数3、反向传播3.1 已知池化层 δ l \delta^l δl,推导上一层的 δ l − 1 \delta^{l-1} δl−13.2 已知卷积层 δ l \delta^l δl,推导上一层的 δ l − 1 \de… 卷积神经网络反向传播算法与训练过程 1、前向传播1.1卷积层前向传播1.2池化层前向传播1.3全连接层前向传播 2、损失函数3、反向传播3.1 已知池化层 δ l \delta^l δl,推导上一层的 δ l − 1 \delta^{l-1} δl−13.2 已知卷积层 δ l \delta^l δl,推导上一层的 δ l − 1 \delta ^{l-1} δl−13.3 已知卷积层 δ l \delta^l δl推导该层的 W b Wb Wb参数 4、卷积神经网络训练过程总结参考资料 卷积神经网络(CNN)因其接近人类视觉运作的特征提取方法、以及通过权值共享从而减轻计算任务的特点从而制霸计算机视觉领域详细地大家可以通过这篇文章(
主要神经网络结构图解)品一品不同网络结构的特点。 我相信大家尤其是新手入门都看过不少“5min入门CNN”、“一张图搞定CNN”…等等之类的文章虽然这种文章确实能够帮助我们快速理解CNN的特点但是这种“过于轻松”的方式也可能会让我们丢掉许多卷积神经网络实现的细节问题很难对CNN有更加深入的理解。 作为一个鉴定信仰“Math goes first”的人写这篇文章的目的就在于帮助大家怎样用公式表达/推导这样一种更加严谨老派的方式解释CNN训练过程目的就在于1通过这种“辛苦”的脑力劳动帮助大家更加深刻具体的理解数据、结构、参数、损失、函数训练这些要素怎样在一起工作运转起来的2而来也是为了帮助大家以后能够更好地阅读前沿文献不至于看到公式就皱眉头。好了接下来就让我们一起愉快地学习吧 1、前向传播
1.1卷积层前向传播
前向传播公式 z j l ∑ i 1 M a i l − 1 ∗ w i j l b j l , a j l σ ( z j l ) z_j^{l}\sum_{i1}^{M}a_{i}^{l-1} * w_{i j}^{l}b_j^{l},a_j^{l}\sigma\left(z_j^{l}\right) zjli1∑Mail−1∗wijlbjl,ajlσ(zjl) 其中 z j l z_j^l zjl表示总输入通道数为 M M M的节点 a i a_i ai 经第 l l l层神经网络处理后产生的第 j j j个输出节点然后经激活函数 σ \sigma σ激活后也就变成下一层网络的第 j j j个输入通道的特征节点 a j l a_j^l ajl。 注意要点
假设输入节点 i i i的总个数为M输出节点 j j j的总个数为N那么总的卷积核 w i j w_{ij} wij个数就为 M ⋅ N M\cdot N M⋅N;在结构确定的情况下反向传播算法需要更新的就是卷积核的值和偏置;
1.2池化层前向传播
前向传播公式 z j l d o w n ( a j l − 1 ) , a j l σ ( z j l ) z_j^{l} down(a_j^{l-1}),a_j^l \sigma(z_j^l) zjldown(ajl−1),ajlσ(zjl) 其中 z j l z_j^l zjl表示输入节点 a j a_j aj 经第 l l l层池化层后就变成输出节点 z j l z_j^l zjl注意要点 3. 池化操作并改变输出节点或者说特征图个数即输入多少张特征图经池化后输出多少张特征图 4. 池化一般并没有激活函数所以此处可以把激活函数的输出等于输入。
1.3全连接层前向传播
前向传播公式 z j l ∑ i 1 M a i l − 1 ∗ w i j l b j l , a j l σ ( z j l ) z_j^{l}\sum_{i1}^{M} a_{i}^{l-1} * w_{i j}^{l}b_j^{l},a_j^{l}\sigma\left(z_j^{l}\right) zjli1∑Mail−1∗wijlbjl,ajlσ(zjl) 全连接层的公式基本和卷积层一样因为形式上可以把全连接层看成一种卷积核尺寸和输入节点或者特征图尺寸一样的卷积 5. 所以如果输入节点或者特征图的总个数为 M M M输出节点的总个数为 N N N那么总的卷积核个数就为 M ∗ N M*N M∗N 6. 在结构确定的情况下反向传播算法需要更新的就是卷积核的值和偏置。
2、损失函数
假设我们总共有 P P P组数据 { x 0 , y 0 } , { x 1 , y 1 } , . . . , { x P , y P } \{x^0,y^0\},\{x^1,y^1\},...,\{x^P,y^P\} {x0,y0},{x1,y1},...,{xP,yP}其中 p p p表示第 p p p组数据假设卷积神经网络的最后一层 L L L层的输出节点为 a L a^L aL我们处理的是一个多元分类问题比如说判断一张图片中的数字是0~9中哪一个数字那么任意一组训练输出节点就是一个 1 ∗ 10 1*10 1∗10的行向量那么误差函数也就为 J 1 2 ∣ ∣ a L − y ∣ ∣ 2 ∑ k 1 1 0 ( x k − y k ) 2 J \frac{1}{2}||a^L-y||^2 \sum_{k1}^10\left({x_k-y_k}\right)^2 J21∣∣aL−y∣∣2k1∑10(xk−yk)2而总的误差也就应为 ∑ p 0 P J p \sum_{p0}^PJ_p ∑p0PJp,为了方便描述总的误差后面我们仍然用 J J J表示总的误差当然了物产函数有很多种大家根据需要灵活挑选就行啦至此数据变经过层层处理最总形成了我们的目标函数 J J J。 因为我们构造神经网络的目的就是为了找到一种网络结构能够在给定输入的情况下能够让输出和目标想匹配也就是说让 J J J最小想要让 J J J最小那就是说需要找到一组参数使得 ( W , b ) a r g m i n ( J ( w , b , x , y ) ) (W,b) argmin(J(w,b,x,y)) (W,b)argmin(J(w,b,x,y))这里就需要引入梯度下降法来不断更新卷积核权值和偏置 ( W , b ) n 1 ( W , b ) n − r ⋅ g r a d ( J ( W , b ) n ) (W,b)^{n1} (W,b)^{n}-r\cdot grad(J(W,b)^n) (W,b)n1(W,b)n−r⋅grad(J(W,b)n)这里r就是学习速率的意思通过不断调整权重和偏置的权值从而使得 J J J不断减小达到或者符合我们的预期误差值。
3、反向传播
既然我们要求误差对(W,b)的偏导值那么我们首先要明确一下几点内容
我们要首先明白在整个神经网络结构确定的情况下我们需要动态调整的参数主要有:1)卷积层的权重w和偏置2)因为池化层只有一个反向池化操作不存在偏置和激活函数的问题所以我们基本可以说不存在调整参数的问题3)因为从形式上看全连接层可以看成一种特俗结构的卷积神经网络(即卷积核大小和输入的特征节点或者特征图尺寸相同)所以即使假设存在多层的全连接层具体的处理过程参照卷积层推导即可为了确定 ∂ J ( W , b ) ∂ W , ∂ J ( W , b ) ∂ b \frac{\partial J(W,b)}{\partial W},\frac{\partial J(W,b)}{\partial b} ∂W∂J(W,b),∂b∂J(W,b),我们需要引入一个间接量 δ z ∂ J ( W , b ) ∂ z \delta _z \frac{\partial J(W,b)}{\partial z} δz∂z∂J(W,b), δ z \delta _z δz则表示未经激活的加权输出和变化对目标激活函数的影响
那么我们基本就可以明白接下来的任务就主要分为三类1)已知池化层 δ l \delta^l δl,如何推导上一层的 δ l − 1 \delta^{l-1} δl−12)已知卷积层 δ l \delta^l δl,如何推导上一层的 δ l − 1 \delta^{l-1} δl−13)已知卷积层 δ l \delta ^l δl,如何 ∂ J ( W , b ) ∂ W l , ∂ J ( W , b ) ∂ b l \frac{\partial J(W,b)}{\partial W^l}, \frac{\partial J(W,b)}{\partial b^l} ∂Wl∂J(W,b),∂bl∂J(W,b)。
3.1 已知池化层 δ l \delta^l δl,推导上一层的 δ l − 1 \delta^{l-1} δl−1
推导公式: δ j l − 1 u p s a m p l e ( δ j l ) \delta_j^{l-1} upsample(\delta_j^l) δjl−1upsample(δjl) 因为池化层不存在激活函数这一说而常见的池化操作有两种maxpooling和average pooling,所以根据下图就可以很容易理解推导出上一层 δ l − 1 \delta ^{l-1} δl−1的过程假设已知: δ j l ( 2 8 4 6 ) \delta_j^l \left( \begin{array}{ccc} 2 8 \\ 4 6 \end{array} \right) δjl(2486)那么如果池化操作为average pooling则 δ j l − 1 \delta_j^{l-1} δjl−1就为 ( 0.5 0.5 2 2 0.5 0.5 2 2 1 1 1.5 1.5 1 1 1.5 1.5 ) \left( \begin{array}{ccc} 0.50.522 \\ 0.50.522 \\ 111.51.5 \\ 111.51.5 \end{array} \right) ⎝⎜⎜⎛0.50.5110.50.511221.51.5221.51.5⎠⎟⎟⎞,如果池化操作为max pooling,则 δ j l − 1 \delta_j^{l-1} δjl−1就为 ( 2 0 0 0 0 0 0 8 0 4 0 0 0 0 6 0 ) \left( \begin{array}{ccc} 2000 \\ 00 08 \\ 0400 \\ 0060 \end{array} \right) ⎝⎜⎜⎛2000004000060800⎠⎟⎟⎞
3.2 已知卷积层 δ l \delta^l δl,推导上一层的 δ l − 1 \delta ^{l-1} δl−1
推导公式 δ i l − 1 ∂ J ( W , b ) ∂ z l − 1 δ j l ( ∂ z j l ∂ z i l − 1 ) δ j l ∗ r o t 180 ( W i j l ) ⊙ σ ′ ( z i l − 1 ) \delta_i^{l-1} \frac{\partial J(W,b)}{\partial z^{l-1}} \delta_j^{l}(\frac{\partial z_j^{l}}{\partial z_i^{l-1}}) \delta_j ^{l}*rot180(W_{ij}^{l}) \odot \sigma^{}(z_i^{l-1}) δil−1∂zl−1∂J(W,b)δjl(∂zil−1∂zjl)δjl∗rot180(Wijl)⊙σ′(zil−1)这一步的推导很难也很抽象尤其是像 r o t 180 rot180 rot180这种操作不过大家不要慌怎么推导的我会给大家解释的清清楚楚在次之前首先要明确几点概念和问题
上式中的 ∗ * ∗代表卷积 ⊙ \odot ⊙代表的是矩阵的点积的意思接下来的描述很重要很重要很重要希望大家认真品一品我们的任务是什么就是已知误差函数J对卷积层输出z的偏导(或者说J对卷积层输出矩阵 z l z^{l} zl中任一元素)的情况下怎样获得函数J对上一层未激活输出 z l z^{l} zl的偏导 J J J是标量而 z , z l − 1 z,z^{l-1} z,zl−1是矩阵标量对矩阵求偏导很好表示无非就是标量对矩阵每一个元素求导那矩阵对矩阵求导呢就比如上式中 ∂ z j l ∂ z i l − 1 \frac{\partial z_j^{l}}{\partial z_i^{l-1}} ∂zil−1∂zjl是一个矩阵对矩阵求导的过程该怎么处理呢答案是 ∂ z j l ∂ z i l − 1 \frac{\partial z_j^{l}}{\partial z_i^{l-1}} ∂zil−1∂zjl只是一个表示方法严格来讲这种写法是不准确的并不能直接用来使用推导公式那上面公式最右端的式子是怎么推导出来的在上式中注意 δ i l − 1 \delta_i^{l-1} δil−1的下标和 δ j l \delta_j^{l} δjl的下标是不一样的这个该怎么处理
好的接下来我会慢慢分析来帮助大家理解上面内容或问题首先先回顾一下链式求导法则对于函数 h ( x ) f ( g ( x ) ) 则 h ′ ( x ) f ′ ( g ( x ) ) g ′ ( x ) h(x)f(g(x))则h(x)f(g(x))g(x) h(x)f(g(x))则h′(x)f′(g(x))g′(x)那么假设第 l − 1 l-1 l−1层的输出 a l − 1 a^{l-1} al−1是一个3x3矩阵第 l l l层的卷积核是一个一个2x2矩阵那么偏置为 b l b^l bl则有 a l − 1 ∗ W l b l z l a^{l-1}*W^l b^l z^{l} al−1∗Wlblzl,如下 ( a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ) ∗ ( W 11 W 12 W 21 W 22 ) ( b 11 b 12 b 21 b 22 ) ( Z 11 Z 12 2 21 Z 22 ) \left(\begin{array}{lll} a_{11} a_{12} a_{13} \\ a_{21} a_{22} a_{23} \\ a_{31} a_{32} a_{33} \end{array}\right) *\left(\begin{array}{cc} W_{11} W_{12} \\ W_{21} W_{22} \end{array}\right)\left(\begin{array}{ll} b_{11} b_{12} \\ b_{21} b_{22} \end{array}\right)\left(\begin{array}{cc} Z_{11} Z_{12} \\ 2_{21} Z_{22} \end{array}\right) ⎝⎛a11a21a31a12a22a32a13a23a33⎠⎞∗(W11W21W12W22)(b11b21b12b22)(Z11221Z12Z22)而且 z 11 a 11 w 11 a 12 w 12 a 21 w 21 a 22 w 22 b 11 z_{11} a_{11}w_{11} a_{12}w_{12} a_{21}w_{21} a_{22}w_{22} b_{11} z11a11w11a12w12a21w21a22w22b11 z 12 a 12 w 11 a 13 w 12 a 22 w 21 a 23 w 22 b 12 z_{12} a_{12}w_{11} a_{13}w_{12} a_{22}w_{21} a_{23}w_{22} b_{12} z12a12w11a13w12a22w21a23w22b12 z 21 a 21 w 11 a 22 w 12 a 31 w 21 a 32 w 22 b 21 z_{21} a_{21}w_{11} a_{22}w_{12} a_{31}w_{21} a_{32}w_{22} b_{21} z21a21w11a22w12a31w21a32w22b21 z 22 a 22 w 11 a 23 w 12 a 32 w 21 a 33 w 22 b 22 z_{22} a_{22}w_{11} a_{23}w_{12} a_{32}w_{21} a_{33}w_{22} b_{22} z22a22w11a23w12a32w21a33w22b22那我们现在已经都知道 δ l \delta_l δl,即 ∂ J ∂ z 11 l , ∂ J ∂ z 12 l , ∂ J ∂ z 21 l , ∂ J ∂ z 22 l \frac{\partial J}{\partial z_{11}^{l}},\frac{\partial J}{\partial z_{12}^{l}},\frac{\partial J}{\partial z_{21}^{l}},\frac{\partial J}{\partial z_{22}^{l}} ∂z11l∂J,∂z12l∂J,∂z21l∂J,∂z22l∂J也已知那要求 ∂ J ∂ a 11 l , ∂ J ∂ a 12 l , ∂ J ∂ a 13 l . . . . . \frac{\partial J}{\partial a_{11}^{l}},\frac{\partial J}{\partial a_{12}^{l}},\frac{\partial J}{\partial a_{13}^{l}}..... ∂a11l∂J,∂a12l∂J,∂a13l∂J.....,那根据链式求导法则就需要看 a 11 , a 12 , a 13 . . . a_{11},a_{12},a_{13}... a11,a12,a13...和 z 11 , z 12 , z 21 . . . z_{11},z_{12},z_{21}... z11,z12,z21...之间的关系了首先根据上面的一列式子我们发现和 a 11 a_{11} a11相关的只有 z 11 z_{11} z11一项和 a 12 a_{12} a12相关的却有 z 11 , z 12 z_{11},z_{12} z11,z12两项和 a 13 a_{13} a13相关的有 z 12 z_{12} z12一项因此推导下来我们可以得到以下式子 ∂ J ( w , b ) ∂ a 11 1 − 1 ∂ J ( w , b ) ∂ z 11 2 w 11 δ 11 w 11 ∂ J ( w , b ) ∂ a 12 ∂ J ( w , b ) ∂ z 11 w 12 ∂ J ( w , b ) ∂ z 12 w 11 δ 11 w 12 δ 12 w 11 ∂ J ( W , b ) ∂ a 13 ∂ J ( w , b ) ∂ z 12 w 12 δ 12 w 12 ∂ J ( W , b ) ∂ a 21 ∂ J ( w ⋅ b ) ∂ z 11 w 21 ∂ J ( w 1 b ) d z 21 w 11 δ 11 w 21 δ 21 w 11 ∂ J ( w , b ) d a 22 ∂ J ( w , b ) ∂ z 11 w 22 ∂ J ( w , b ) ∂ z 12 w 21 ∂ J ( w , b ) ∂ z 21 w 12 ∂ J ( w , b ) ∂ z 22 w 11 ∂ J ( w , b ) ∂ a 23 ∂ J ( w , b ) ∂ z 12 w 22 ∂ J ( w , b ) ∂ z 22 w 12 δ 12 w 22 δ 22 w 12 ∂ J ( w , b ) ∂ a 31 ∂ J ( w , b ) ∂ z 21 w 21 δ 21 w 21 ∂ J ( w 1 b ) ∂ a 32 ∂ J ( w , b ) ∂ z 21 w 22 ∂ J ( w , b ) ∂ z 22 W 21 δ 21 w 22 δ 22 w 21 ∂ J ( w , b ) ∂ a 33 ∂ J ( w , b ) ∂ z 22 W 22 δ 22 ⋅ w 22 \begin{aligned} \frac{\partial J(w, b)}{\partial a_{11}^{1-1}}\frac{\partial J(w, b)}{\partial z_{11}^{2}} w_{11}\delta_{11} w_{11}\\ \frac{\partial J(w, b)}{\partial a_{12}}\frac{\partial J(w, b)}{\partial z_{11}} w_{12}\frac{\partial J(w, b)}{\partial z_{12}} w_{11}\delta_{11} w_{12}\delta_{12} w_{11}\\ \frac{\partial J(W, b)}{\partial a_{13}}\frac{\partial J(w, b)}{\partial z_{12}} w_{12}\delta_{12} w_{12}\\ \frac{\partial J(W, b)}{\partial a_{21}}\frac{\partial J(w \cdot b)}{\partial z_{11}} w_{21}\frac{\partial J\left(w_{1} b\right)}{d z_{21}} w_{11}\delta_{11} w_{21}\delta_{21} w_{11}\\ \frac{\partial J(w, b)}{d a_{22}}\frac{\partial J(w, b)}{\partial z_{11}} w_{22}\frac{\partial J(w, b)}{\partial z_{12}} w_{21}\frac{\partial J(w, b)}{\partial z_{21}} w_{12}\frac{\partial J(w, b)}{\partial z_{22}} w_{11}\\ \frac{\partial J(w, b)}{\partial a_{23} }\frac{\partial J(w, b)}{\partial z_{12}} w_{22}\frac{\partial J(w, b)}{\partial z_{22}} w_{12} \delta_{12} w_{22} \delta_{22} w_{12}\\ \frac{\partial J(w, b)}{\partial a_{31}}\frac{\partial J(w, b)}{\partial z_{21}} w_{21} \delta_{21} w_{21}\\ \frac{\partial J\left(w_{1} b\right)}{\partial a_{32}}\frac{\partial J(w, b)}{\partial z_{21}} w_{22}\frac{\partial J(w, b)}{\partial z_{22}} W_{21}\delta_{21} w_{22} \delta_{22} w_{21} \\ \frac{\partial J(w, b)}{\partial a_{33}}\frac{\partial J(w, b)}{\partial z_{22}} W_{22}\delta_{22} \cdot w_{22} \end{aligned} ∂a111−1∂J(w,b)∂z112∂J(w,b)w11δ11w11∂a12∂J(w,b)∂z11∂J(w,b)w12∂z12∂J(w,b)w11δ11w12δ12w11∂a13∂J(W,b)∂z12∂J(w,b)w12δ12w12∂a21∂J(W,b)∂z11∂J(w⋅b)w21dz21∂J(w1b)w11δ11w21δ21w11da22∂J(w,b)∂z11∂J(w,b)w22∂z12∂J(w,b)w21∂z21∂J(w,b)w12∂z22∂J(w,b)w11∂a23∂J(w,b)∂z12∂J(w,b)w22∂z22∂J(w,b)w12δ12w22δ22w12∂a31∂J(w,b)∂z21∂J(w,b)w21δ21w21∂a32∂J(w1b)∂z21∂J(w,b)w22∂z22∂J(w,b)W21δ21w22δ22w21∂a33∂J(w,b)∂z22∂J(w,b)W22δ22⋅w22 将上面九个式子整理以后我们可以用下面这个卷积的形式表达 ( ∂ J ∂ a 11 ∂ J ∂ a 12 ∂ J ∂ a 13 ∂ J ∂ a 21 ∂ J ∂ a 22 ∂ J ∂ a 23 ∂ J ∂ a 31 ∂ J ∂ a 32 ∂ J ∂ a 33 ) ( 0 0 0 0 0 δ 11 δ 12 0 0 δ 21 δ 22 0 0 0 0 0 ) ∗ ( w 22 w 21 w 12 w 11 ) \begin{array}{c} \left(\begin{array}{ccc} \frac{\partial J}{\partial a_{11}} \frac{\partial J}{\partial a_{12}} \frac{\partial J}{\partial a_{13}} \\ \frac{\partial J}{\partial a_{21}} \frac{\partial J}{\partial a_{22}} \frac{\partial J}{\partial a_{23}} \\ \frac{\partial J}{\partial a_{31}} \frac{\partial J}{\partial a_{32}} \frac{\partial J}{\partial a_{33}} \end{array}\right)\left(\begin{array}{cccc} 0 0 0 0 \\ 0 \delta_{11} \delta_{12} 0 \\ 0 \delta_{21} \delta_{22} 0 \\ 0 0 0 0 \end{array}\right) *\left(\begin{array}{cc} w_{22} w_{21} \\ w_{12} w_{11} \end{array}\right) \end{array} ⎝⎛∂a11∂J∂a21∂J∂a31∂J∂a12∂J∂a22∂J∂a32∂J∂a13∂J∂a23∂J∂a33∂J⎠⎞⎝⎜⎜⎛00000δ11δ2100δ12δ2200000⎠⎟⎟⎞∗(w22w12w21w11)这也就解释了卷积核反转180的原因除此之外对于任意的 l l l层卷积层输出节点或者说特征图 z j z_{j} zj其对应的 l − 1 l-1 l−1层输出 a l − 1 a^{l-1} al−1肯定有不止有一个节点但是对于任一节点 a i l − 1 a_i^{l-1} ail−1,都可以用如下公式表示 ∂ J ( W , b ) ∂ a i l − 1 ∂ J ( W , b ) ∂ z j l ∗ r o t 180 ( W i j l ) \frac{\partial J(W,b)}{\partial a_i^{l-1}} \frac{\partial J(W,b)}{\partial z_j^{l}}*rot180(W_{ij}^{l}) ∂ail−1∂J(W,b)∂zjl∂J(W,b)∗rot180(Wijl)进一步推导 ∂ J ( W , b ) ∂ z i l − 1 ∂ J ( W , b ) ∂ a i l − 1 ⊙ σ ′ ( z i l − 1 ) ∂ J ( W , b ) ∂ z j l ∗ r o t 180 ( W i j l ) ⊙ σ ′ ( z i l − 1 ) \frac{\partial J(W,b)}{\partial z_i^{l-1}} \frac{\partial J(W,b)}{\partial a_i^{l-1}} \odot \sigma^{}(z_i^{l-1}) \frac{\partial J(W,b)}{\partial z_j^{l}}*rot180(W_{ij}^{l}) \odot \sigma^{}(z_i^{l-1}) ∂zil−1∂J(W,b)∂ail−1∂J(W,b)⊙σ′(zil−1)∂zjl∂J(W,b)∗rot180(Wijl)⊙σ′(zil−1)
3.3 已知卷积层 δ l \delta^l δl推导该层的 W b Wb Wb参数
因为池化层并不存在参数问题而形式上全连接层可以理解成一种结构较为特殊的卷积层或者参照深度神经网络反向传播算法的推导过程DNN反向传播算法所以我们比较关系但也是最重要的参数求导过程就是卷积层权重和偏置的求导过程。推导公式如下 ∂ J ( W , b ) ∂ W l a l − 1 ∗ δ l \frac{\partial J(W,b)}{\partial W^{l}}a^{l-1} *\delta^l ∂Wl∂J(W,b)al−1∗δl ∂ J ( W , b ) ∂ b l ∑ u , v ( δ l ) u , v \frac{\partial J(W,b)}{\partial b^{l}} \sum\limits_{u,v}(\delta^l)_{u,v} ∂bl∂J(W,b)u,v∑(δl)u,v同样参照链式求导法则假设第 l − 1 l-1 l−1层的输出 a l − 1 a^{l-1} al−1是一个3x3矩阵第 l l l层的卷积核是一个一个2x2矩阵那么偏置为 b l b^l bl则有 a l − 1 ∗ W l b l z l a^{l-1}*W^l b^l z^{l} al−1∗Wlblzl同样用矩阵表达的话 ( a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ) ∗ ( W 11 W 12 W 21 W 22 ) ( b 11 b 12 b 21 b 22 ) ( Z 11 Z 12 2 21 Z 22 ) \left(\begin{array}{lll} a_{11} a_{12} a_{13} \\ a_{21} a_{22} a_{23} \\ a_{31} a_{32} a_{33} \end{array}\right) *\left(\begin{array}{cc} W_{11} W_{12} \\ W_{21} W_{22} \end{array}\right)\left(\begin{array}{ll} b_{11} b_{12} \\ b_{21} b_{22} \end{array}\right)\left(\begin{array}{cc} Z_{11} Z_{12} \\ 2_{21} Z_{22} \end{array}\right) ⎝⎛a11a21a31a12a22a32a13a23a33⎠⎞∗(W11W21W12W22)(b11b21b12b22)(Z11221Z12Z22) z 11 a 11 w 11 a 12 w 12 a 21 w 21 a 22 w 22 b 11 z_{11} a_{11}w_{11} a_{12}w_{12} a_{21}w_{21} a_{22}w_{22} b_{11} z11a11w11a12w12a21w21a22w22b11 z 12 a 12 w 11 a 13 w 12 a 22 w 21 a 23 w 22 b 12 z_{12} a_{12}w_{11} a_{13}w_{12} a_{22}w_{21} a_{23}w_{22} b_{12} z12a12w11a13w12a22w21a23w22b12 z 21 a 21 w 11 a 22 w 12 a 31 w 21 a 32 w 22 b 21 z_{21} a_{21}w_{11} a_{22}w_{12} a_{31}w_{21} a_{32}w_{22} b_{21} z21a21w11a22w12a31w21a32w22b21 z 22 a 22 w 11 a 23 w 12 a 32 w 21 a 33 w 22 b 22 z_{22} a_{22}w_{11} a_{23}w_{12} a_{32}w_{21} a_{33}w_{22} b_{22} z22a22w11a23w12a32w21a33w22b22 那我们根据链式求导法则很容易得出以下的式子 ∂ J ( W , b ) ∂ W 11 ∂ J ( W , b ) ∂ z 11 ⋅ ∂ z 11 ∂ W 11 ∂ J ( W , b ) ∂ z 12 ⋅ ∂ z 12 ∂ W 11 ∂ J ( W , b ) ∂ z 21 ⋅ ∂ z 21 ∂ W 11 ∂ J ( W , b ) ∂ z 22 ⋅ ∂ z 22 ∂ W 11 a 11 δ 11 a 12 δ 12 a 21 δ 21 a 22 δ 22 \frac{\partial J(W,b)}{\partial W_{11}}\frac{\partial J(W,b)}{\partial z_{11}} \cdot \frac{\partial z_{11}}{\partial W_{11}}\frac{\partial J(W,b)}{\partial z_{12}} \cdot \frac{\partial z_{12}}{\partial W_{11}}\frac{\partial J(W,b)}{\partial z_{21}} \cdot \frac{\partial z_{21}}{\partial W_{11}}\frac{\partial J(W,b)}{\partial z_{22}} \cdot \frac{\partial z_{22}}{\partial W_{11}} \\\ a_{11}\delta_{11} a_{12}\delta_{12} a_{21}\delta_{21} a_{22}\delta_{22} ∂W11∂J(W,b)∂z11∂J(W,b)⋅∂W11∂z11∂z12∂J(W,b)⋅∂W11∂z12∂z21∂J(W,b)⋅∂W11∂z21∂z22∂J(W,b)⋅∂W11∂z22 a11δ11a12δ12a21δ21a22δ22同理可得 ∂ J ( W , b ) ∂ W 12 l a 12 δ 11 a 13 δ 12 a 22 δ 21 a 23 δ 22 ∂ J ( W , b ) ∂ W 13 l a 13 δ 11 a 14 δ 12 a 23 δ 21 a 24 δ 22 ∂ J ( W , b ) ∂ W 21 l a 21 δ 11 a 22 δ 12 a 31 δ 21 a 32 δ 22 \\\frac{\partial J(W,b)}{\partial W_{12}^{l}} a_{12}\delta_{11} a_{13}\delta_{12} a_{22}\delta_{21} a_{23}\delta_{22} \\\frac{\partial J(W,b)}{\partial W_{13}^{l}} a_{13}\delta_{11} a_{14}\delta_{12} a_{23}\delta_{21} a_{24}\delta_{22} \\\frac{\partial J(W,b)}{\partial W_{21}^{l}} a_{21}\delta_{11} a_{22}\delta_{12} a_{31}\delta_{21} a_{32}\delta_{22} ∂W12l∂J(W,b)a12δ11a13δ12a22δ21a23δ22∂W13l∂J(W,b)a13δ11a14δ12a23δ21a24δ22∂W21l∂J(W,b)a21δ11a22δ12a31δ21a32δ22,进一步整理 ∂ J ( W , b ) ∂ W l ( a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44 ) ∗ ( δ 11 δ 12 δ 21 δ 22 ) a l − 1 ∗ δ l \frac{\partial J(W,b)}{\partial W^{l}} \left( \begin{array}{ccc} a_{11}a_{12}a_{13}a_{14} \\ a_{21}a_{22}a_{23}a_{24} \\ a_{31}a_{32}a_{33}a_{34} \\ a_{41}a_{42}a_{43}a_{44} \end{array} \right) * \left( \begin{array}{ccc} \delta_{11} \delta_{12} \\ \delta_{21}\delta_{22} \end{array} \right) a^{l-1} * \delta ^l ∂Wl∂J(W,b)⎝⎜⎜⎛a11a21a31a41a12a22a32a42a13a23a33a43a14a24a34a44⎠⎟⎟⎞∗(δ11δ21δ12δ22)al−1∗δl 相对而言 ∂ J ( W , b ) ∂ b l \frac {\partial J(W,b)}{\partial b^l} ∂bl∂J(W,b)就比较好处理了 ∂ J ( W , b ) ∂ b l δ l \frac {\partial J(W,b)}{\partial b^l} \delta^l ∂bl∂J(W,b)δl至此有关反向传播的所有环节就已经结束了。
4、卷积神经网络训练过程总结
在整个神经网络架构已经清晰明确且训练数据确定的情况下我们就可以编写代码来训练我们的神经网络了步骤如下
初始化网络中所有权值 W W W和偏置参数 b b b利用前向传播算法计算最后一层输出 a L a^L aL使用softmax对输出处理并计算损失函数 J J J;根据反向传播算法计算损失函数 J J J对各项权重或者偏置的偏导 ∂ J ∂ ( W , b ) \frac{\partial J}{\partial {(W,b)}} ∂(W,b)∂J利用梯度下降流更新权重和偏置 ( W , b ) i 1 ( W , b ) i − r ⋅ ∂ J ∂ ( W , b ) {(W,b)} ^{i1} {(W,b)}^i - r \cdot {\frac{\partial J}{\partial {(W,b)}}} (W,b)i1(W,b)i−r⋅∂(W,b)∂J返回至步骤2直至损失函数小于我们的预设值
参考资料
1、卷积神经网络(CNN)反向传播算法 2、卷积神经网络的训练方法