0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

反向传播算法的工作原理

DPVg_AI_era 来源:未知 作者:李倩 2018-07-02 16:01 次阅读

反向传播算法(BP算法)是目前用来训练人工神经网络的最常用且最有效的算法。作为谷歌机器学习速成课程的配套材料,谷歌推出一个演示网站,直观地介绍了反向传播算法的工作原理

反向传播算法对于快速训练大型神经网络来说至关重要。本文将介绍该算法的工作原理。

简单的神经网络

如上图,你会看到一个神经网络,其中包含一个输入节点、一个输出节点,以及两个隐藏层(分别有两个节点)。

相邻的层中的节点通过权重相关联,这些权重是网络参数

激活函数

每个节点都有一个总输入x、一个激活函数f(x)以及一个输出y=f(x)。

f(x)必须是非线性函数,否则神经网络就只能学习线性模型。

常用的激活函数是S 型函数:

误差函数

目标是根据数据自动学习网络的权重,以便让所有输入 的预测输出 接近目标 

为了衡量与该目标的差距,我们使用了一个误差函数常用的误差函数是 

正向传播

首先,我们取一个输入样本并更新网络的输入层。

为了保持一致性,我们将输入视为与其他任何节点相同,但不具有激活函数,以便让其输出与输入相等,即

现在,我们更新第一个隐藏层。我们取上一层节点的输出y,并使用权重来计算下一层节点的输入x。

然后,我们更新第一个隐藏层中节点的输出。 为此,我们使用激活函数f(x)。

使用这两个公式,我们可以传播到网络的其余内容,并获得网络的最终输出。

误差导数

反向传播算法会对特定样本的预测输出和理想输出进行比较,然后确定网络的每个权重的更新幅度。 为此,我们需要计算误差相对于每个权重的变化情况。

获得误差导数后,我们可以使用一种简单的更新法则来更新权重:

其中,是一个正常量,称为“学习速率”,我们需要根据经验对该常量进行微调。

[注意] 该更新法则非常简单:如果在权重提高后误差降低了 (),则提高权重;否则,如果在权重提高后误差也提高了 (),则降低权重。

其他导数

为了帮助计算,我们还为每个节点分别存储了另外两个导数,即误差随以下两项的变化情况:

反向传播

我们开始反向传播误差导数。 由于我们拥有此特定输入样本的预测输出,因此我们可以计算误差随该输出的变化情况。 根据我们的误差函数,我们可以得出:

现在我们获得了,接下来便可以根据链式法则得出 

其中,当f(x)是 S 型激活函数时,

一旦得出相对于某节点的总输入的误差导数,我们便可以得出相对于进入该节点的权重的误差导数。

根据链式法则,我们还可以根据上一层得出。此时,我们形成了一个完整的循环。

接下来,只需重复前面的 3 个公式,直到计算出所有误差导数即可。

结束。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4574

    浏览量

    98753
  • 算法
    +关注

    关注

    23

    文章

    4456

    浏览量

    90759

