反向传播(Backpropagation)算法的数学原理
反向传播(Backpropagation)算法的数学原理
Lee的白板报 发表于2年前
反向传播(Backpropagation)算法的数学原理
  • 发表于 2年前
  • 阅读 13306
  • 收藏 11
  • 点赞 5
  • 评论 5

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: 最近在学习 Coursera 上 Andrew Ng 的 Machine Learning 课程。这是一个面向应用,注重实践而尽量避免数学证明的课程,好处在于能快速帮助更多新人入门。然而从新手到高手的路是绕不开数学的。第五周的课程讲授了人工神经网络参数的训练,其中用到了反向传播算法。本文试图以最简洁的方式把反向传播算法的数学原理讲清楚。

准备

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

这是一个简单的人工神经网络,分为输入层,隐藏层和输出层。输入层以原始数据 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。


数学原理


结语

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

共有 人打赏支持
粉丝 86
博文 31
码字总数 45338
评论 (5)
2550572497
楼主,能不能解释一下为什么J(Θ)要拆分成①,②,③三个部分?有没有什么特殊的含义?
Lee的白板报

引用来自“2550572497”的评论

楼主,能不能解释一下为什么J(Θ)要拆分成①,②,③三个部分?有没有什么特殊的含义?
只是链式求导过程中的不同步骤而已,为了方便理解。 比如: F=f1(f2(X)), 那么 dF/dX = dF/df1 * df1/df2 * df2/dX
PrincessMQ
楼主,能不能解释一下为什么第l层第i个单元的计算误差,是代价函数J(theta)对zi的偏导数?
tjchern
为啥求第一部分的时候,使用的是加法,这样成立的前提是J可以写成Z的和,但是实际上不能啊
tjchern

引用来自“tjchern”的评论

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

不好意思,楼主写的就是链式法则的定义形式,之前理解错了
×
Lee的白板报
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: