文档章节

反向传播(Backpropagation)算法的数学原理

Lee的白板报
 Lee的白板报
发布于 2015/11/11 17:08
字数 781
阅读 15323
收藏 12

准备

本文不是一篇引导读者入门的科普文。读者至少需要对人工神经网络有概念性的理解,并且熟悉偏导数。

这是一个简单的人工神经网络,分为输入层,隐藏层和输出层。输入层以原始数据 x 作为本层向下一层的输出,即 a(1);隐藏层将 a(1) 中的元素进行线性组合作为自己的输入,即 z(2),然后将 z(2) 进行一个数学变换(函数 g(z))作为对下一层的输出,即 a(2)。以此类推,得到最后一层的输出,即 a(3) 或 hΘ(x),就是人工神经网络的运算结果。

其中 Θ(1), Θ(2) 分别是第1层,第2层向前传递数据时的线性组合参数,把 Θ(1), Θ(2)  统称为 Θ。在训练时,将已经标记好标准答案(称标准答案为 y)的数据输入网络,刚开始网络的输出与答案往往相距甚远,然后用优化算法(例如梯度下降法)不断修正 Θ,使网络的计算结果越来越接近标准答案,直至达到要求的精度。

这里定义一个表达式,叫做【代价方程】(Cost Function):

                      J(Θ) = 【计算结果 与 标准答案 之间的差距】

不需要关心 Cost Function 的具体形式,只需要理解它是对计算误差的一种衡量,并且它是 Θ 的函数。我们的目标就是使计算误差尽量小。

以梯度下降法为代表的很多优化算法可以用来解决上述的最小化问题。在优化过程中,这些算法通常会用到 J(Θ) Θ 中各元素的偏导数(Θ 是一个矩阵)。反向传播算法就是用来计算这些偏导数的。

最后要注意的一点是,除了最后一层以外,每一层都要在自己的输出向量前附加一个值为+1的项(称为 Bias Term),为了理解它的意义,可以想象二维坐标系中的一条直线:ax + b = 0,Bias term 与对应参数相乘后的值就是直线的截距 b。


数学原理


结语

听课时老师直接给出了反向传播的算法与程序,绕过了数学证明。虽然并不影响应用,但使用一个并不了解原理的工具,让我有如鲠在喉之感。通过证明,既可加深学习印象,也为后续的高阶学习夯实基础。

© 著作权归作者所有

共有 人打赏支持
Lee的白板报
粉丝 93
博文 31
码字总数 45338
作品 0
高级程序员
私信 提问
加载中

评论(5)

t
tjchern

引用来自“tjchern”的评论

为啥求第一部分的时候,使用的是加法,这样成立的前提是J可以写成Z的和,但是实际上不能啊

不好意思,楼主写的就是链式法则的定义形式,之前理解错了
t
tjchern
为啥求第一部分的时候,使用的是加法,这样成立的前提是J可以写成Z的和,但是实际上不能啊
PrincessMQ
PrincessMQ
楼主,能不能解释一下为什么第l层第i个单元的计算误差,是代价函数J(theta)对zi的偏导数?
Lee的白板报
Lee的白板报

引用来自“2550572497”的评论

楼主,能不能解释一下为什么J(Θ)要拆分成①,②,③三个部分?有没有什么特殊的含义?
只是链式求导过程中的不同步骤而已,为了方便理解。 比如: F=f1(f2(X)), 那么 dF/dX = dF/df1 * df1/df2 * df2/dX
2550572497
2550572497
楼主,能不能解释一下为什么J(Θ)要拆分成①,②,③三个部分?有没有什么特殊的含义?
反向传播的工作原理(深度学习第三章)

https://www.youtube.com/watch?v=Ilg3gGewQ5U What is backpropagation really doing? 梯度向量的每一项大小是在告诉大家,代价函数对于每一个参数有多敏感。 对于改变激活值,可以有三种方...

Fire_to_cheat_
01/19
0
0
入门 | 如何通过梯度检验帮助实现反向传播

  选自imaddabbura   机器之心编译   参与:刘天赐、路      本文介绍了如何使用梯度检验方法确认反向传播代码是否准确。      在《Coding Neural Network - Forward Propaga...

机器之心
05/09
0
0
详解反向传播算法(上)

目录: 1 用计算图来解释几种求导方法: 1.1 计算图 1.2 两种求导模式:前向模式求导( forward-mode differentiation) 反向模式求导(reverse-mode differentiation) 1.3 反向求导模式(反向传...

晓雷
2017/02/04
0
0
一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)

欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知识! 反向传播算法(Backpropagation Algorithm,简称BP算法)是深度学习的重要思想基...

磐石001
04/02
0
0
BP算法是从天上掉下来的吗?

前馈神经网络 在文章《逻辑回归到神经网络》(以下简写《LR到NN》)中,小夕为大家描述了一个从逻辑回归延伸到神经网络的过程。在《一般化机器学习与神经网络》中,小夕阐述了神经网络的一般...

夕小瑶Elsa
2017/05/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

新手也能看懂,消息队列其实很简单

该文已加入开源项目:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识的文档类项目,Star 数接近 16k)。地址:https://github.com/Snailclimb/JavaGuide. 本文内容思维导图: 消息...

阿里云官方博客
14分钟前
0
0
如何在Chrome浏览器中启动deviceready事件(尝试调试phonegap项目)?

我正在开发PhoneGap应用程序,我希望能够在Chrome中调试它,而不是在电话上调试。但是,我在onGetReady()函数中初始化我的代码,该函数在PhoneGap触发“deviceready”事件时触发。由于Chr...

kisshua
今天
9
0
nginx中部署vue打包后的静态文件

如何在nginx中部署静态资源就不描述了, 请看我的这篇博客 将vue脚手架项目打包后的静态文件放到nginx上, 发现有个问题, 即url上有#, 怎么去掉这个#呢. 1 项目中router的mode 路由的mode要为h...

克虏伯
今天
13
0
JS容易理解错误的地方

在这端代码执行的末尾,你会不会hi变量回事函数中的hi了?你会不会认为这不是按引用传递了? 对值传递和引用传递产生质疑了? 1 var hi = {};2 function sayHello(hi) { ...

器石_
今天
9
0
Java开发学习--MongoDB

之前只学过sql,第一次使用非关系型数据库。以前对于关系型数据库与非关系型数据库的概念很模糊,通过这次的学习对这两者有了一个清晰的概念。 主键 在MongoDB中,主键名叫"_id",如果在生成...

微笑向暖wx
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部