首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是反向传播?

什么是反向传播?
EN

Data Science用户
提问于 2021-09-08 11:41:29
回答 3查看 378关注 0票数 4

我有一个概念上的问题,因为术语困扰着我。反向传播算法是一种神经网络训练算法,还是仅仅是一种递归算法来计算神经网络的雅可比?那么这个Jacobian将作为主要训练算法的一部分,例如最陡峭的下降?

因此,计算雅可比矩阵(神经网络输出到网络参数的偏导数)是一种训练算法还是一种数值方法?

EN

回答 3

Data Science用户

回答已采纳

发布于 2021-09-08 14:42:15

不,我不认为后备力量是一种训练算法。反向传播是利用链规则求损失函数相对于输入的导数的一种方法。计算导数并不能训练任何东西。

为了最小化损失函数,你用这个导数做的是训练部分。

编辑:我认为这将取决于你问谁。例如,这个PyTorch 教程。他们说,“反向传播:在反向传播中,神经网络调整其参数与其猜测的误差成比例,它通过从输出中反向遍历,收集误差的导数与函数的参数(梯度)有关,并使用梯度下降优化参数。”

即这两个步骤

代码语言:javascript
运行
复制
loss.backward()
optim.step()

他们称之为反向传播。这就是我所说的更多的工程观点,我相信这是一个语义上的转变,而不是我所争论的(见评论!)实际上是反道具,这只是loss.backward()的一步。

在这种背景下,背靠背意义的语义漂移、导数的计算和优化都是有意义的。为什么要打电话给loss.backward()而不给optim.step()打电话呢?但是,最初(从技术上来说,最好是正确的)反向支持只是指导数的计算,我认为你会发现术语更多的是在数学/理论上下文中,而不是在编程/工程上下文中。

票数 3
EN

Data Science用户

发布于 2021-09-08 13:03:42

反向传播算法是对神经网络权值进行优化(学习)的方法,也就是优化器为此目的使用的方法,因此可以认为它是训练算法。

在反向传播中,您不需要解释地计算雅可比矩阵(请参阅获得更多详细信息的这个来源),但是您需要通过链规则(从微积分中)计算损失函数相对于其权重的第一个导数。这条链规则使我们可以通过将更复杂的函数分解成更简单的导数来找到它的梯度。

然后,通过应用梯度下降策略(在最陡下降之后,即为每个可训练权重添加手头的负导数),在每次迭代中调整权重,直到某个值产生可接受的损失,或直到达到一定数量的回合为止。

作为如何使用每个导数来更新每个权重的一个简单例子,我们可以想到应用梯度下降的线性回归:

正如Fran ois Chollet在“用python进行深度学习”一书中明确指出的那样:“反向传播从最终的损失值开始,从顶层向底层反向工作,计算每个参数在损失值中的贡献”。

票数 4
EN

Data Science用户

发布于 2021-09-09 11:52:22

我对这些东西的解释是,术语在几个来源上有点扭曲。有些将反向传播称为训练算法,有些则将其称为计算偏导数(即雅可比)的有效算法。

因此,我认为反向传播算法的最初含义是计算网络的雅可比。然后,任何训练算法都可以利用雅可比算法。大多数情况下,选择的训练算法是最陡峭的下降。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/101899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档