反向传播的推导

本文详细介绍了反向传播的概念,并通过一个双层神经网络为例,展示了正向传播与反向传播的过程。在正向传播中,计算各层的激活值和损失函数;在反向传播中,逐步求取损失函数对各参数的梯度,重点解释了如何通过矩阵运算匹配维度以简化计算。整个推导过程旨在帮助读者直观理解反向传播在神经网络训练中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直观理解反向传播(Backpropagation intuition) 
反向传播的推导
下图是逻辑回归的推导: 


正向传播,其中我们计算?,然后?,然后损失函数?。 

神经网络的计算中,与逻辑回归十分类似,但中间会有多层的计算。

假设一个双层神经网络,有一个输入层,一个隐藏层和一个输出层。 

前向传播: 
计算?[1],?[1],再计算?[2],?[2],最后得到 loss function。 

反向传播: 
向后推算出??[2],然后推算出??[2],接着推算出??[1],然后推算出??[1]。我们不需要
对?求导,因为?是固定的,我们也不是想优化?。向后推算出??[2],然后推算出??[2]的步骤
可以合为一步:  
??[2] = ?[2] − ?  ,  ??[2] = ??[2]?[1]? 
??[2] = ??[2]  
??[1] = ?[2]???[2] ∗ ?[1]′(?[1])

注意:

这里的矩阵: ?[2]的维度是: (?[2],?[1])。
 
?[2] , ??[2]的维度都是:(?[2],1),如果是二分类,那维度就是(1,1)。 

?[1],??[1]的维度都是:(?[1],1)。 

证明过程:


其中?[2]???[2]维度为: (?[1],?[2])、 (?[2],1)相乘得到(?[1],1),和 ?[1]维度相同, ?[1]′(?[1])
的维度为(?[1],1),这就变成了两个都是(?[1],1)向量逐元素乘积。 
实现后向传播有个技巧,就是要保证矩阵的维度相互匹配。最后得到??[1]和??[1]

 ??[1] = ??[1]??,??[1] = ??[1] 
可以看出??[1] 和??[2] 非常相似,其中?扮演了?[0]的角色,?? 等同于?[0]?。 
由: ?[1] = ?[1]? + ?[1] , ?[1] = ?[1](?[1]) 得到: ?[1] = ?[1]? + ?[1],?[1] = ?[1](?[1]) 

注意:大写的?[1]表示?[1](1),?[1](2),?[1](3)...?[1](?)的列向量堆叠成的矩阵,以下类同。
 
下图写了主要的推导过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUNNY小飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值