原文标题:谷歌官方:反向传播算法图解

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    晶闸管(SCR)工作原理

    晶闸管(SCR)工作原理 晶闸管的工作原理:在晶闸管的阳极与阴极之间加反向电压时,有两个PN结处于反向偏置,在
    发表于 12-10 14:14 2.6w次阅读

    反向传播如何实现

    实现反向传播
    发表于 07-09 16:10

    神经网络和反向传播算法

    03_深度学习入门_神经网络和反向传播算法
    发表于 09-12 07:08

    【AI 学习】第六篇--讲解BP(反向传播)流程

    反向传播整个流程如下:(1)进行前向传播计算,利用前向传播公式,得到隐藏层和输出层的激活值。(2)对输出层(第l层),计算残差:反向
    发表于 11-05 17:25

    数字式PID调节算法的具体工作原理是什么?

    数字式PID调节算法的具体工作原理是什么?
    发表于 02-11 08:11

    MapReduce的误差反向传播算法

    针对误差反向传播(BP)算法计算迭代的特点,给出了迭代式MapReduce框架实现BP算法的方法。迭代式MapReduce框架在传统MapReduce框架上添加了传送模块,避免了传统框
    发表于 12-20 16:39 0次下载
    MapReduce的误差<b class='flag-5'>反向</b><b class='flag-5'>传播</b><b class='flag-5'>算法</b>

    手动设计一个卷积神经网络(前向传播反向传播

    本文主要写卷积神经网络如何进行一次完整的训练,包括前向传播反向传播,并自己手写一个卷积神经网络。
    的头像 发表于 05-28 10:35 1.8w次阅读
    手动设计一个卷积神经网络(前向<b class='flag-5'>传播</b>和<b class='flag-5'>反向</b><b class='flag-5'>传播</b>)

    一种自动生成反向传播方程的方法

    。在经过几个epoch的训练后,搜索条件是使 generalization 最大化。我们找到了和标准反向传播效果同样好的几个变体方程。此外,在较短的训练时间内,这几种变体可以提高准确率。这可以用来改进 Hyperband 之类的算法
    的头像 发表于 08-14 09:55 3590次阅读
    一种自动生成<b class='flag-5'>反向</b><b class='flag-5'>传播</b>方程的方法

    深读解析反向传播算法在解决模型优化问题的方面应用

    反向传播算法隶属于深度学习,它在解决模型优化问题的方面有着重要的地位。
    的头像 发表于 11-01 15:48 5230次阅读
    深读解析<b class='flag-5'>反向</b><b class='flag-5'>传播</b><b class='flag-5'>算法</b>在解决模型优化问题的方面应用

    浅析遗传算法工作原理

    本文简要地对遗传算法进行阐述,让以前没有接触过遗传算法的人有个大概的认识,并了解遗传算法工作原理
    的头像 发表于 11-30 11:12 7135次阅读

    浅析深度神经网络(DNN)反向传播算法(BP)

    在 深度神经网络(DNN)模型与前向传播算法 中,我们对DNN的模型和前向传播算法做了总结,这里我们更进一步,对DNN的反向
    的头像 发表于 03-22 16:28 3218次阅读
    浅析深度神经网络(DNN)<b class='flag-5'>反向</b><b class='flag-5'>传播</b><b class='flag-5'>算法</b>(BP)

    PyTorch教程5.3之前向传播反向传播和计算图

    电子发烧友网站提供《PyTorch教程5.3之前向传播反向传播和计算图.pdf》资料免费下载
    发表于 06-05 15:36 0次下载
    PyTorch教程5.3之前向<b class='flag-5'>传播</b>、<b class='flag-5'>反向</b><b class='flag-5'>传播</b>和计算图

    PyTorch教程之时间反向传播

    电子发烧友网站提供《PyTorch教程之时间反向传播.pdf》资料免费下载
    发表于 06-05 09:49 0次下载
    PyTorch教程之时间<b class='flag-5'>反向</b><b class='flag-5'>传播</b>

    PyTorch教程-5.3. 前向传播反向传播和计算图

    。当需要计算梯度时,我们只是调用了深度学习框架提供的反向传播函数。 梯度的自动计算(自动微分)大大简化了深度学习算法的实现。在自动微分之前,即使是对复杂模型的微小改动也需要手动重新计算复杂的导数。令人惊讶
    的头像 发表于 06-05 15:43 758次阅读
    PyTorch教程-5.3. 前向<b class='flag-5'>传播</b>、<b class='flag-5'>反向</b><b class='flag-5'>传播</b>和计算图

    PyTorch教程-9.7. 时间反向传播

    大量现代 RNN 架构之前,让我们仔细看看反向传播在数学细节中是如何在序列模型中工作的。希望这个讨论能使梯度消失和爆炸的概念更加精确。如果你还记得我们在 5.3 节介绍 MLP 时通过计算图进行
    的头像 发表于 06-05 15:44 262次阅读
    PyTorch教程-9.7. 时间<b class='flag-5'>反向</b><b class='flag-5'>传播</b>