前向与反向传播推导

本文详细介绍了三层神经网络的前向传播和反向传播过程。前向传播通过矩阵运算计算网络输出,反向传播则利用误差反向传播原则更新权重,以减少均方误差。在此过程中,利用链式法则计算每个权重的梯度,并使用随机梯度下降法更新权重。
摘要由CSDN通过智能技术生成

本文简单地以下图所示的三层神经网络为例(没有偏置节点),介绍神经网络的前向和反向传播过程:

image-20210430082958148

图中参数含义如下:

X 1 , X 2 X_1,X_2 X1,X2:网络输入参数。

W X 1 1 , W X 1 2 , W X 1 3 , W X 2 1 , W X 2 2 , W X 2 3 W_{X_11}, W_{X_12}, W_{X_13}, W_{X_21}, W_{X_22}, W_{X_23} WX11,WX12,WX13,WX21,WX22,WX23:输入层权重参数。

H 1 , H 2 , H 3 H_1, H_2, H_3 H1,H2,H3:隐含层对输入参数的线性响应。

Y 1 , Y 2 , Y 3 Y_1, Y_2, Y_3 Y1,Y2,Y3:经过非线性激活的隐层输出。

W Y 1 1 , W Y 1 2 , W Y 2 1 , W Y 2 2 , W Y 3 1 , W Y 3 2 W_{Y_11}, W_{Y_12}, W_{Y_21}, W_{Y_22}, W_{Y_31}, W_{Y_32} WY11,WY12,WY21,WY22,WY31,WY32:输出层权重参数。

R 1 , R 2 R_1, R_2 R1,R2:输出层对隐层的线性响应。

O 1 , O 2 O_1, O_2 O1,O2:经过非线性激活的网络输出。

前向传播

前向传播计算相对简单,按照如下公式逐步计算即可:
在这里插入图片描述

注:上式中的 s i g m o i d sigmoid sigmoid为激活函数,本文假设全部使用 s i g m o i d sigmoid sigmoid作为激活函数。

为了更加直观,同时方便计算,我们用矩阵表示上述过程:
在这里插入图片描述

反向传播

误差及其反向传播

  • 误差的衡量:本文选取 M S E MSE MSE(均方误差)来衡量网络误差:
    在这里插入图片描述

  • 误差的反向传播:误差的反向传播遵循按权重分配原则,因此, E O 1 , E O 2 E_{O_1},E_{O_2} EO1,EO2误差全部分别由 R 1 , R 2 R_1, R_2 R1,R2产生,即 E O 1 E_{O_1} EO1也是神经元 F F F的误差。各神经元的误差计算如下:
    在这里插入图片描述

    E X 1 E_{X_1} EX1 E X 2 E_{X_2} EX2的计算和上述方法相同,这里不再赘述。
    上述计算过程用矩阵表示为:
    在这里插入图片描述

    上述计算较为繁琐,可以在不破坏权重比例的情况下,将其简化为如下形式:
    在这里插入图片描述

    可以发现,上述权重矩阵,就是前向传播时权重矩阵的转置,即反向误差传播形式如下:

E = W T × E E = W^T\times{E} E=WT×E

反向权重更新

  • 链式求导

    由前向传播的计算式和上面的误差计算式 ( 1 ) , ( 2 ) , ( 3 ) (1), (2), (3) (1),(2),(3)可得:
    在这里插入图片描述

    依次类推,可以计算 E O E_O EO对所有权重 W W W的偏导。

  • 权重更新

    从链式求导过程可以看到,求导过程中,大量计算是重复的,因此,在更新 W Y 1 1 W_{Y_11} WY11 W X 1 1 W_{X_11} WX11的过程中,可以将重复计算进行折叠,只计算一次,简化后如下:
    在这里插入图片描述
    其中 σ ′ \sigma{'} σ是当前神经元的输出对输入的偏导(梯度)。按照上述过程,可以逐层计算出误差对各个权重 W W W的偏导。上述过程在《神经网络与深度学习》中总结为反向传播4大公式:
    image-20210506164547432
    图中符号含义如下:
    image-20210506164621338
    最后是权重更新,权重更新首先需要选择一个更新算法,这里简单使用随机梯度下降法(SGD)。将上述偏导代入SGD得到:

W Y 1 1 = W Y 1 1 − η ∂ E O ∂ W Y 1 1 = W Y 1 1 − η ∇ O 1 E O ⊙ σ ′ ( R 1 ) ∗ Y 1 W X 1 1 = W X 1 1 − η ∂ E O ∂ W X 1 1 = W X 1 1 − η ( ( W Y 1 1 ) T δ F 1 ) ⊙ σ ′ ( H 1 ) ∗ X 1 \begin{aligned} & W_{Y_11} = W_{Y_11} - \eta \frac{\partial E_O}{\partial W_{Y_11}} = W_{Y_11} - \eta \nabla{_{O_1}E_O}\odot \sigma{'(R_1)}*Y_1\\ & W_{X_11} = W_{X_11} - \eta \frac{\partial E_O}{\partial W_{X_11}} = W_{X_11} - \eta ((W_{Y_11})^T\delta{_{F_{1}}})\odot \sigma{'(H_1)}*X_1 \end{aligned} WY11=WY11ηWY11EO=WY11ηO1EOσ(R1)Y1WX11=WX11ηWX11EO=WX11η((WY11)TδF1)σ(H1)X1

参考

[1] 张小磊啊.《一文搞懂反向传播算法》[DB/OL].

[2] aift.《“反向传播算法”过程及公式推导(超直观好懂的Backpropagation)》[DB/OL]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值