反向传播算法原理(BP算法)(直观易懂)

本文介绍了反向传播(BP算法),它是神经网络最重要的算法,是求偏导的过程,核心是计算图。文中通过具体例子展示了前馈过程和偏导数的计算,还指出BP算法可构建复杂计算图,具有弹性,只需计算原子算子偏导就能传播导数实现计算。

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

反向传播(Back Propagation、BP算法)

  • 反向传播是对于神经网络来说最重要的算法
  • 反向传播是求偏导的过程
  • 反向传播的核心是计算图(如下图所示)

a和b:输入量/权重,可经一系列运算得到e=(a+b)∗\ast(b+1)
在计算图中每一步的计算只能进行原子计算(不能被分割的运算)
在这里插入图片描述

假设a=1、b=2,从节点a出发,首先计算c=a+b=1+2=3,d=b+1=2+1=3,最后可得节点e=c∗c\astcd=3x3=9,这个过程叫做前馈。

求节点c时,一共有两条路径,即∂c∂a\frac{\partial c}{\partial a}ac=1和∂c∂b\frac{\partial c}{\partial b}bc=1。

求节点d时,只有一条路径,即∂d∂b\frac{\partial d}{\partial b}bd=1。

求节点e时,一共有两条路径,即∂e∂c\frac{\partial e}{\partial c}ce=d=3和∂e∂d\frac{\partial e}{\partial d}de=c=3。

最终目标要求∂e∂a\frac{\partial e}{\partial a}ae∂e∂b\frac{\partial e}{\partial b}be,可以把a到e的所有路径上的偏导数相乘,就是∂e∂a\frac{\partial e}{\partial a}ae,即∂e∂a\frac{\partial e}{\partial a}ae=∂e∂c\frac{\partial e}{\partial c}ce⋅\cdot∂c∂a\frac{\partial c}{\partial a}ac=3x1=3(链式法则),从b到e一共两条路径(b->c->e,b->d->e),将这两条路径上算出来的偏导数相加就是∂e∂b\frac{\partial e}{\partial b}be,即∂e∂b\frac{\partial e}{\partial b}be=∂e∂c\frac{\partial e}{\partial c}ce⋅\cdot∂c∂b\frac{\partial c}{\partial b}bc+++∂e∂d\frac{\partial e}{\partial d}de⋅\cdot∂d∂b\frac{\partial d}{\partial b}bd=3x1+3x1=6。

综上,利用BP算法可以构建复杂的计算图,且算法具有弹性(如果只是计算图发生改变,但原子计算式不变,即各个节点的偏导不变,那么算法仍然可以应用在新计算图上)。BP算法只需要计算每个原子算子的偏导,就可以在图里传播导数来实现最终的计算。

本文参考:《PyTorch深度学习实践》

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

璞玉牧之

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

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

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

打赏作者

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

抵扣说明:

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

余额充值