开发者学堂课程【机器学习算法 :误差反向传播算法-2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/535/detail/7241
误差反向传播算法-2
内容介绍
一.例图
二、正向求导
三、反向求导
四、向量表示
五、BP 算法
一、例图
在已知路径如图的情况下,求整体上输入 ×1,×2 ,b 对输出 o 的影响。
二、正向求导法
- 正向求导
即所有路径都遍历一遍,不利的是路径冗余
① X1=> h1=> o,输入 x1 对于 o 的影响
② X1=> h2=> o,输入 x1 对于 o 的影响
③ X2=> h1=> o,输入 x2 对于 o 的影响
④ X2=> h2=> o,输入 x2 对于 o 的影响
⑤ b=> h1=> o,输入 b 对于 o 的影响
⑥ b=> h2=> o,输入 b 对于 o 的影响
⑦ 整体上输入 ×1,×2 ,b 对输出 o 的影响
为:48+0+0+72+0+72=192
三、反向求导
当已知路径,反向求导。
o 对 h1 和 h2 求导的相当于此时输出传导回隐藏层。
① 第一层,o =>h1,o =>h2 :
此时 h1 实际上还是受到 b,x1 和 x2 的影响,我们将该影响再传到值输入层。
② 第二层中间结果:
hx=>b,h1=>xt,h1=>x2, h2=>b,h2=>x1,h2=>x2
③ 第二层,o=> b, o => ×1,o=>×2
同时在最终求偏导时,直接使用中间结果的值,就可以将整个结果表示出来即只求一遍即可。反向求导即为,从 o 开始向前一层一层求传递的影响
三、向量表示
1. 用向量形式表示
H 即为隐藏层=权重1*输入层,输出层=权重 2*H。严格书写形式应在权重的上标添加转置符号 T。
H=W1.X O=W2.H
在之前求解时,求得输入层导数为1,隐藏层到输入层为 w1,最终的输出层为x的偏导,即 w1*w2 (图片第一行,为正向求导)
或者反向求导(图片第二行,为反向求导),o 对 X 的影响为 w1*w2,o 对 H 的影响为 w2,o 对 o 的影响就是1。
2.前向和反向的特点:
- 前向的“分母”一样,反向的“分子”一样
前向:分母加引号为导数的表示形式,此话表示每次计算时,无论在任何一层都要计算到输入层。
反向:分子都为 o,表示计算的时候只用计算两层。
- 前向强调的是某个输入对某个神经元的影响
- 前向求导方式是“路径加和”,逐条路径求解
- 反向采用的是“合并同类路径,分阶段按层次求解”
- 前向会导致路径中的部分冗余遍历,反向不会
- 反向中某一阶段计算时可以直接使用上一阶段的结果
- 前向计算量比反向大很多
整体来看,反向求导的计算更加清晰,而前向更加麻烦,因为含有重复路径也没有中间结果可使用。
四、BP 算法
1.介绍
最早时候感知器被认为不能解决线性不可分的问题,被认为价值有限,后来有了多层感知器(MLP)能够解决此问题。而功能虽然没有问题,但在实际应用中计算量过大,参数过多,过于复杂,被发现仅理论可行,就不被看好。
直至 BP 算法(Error Back Propagation,误差反向传播算法)︰是目前用来训练人工神经网络(ANN)最常用、最有效的算法。由1974年 Paul Werbos 最早提出,未被重视,后由 Rumelhart 和 McCelland 发表《并行分布式处理》正式提出。
2. 特点
l 数据前向传播:
首先,训练集数据输入到输入层,结合权重去计算,经过隐藏层计算结合函数去作用到净输出上,到达输出层,计算最后输出的结果
l 误差反向传播:
然后,有了实际输出后,计算输出值与实际值的误差,从输出层向隐藏层反向传播,直至输入层
l 调整算法参数
最后,在反向传播的过程中,根据误差调整各种参数的值,反复迭代直至收敛





