反向传播求偏导原理简单理解

神经网络中用反向传播求偏导数的思想就相当于复合函数求偏导。


从头说起,在学生时代我们要求下面式子中,函数 e ( a , b ) e(a,b) e(a,b)对a和b的偏导数:
e = ( a + b ) ∗ ( b + 1 ) e=(a+b)*(b+1) e=(a+b)(b+1)

∂ e ∂ a = ? \frac{\partial e}{\partial a}=? ae=?

∂ e ∂ b = ? \frac{\partial e}{\partial b}=? be=?

传统的求偏导方法就是用解析式直接求偏导即可。

但如果随着函数复合的层数增多,对应的就是神经网络的层数增多,总体的解析式也会变得极其复杂,这个时候想一步求出偏导数是不可能的,只能通过反向传播法来求偏导数。


反向传播的核心就是计算图,其数学原理就是链式法则求偏导数

e = ( a + b ) ∗ ( b + 1 ) e=(a+b)*(b+1) e=(a+b)(b+1)的计算图如下表示,对应的就相当于神经网络图,每个节点都是原式中的一个小小的原子操作,也就是加减乘除等操作,对应的就相当于神经网络中每个结点的计算:

在这里插入图片描述

从结点a和结点b开始,顺着箭头计算,直到算出结果e,这就是前馈计算的过程,也就是前向传播计算。


其实,我们在前馈计算的过程中,完全可以计算每个中间结点对上一个节点的偏导数。

比如在前馈计算c=a+b时,我们可以顺道算出 ∂ c ∂ a \frac{\partial c}{\partial a} ac ∂ c ∂ b \frac{\partial c}{\partial b} bc

在计算d=b+1时,逆着箭头计算出 ∂ d ∂ b \frac{\partial d}{\partial b} bd( ∂ d ∂ 1 = 0 \frac{\partial d}{\partial 1}=0 1d=0,所以可以省略);

在计算e=c*d时,逆着指向它的两个箭头计算出 ∂ e ∂ c \frac{\partial e}{\partial c} ce ∂ e ∂ d \frac{\partial e}{\partial d} de

最后,根据数学上的链式法则求偏导:

链式法则:路径上的偏导数做乘法,不同路径上的做加法。比如,从a到e的路径只有一条,其路径上的所有偏导数做乘法;从b到e上的路径有两条,每条路径上的偏导数做乘法,最后不同路径的结果做加法。如下所示:

∂ e ∂ a = ∂ e ∂ c ⋅ ∂ c ∂ a \frac{\partial e}{\partial a}=\frac{\partial e}{\partial c}·\frac{\partial c}{\partial a} ae=ceac

∂ e ∂ b = ∂ e ∂ c ⋅ ∂ c ∂ b + ∂ e ∂ d ⋅ ∂ d ∂ b \frac{\partial e}{\partial b}=\frac{\partial e}{\partial c}·\frac{\partial c}{\partial b}+\frac{\partial e}{\partial d}·\frac{\partial d}{\partial b} be=cebc+debd

在这里插入图片描述
至此,仅需在前馈计算的过程中,我们就能顺道求出复合函数e(a,b)的偏导数。


后续就是做函数优化等等了。

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
神经网络反向传播(Backpropagation)是一种常用的训练神经网络的算法,其主要思想是通过计算神经网络输出误差,并将误差传递回神经网络中进行参数更新,从而不断优化神经网络的性能。 反向传播算法的主要过程如下: 1. 前向传播:将输入数据送入神经网络,按照从输入层到输出层的顺序依次计算每个神经元的输出值。 2. 计算误差:将神经网络输出的结果与真实标签值进行比较,计算输出误差。 3. 反向传播:将输出误差反向传播神经网络中,计算每个神经元的误差贡献,然后根据误差贡献更新神经元的参数。 4. 重复迭代:不断重复以上步骤,直到神经网络的性能达到预期要为止。 具体来说,反向传播算法是通过链式法则(Chain Rule)实现误差反向传播的。在网络的每一层中,根据链式法则可以将误差贡献分解为上一层误差贡献和当前层神经元的激活函数对权重的导数乘积的和。然后,根据误差贡献和权重的导数,可以更新当前层的神经元权重和偏置值,从而不断优化神经网络的性能。 理解反向传播算法需要掌握数学知识,包括微积分、矩阵导、链式法则等。同时,还需要对神经网络模型的结构和参数有一定的了解。通过不断练习和实践,可以逐渐掌握反向传播算法的原理和实现方法,并应用到实际的神经网络模型中进行训练和优化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值