开发者学堂课程【神经网络概览及算法详解:误差反向传播算法-2】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/40/detail/930
误差反向传播算法-2
内容介绍:
一、 正向求导
二、 反向求导
三、 前向和反向的特点
四、 BP算法
一、 正向求导
① X1=> h1=>o,输入X1 对于o的影响为:
⑦ 整体上输入X1 , X2, b对输出o的影响为:48+0+0+72+0+72=192
//正向求导每一个路径都要变一遍,会有很有路径冗余。
二、反向求导
① 第一层,o= > h1,o= > h₂ :
② 第二层中间结果:h1 = >b,h1=> X2,h₂ = >b,h₂=> X1,h₂=> X2
③ 第二层: o= >b,o= > X1,o= > X2
//求偏导的时候,把中间结果求出来,最后直接用中间值把最终结果表示出来,只求一遍。反向求导从o往前开始一层一层去传递影响。
三、前向和反向的特点
前向的“分母”一样,反向的“分子”一样
前向强调的是某个输入对某个神经元的影响
前向求导方式是“路径加和”,逐条路径求解
反向采用的是“合并同类路径,分阶段按层次求解”
前向会导致路径中的部分冗余遍历,反向不会
反向中某一阶段计算时可以直接使用上一阶段的结果
前向计算量比反向大很多
//整体来看,反向更容易计算,更清晰。正向会麻烦的多,计算量大,也没有中间结果可用。
四、BP算法
BP算法(Error Back Propagation,误差反向传播算法): 准确来讲叫EBP算法,是目前用来训练人工神经网络(ANN)最常用、最有效的算法。由1974年Paul Werbos最早提出,但由于处于网络的低谷期,未被重视,后由Rumelhart和McCelland发表《并行分布式处理》正式提出。
//最早的时候认为感应器不能解决线性不可分的问题,后来有了多层感应器之后,可以解决线性不可分的问题,看上去功能没有问题,但在实际训练过程中,因为计算量过大,传输过多,算起来太复杂的原因,只是理论上可行,直到BP算法出现为止。BP算法到现在几十年,还被用来训练人工神经网络(ANN)最常用、最有效的算法。
//来看一下BP算法,首先数据前向传播,训练集数据输入到输入层,经过隐蔽层,到达输出层,计算输出的结果。接下来有了实际输出之后,计算实际输出值和实际值的误差,从输出层向隐蔽层反向传播,直至输入层,这叫误差反向传播。在反向传播的过程中,根据误差,调整各种参数的值,反复迭代直至收,这是调整算法参数。