深度学习入门(7)误差反向传播计算方式及简单计算层的实现

简介: 深度学习入门(7)误差反向传播计算方式及简单计算层的实现

1 误差的反向传播


1.1加法节点的反向传播

aa46a7c28a034fce8f9c09d94414dca9.png

c07b44c6e79f46ef8f4688a1f79733d9.png

b3d90df1bf644f6998bdc5170924f6e4.png



1.2乘法节点的反向传播


这里我们考虑z = xy。这个式子的导数用下式表示。

4ea95ecb79f9473ebcdeec35e314f102.png


乘法的反向传播会将上游的值乘以正向传播时的输入信号的“翻转值后传递给下游。翻转值表示一种翻转关系,如图5-12所示,正向传播时信号是x的话,反向传播时则是y;正向传播时信号是y的话,反向传播时则是x。

5b70dfa6c2714750bbc89ef9a4c830fc.png

867dc533d0854ad3af0a5a726c4fd175.png


1.3 苹果的例子


再来思考一下本章最开始举的购买苹果的例子( 2个苹果和消费税)。这里要解的问题是苹果的价格、苹果的个数、消费税这3个变量各自如何影响最终支付的金额。这个问题相当于求“支付金额关于苹果的价格的导数”“支付金额关于苹果的个数的导数”“支付金额关于消费税的导数”。用计算图的反向传播来解的话,求解过程如图所示。


a0d37edf184e4e7b89fbe95c1753b1fe.png

练习:


在图中的方块中填入数字,求各个变量的导数?


614a06d794e048aa9a2c2ae52eba56be.png

答案:

c7c01c701b7143568163fd10abe62bd9.png


2 简单层的实现


我们把要实现的计算图的乘法节点称为乘法层MulLayer),加法节点称为加法层AddLayer)。


2.1乘法层的实现


层的实现中有两个共通的方法(接口)forward()backward() forward()对应正向传播, backward()对应反向传播。

f26c0f5a2b0142069e4e95db8d2b5f65.png


注:backward()将从上游传来的导数( dout)乘以正向传播的翻转值,然后传给下游。


dout表示从上游传过来的导数。


举例:


现在我们使用 MulLayer实现前面的购买苹果的例子( 2个苹果和消费税)

c208244d21164bb7b56ec24ece86de95.png


d204a4a3d24745119475695033bc594a.png


此外,关于各个变量的导数可由 backward()求出。

2b68737c34134477940aa1760d4fa12d.png


这里,调用 backward()的顺序与调用 forward()的顺序相反。此外,要注意 backward()的参数中需要输入“关于正向传播时的输出变量的导数”。比如,mul_apple_layer乘法层在正向传播时会输出 apple_price,在反向传播时,则会将 apple_price的导数 dapple_price设为参数。


2.2加法层的实现

458e2534c6da4c27bdbfd75e24aa38b9.png

backward()将上游传来的导数( dout)原封不动地传递给下游。


举例:


购买2个苹果和3个橘子的例子。


e461f3e8bbd3489385c88d49ef830c13.png

e89c585b88c74810834fd86026db68b6.png

2.3总结


计算的大致步骤:


1,生成必要的层,

2,以合适的顺序调用正向传播的forward()方法。

3,用与正向传播相反的顺序调用反向传播的backward()方法,就可以求出想要的导数。


如果内容对你有帮助,感谢点赞+关注哦!


相关文章
|
机器学习/深度学习
深度学习入门(9)神经网络Affine与Softmax层的计算图表示方式及其误差反向传播的代码实现
深度学习入门(9)神经网络Affine与Softmax层的计算图表示方式及其误差反向传播的代码实现
深度学习入门(9)神经网络Affine与Softmax层的计算图表示方式及其误差反向传播的代码实现
|
机器学习/深度学习 算法
十一、神经网络的成本函数和误差反向传播算法
十一、神经网络的成本函数和误差反向传播算法
十一、神经网络的成本函数和误差反向传播算法
|
机器学习/深度学习 算法
深度学习相关概念:计算图与反向传播
在深度学习分类问题中,反向传播是一个重要的环节,它决定着模型是否能被训练,反向传播相当于一个负反馈,当一件事做完之后,会寻找当前事件做的不好的问题,进行回传,当下次在做的时候,进行优化。
231 0
|
机器学习/深度学习 算法 Python
深度学习入门(3)神经网络参数梯度的计算方式
深度学习入门(3)神经网络参数梯度的计算方式
深度学习入门(3)神经网络参数梯度的计算方式
|
8月前
|
机器学习/深度学习 决策智能
**批量归一化(BN)**是2015年提出的深度学习优化技术,旨在解决**内部协变量偏移**和**梯度问题**。
【6月更文挑战第28天】**批量归一化(BN)**是2015年提出的深度学习优化技术,旨在解决**内部协变量偏移**和**梯度问题**。BN通过在每个小批量上执行**标准化**,然后应用学习到的γ和β参数,确保层间输入稳定性,加速训练,减少对超参数的敏感性,并作为隐含的正则化手段对抗过拟合。这提升了模型训练速度和性能,简化了初始化。
79 0
|
机器学习/深度学习 图计算
深度学习入门(6)误差反向传播基础---计算图与链式法则
深度学习入门(6)误差反向传播基础---计算图与链式法则
深度学习入门(6)误差反向传播基础---计算图与链式法则
|
机器学习/深度学习 传感器 编解码
物理系统执行机器学习计算,一种使用反向传播训练的深度物理神经网络
物理系统执行机器学习计算,一种使用反向传播训练的深度物理神经网络
224 0
|
2月前
|
机器学习/深度学习 数据采集 人工智能
基于Huffman树的层次化Softmax:面向大规模神经网络的高效概率计算方法
层次化Softmax算法通过引入Huffman树结构,将传统Softmax的计算复杂度从线性降至对数级别,显著提升了大规模词汇表的训练效率。该算法不仅优化了计算效率,还在处理大规模离散分布问题上提供了新的思路。文章详细介绍了Huffman树的构建、节点编码、概率计算及基于Gensim的实现方法,并讨论了工程实现中的优化策略与应用实践。
84 15
基于Huffman树的层次化Softmax:面向大规模神经网络的高效概率计算方法
|
机器学习/深度学习 资源调度 自然语言处理
深度学习基础入门篇[七]:常用归一化算法、层次归一化算法、归一化和标准化区别于联系、应用案例场景分析。
深度学习基础入门篇[七]:常用归一化算法、层次归一化算法、归一化和标准化区别于联系、应用案例场景分析。
|
机器学习/深度学习
【深度学习】5-从计算图直观认识“激活函数不以零为中心导致收敛变慢”
【深度学习】5-从计算图直观认识“激活函数不以零为中心导致收敛变慢”
242 0
【深度学习】5-从计算图直观认识“激活函数不以零为中心导致收敛变慢”

热门文章

最新文章