谷歌官方:反向传播算法图解

2018 年 6 月 29 日 新智元





  新智元推荐  

来源:google-developers.appspot.com


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


网站地址:

https://google-developers.appspot.com/machine-learning/crash-course/backprop-scroll/


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


简单的神经网络



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


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


激活函数



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

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


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


误差函数



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


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


正向传播



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


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



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


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



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


误差导数



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


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

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


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


其他导数


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


反向传播



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

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

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



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


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

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



结束。




【加入社群】


新智元 AI 技术 + 产业社群招募中,欢迎对 AI 技术 + 产业落地感兴趣的同学,加小助手微信号: aiera2015_3  入群;通过审核后我们将邀请进群,加入社群后务必修改群备注(姓名 - 公司 - 职位;专业群审核较严,敬请谅解)。


登录查看更多
9

相关内容

[ICML-Google]先宽后窄:对深度薄网络的有效训练
专知会员服务
34+阅读 · 2020年7月5日
最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
【普林斯顿大学-微软】加权元学习,Weighted Meta-Learning
专知会员服务
39+阅读 · 2020年3月25日
谷歌机器学习速成课程中文版pdf
专知会员服务
145+阅读 · 2019年12月4日
一文搞懂反向传播
机器学习与推荐算法
18+阅读 · 2020年3月12日
激活函数还是有一点意思的!
计算机视觉战队
12+阅读 · 2019年6月28日
谷歌 MorphNet:让你的神经网络更小但更快
机器学习算法与Python学习
5+阅读 · 2019年4月18日
干货 | 深入理解深度学习中的激活函数
计算机视觉life
16+阅读 · 2019年1月29日
已删除
将门创投
10+阅读 · 2018年5月2日
干货|深度神经网络(DNN)反向传播算法(BP)
全球人工智能
7+阅读 · 2018年1月12日
算法优化|梯度下降和随机梯度下降 — 从0开始
全球人工智能
8+阅读 · 2017年12月25日
神经网络bp算法推导
统计学习与视觉计算组
11+阅读 · 2017年11月17日
入门 | 一文概览深度学习中的激活函数
机器之心
7+阅读 · 2017年11月2日
Heterogeneous Graph Transformer
Arxiv
27+阅读 · 2020年3月3日
Arxiv
8+阅读 · 2019年3月21日
Star-Transformer
Arxiv
5+阅读 · 2019年2月28日
Doubly Attentive Transformer Machine Translation
Arxiv
4+阅读 · 2018年7月30日
Arxiv
4+阅读 · 2017年7月25日
VIP会员
相关资讯
一文搞懂反向传播
机器学习与推荐算法
18+阅读 · 2020年3月12日
激活函数还是有一点意思的!
计算机视觉战队
12+阅读 · 2019年6月28日
谷歌 MorphNet:让你的神经网络更小但更快
机器学习算法与Python学习
5+阅读 · 2019年4月18日
干货 | 深入理解深度学习中的激活函数
计算机视觉life
16+阅读 · 2019年1月29日
已删除
将门创投
10+阅读 · 2018年5月2日
干货|深度神经网络(DNN)反向传播算法(BP)
全球人工智能
7+阅读 · 2018年1月12日
算法优化|梯度下降和随机梯度下降 — 从0开始
全球人工智能
8+阅读 · 2017年12月25日
神经网络bp算法推导
统计学习与视觉计算组
11+阅读 · 2017年11月17日
入门 | 一文概览深度学习中的激活函数
机器之心
7+阅读 · 2017年11月2日
Top
微信扫码咨询专知VIP会员