LeNet-5 CNN 反向传播过程(back propagation)推导
by ztx
文章目录
说明
本篇博客是学习过程中的笔记,谨慎阅读,欢迎指正。
时间仓促,LeNet-5的具体结构可能会有偏差,具体以论文为准,留坑待填。
另外,csdn的latex公式挂掉了,不知道怎么回事,以代码形式给出式子。
KaTex 多行公式只支持aligned,不支持align = =
前置技能
感知器,数学技巧,脑补能力
MLP-NN BP
MLP-NN(Multilayer perceptron neural network 多层感知器神经网络)
结构
上面是自己画的一张图。
正向传播
过程如上图中左边箭头指示的过程。
y k = f ( ∑ j = 0 H f ( ∑ i = 0 D x i W j i ) W k j ) y_k =f\left( \sum_{j=0}^{H} f\left( \sum_{i=0}^{D}x_iW_{ji} \right) W_{kj} \right) yk=f(j=0∑Hf(i=0∑DxiWji)Wkj)
反向传播
Loss function:L2 distance
E ( W ) = 1 2 ∑ k = 0 c − 1 ( t k − y k ) 2 = 1 2 ∣ ∣ t − y ∣ ∣ 2 E(\mathbf{W}) =\frac{1}{2}\sum_{k=0}^{c-1}(t_k − y_k)^2 =\frac{1}{2}||\mathbf{t} −\mathbf{y}||^2 E(W)=21k=0∑c−1(tk−yk)2=21∣∣t−y∣∣2
Activation function:sigmoid
f ( x ) = 1 1 + e − x f(x) = \frac{1}{1+e^{-x}} f(x)=1+e−x1
Sigmoid Derivative function:
f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x)=f(x)(1-f(x)) f′(x)=f(x)(1−f(x))
隐藏层到输出层的BP如下
∂ E ∂ W k j = ∂ E ∂ y k ∂ y k ∂ n e t k ∂ n e t k ∂ W k j = − ( t k − y k ) f ′ ( n e t k ) y j = δ k y j \begin{aligned} \frac{\partial E}{\partial W_{kj}} &= \frac{\partial E}{\partial y_k}\frac{\partial y_k}{\partial net_{k}} \frac{\partial net_{k}}{\partial W_{kj}} \\ &= -(t_k-y_k)f'(net_k)y_j \\ &= \delta_k y_j \end{aligned} ∂Wkj∂E=∂yk∂E∂netk∂yk∂Wkj∂netk=−(tk−yk)f′(netk)yj=δkyj
其中:
δ k = − ( t k − y k ) f ′ ( n e t k ) = ∂ E ∂ n e t k \delta_k = -(t_k-y_k)f'(net_k) = \frac{\partial E}{\partial net_{k}} δk=−(tk−yk)f′(netk)=∂netk∂E
设学习率为 η \eta η则梯度下降权值更新为:
Δ W k j = η δ k y j \Delta W_{kj} = \eta \delta_k y_j ΔWkj=ηδkyj
输入层到隐藏层的BP如下
∂ E ∂ W j i = ∂ E ∂ y j ∂ y j ∂ n e t j ∂ n e t j ∂ W j i = ∂ ∂ y j ( 1 2 ∑ k = 0 c − 1 ( t k − y k ) 2 ) f ′ ( n e t j ) x i = ( − ∑ k = 0 c − 1 ( t k − y k ) ∂ y k ∂ y j ) f ′ ( n e t j ) x i = ( − ∑ k = 0 c − 1 ( t k − y k ) ∂ y k ∂ n e t k ∂ n e t k ∂ y j ) f ′ ( n e t j ) x i = ( − ∑ k = 0 c − 1 ( t k − y k ) f ′ ( n e t k ) W k j ) f ′ ( n e t j ) x i = ( ∑ k = 0 c − 1 δ k W k j ) f ′ ( n e t j ) x i = δ j x i \begin{aligned} \frac{\partial E}{\partial W_{ji}} &= \frac{\partial E}{\partial y_j} \frac{\partial y_j}{\partial net_{j}} \frac{\partial net_{j}}{\partial W_{ji}} \\ &= \frac{\partial }{\partial y_j} \left( \frac{1}{2}\sum_{k=0}^{c-1}(t_k-y_k)^2 \right) f'(net_j) x_i \\ &= \left( -\sum_{k=0}^{c-1}(t_k-y_k)\frac{\partial y_k}{\partial y_j} \right) f'(net_j) x_i \\ &= \left( -\sum_{k=0}^{c-1}(t_k-y_k)\frac{\partial y_k}{\partial net_k}\frac{\partial net_k}{\partial y_j} \right) f'(net_j) x_i \\ &= \left( -\sum_{k=0}^{c-1}(t_k-y_k)f'(net_k)W_{kj} \right) f'(net_j) x_i \\ &= \left( \sum_{k=0}^{c-1}\delta_k W_{kj} \right) f'(net_j) x_i \\ &= \delta_j x_i \end{aligned} ∂Wji∂E=∂yj∂E∂netj∂yj∂Wji∂netj=∂yj∂(21k=0∑c−1(tk−yk)2)f′(netj)xi=(−k=0∑c−1(tk−yk)∂yj∂yk)f′(netj)xi=(−k=0∑c−1(tk−yk)∂netk∂yk∂yj∂n