正向传播和反向传播数学推导

正向传播和反向传播数学推导

这里我们使用两个输入、1个隐含层(两个神经元)、两个输出,其中隐含层和输出层都有偏置,结构如下:
包含1个隐藏层的神经网络
x表示输入,w为权重系数,z为隐藏层神经元的输入,a为隐藏层神经元的输出,output即为最终的输出,b为偏置。
注意,x1,x2表示一个样本的两个特征,而不是两个样本,也就是说每个样本都要独自走一遍上述的网络。

有的时候输出层后面还会加一个激活函数,就是下面这个样子:
在这里插入图片描述
中间的竖线即为激活函数。本文为了简化讲解过程,本文假设输出层后面 不加激活函数。

正向传播

(1)输入层–>隐藏层:
z = w x + b 1 z = wx+b1 z=wx+b1
其中 z 、 z、 z w 、 w、 w x x x均为向量(知识点:线性代数矩阵乘法)。
(2)隐藏层:
隐藏层神经元内的竖线可以理解为激活函数,激活函数有很多种,常见的有ReLU函数、Leaky-ReLU函数等,我们用 f f f来表示,
a = f ( z ) a=f(z) a=f(z) a a a z z z均为向量。
(3)隐藏层到输出层:
o u t p u t = w a + b 2 output = wa+b2 output=wa+b2
注意,这里的矩阵 w w w和前面的矩阵 w w w值是不一样的

(4)计算损失函数
损失函数有很多种,这里我们以常见的绝对值损失函数为例,绝对值损失函数是计算预测值与目标值的差的绝对值:
E ( Y , o u t p u t ) = ∣ Y − o u t p u t ∣ E(Y,output) = |Y-output| E(Y,output)=Youtput
output为样本预测值,Y为样本标签(即样本实际值),因为本文的神经网络有两个输出,所以损失函数可表示为:
E ( Y , o u t p u t ) = ∣ y 1 − o u t p u t 1 ∣ + ∣ y 2 − o u t p u t 2 ∣ E(Y,output)=|y1-output1|+|y2-output2| E(Y,output)=y1output1∣+y2output2∣
注意,此时计算的L是单一样本对应的损失值。
注意,每一个样本都有一个自己的损失值,计算 总损失函数时要将每个样本的损失函数值求和。

至此,正向传播的过程已经完毕。

反向传播(单一样本的反向传播过程)

反向传播是根据链式求导法则对参数( w w w b b b)进行更新。假设计算的某单一样本损失函数为E
(1)我们以w5的更新为例:
观察由w5计算到E的过程 (观察网络中的线的走向):(w5)–>(output1)–>E
所以总损失函数E对w5的链式求导即为:
∂ E ∂ w 5 = ∂ E ∂ o u t p u t 1 ⋅ ∂ o u t p u t 1 ∂ w 5 \frac{\partial E}{\partial w5}=\frac{\partial E}{\partial output1} \cdot \frac{\partial output1}{\partial w5} w5E=output1Ew5output1
有了这个损失函数E对w5的偏导值后,就可以更新w5了:
w 5 ∗ = w 5 − η ⋅ ∂ E ∂ w 5 w5^{*}=w5-\eta \cdot \frac{\partial E}{\partial w5} w5=w5ηw5E
同理,也可以对w6,w7,w8求偏导进行更新了。
(2)下面我们再以w1的更新为例:
观察由w1计算到E的过程 (观察网络中的线的走向),一共有两条路:(w1)–>(z1)–>(a1)–>(w5)–>(output1)–>E,
另外一条路:(w1)–>(z1)–>(a1)–>(w6)–>(output2)–>E,所以由链式求导法则:
∂ E ∂ w 1 = ∂ E ∂ o u t p u t 1 ∂ o u t p u t 1 ∂ w 5 ∂ w 5 ∂ a 1 ∂ a 1 ∂ z 1 ∂ z 1 ∂ w 1 + ∂ E ∂ o u t p u t 2 ∂ o u t p u t 2 ∂ w 6 ∂ w 6 ∂ a 1 ∂ a 1 ∂ z 1 ∂ z 1 ∂ w 1 \frac{\partial E}{\partial w1}=\frac{\partial E}{\partial output1}\frac{\partial output1}{\partial w5}\frac{\partial w5}{\partial a1}\frac{\partial a1}{\partial z1}\frac{\partial z1}{\partial w1}+\frac{\partial E}{\partial output2}\frac{\partial output2}{\partial w6}\frac{\partial w6}{\partial a1}\frac{\partial a1}{\partial z1}\frac{\partial z1}{\partial w1} w1E=output1Ew5output1a1w5z1a1w1z1+output2Ew6output2a1w6z1a1w1z1
然后更新w1:
w 1 ∗ = w 1 − η ⋅ ∂ E ∂ w 1 w1^{*}=w1-\eta\cdot \frac{\partial E}{\partial w1} w1=w1ηw1E
η \eta η为学习率。
同理,可以对w2,w3,w4求偏导进行更新。

总结:反向求导过程中,观察网络中线的走向,进行链式求导(知识点:高等数学-链式求导法则)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值