深度学习基础--神经网络--BP反向传播算法

Posted Amazing_Man

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习基础--神经网络--BP反向传播算法相关的知识,希望对你有一定的参考价值。

BP算法:

  1.是一种有监督学习算法,常被用来训练多层感知机。

   2.要求每个人工神经元(即节点)所使用的激励函数必须可微。

  (激励函数:单个神经元的输入与输出之间的函数关系叫做激励函数。)

  (假如不使用激励函数,神经网络中的每层都只是做简单的线性变换,多层输入叠加后也还是线性变换。因为线性模型的表达能力不够,激励函数可以引入非线性因素)

  

  下面两幅图分别为:无激励函数的神经网络和激励函数的神经网络

    

  

  如图所示,加入非线性激活函数后的差异:上图为用线性组合逼**滑曲线来分割*面,下图为使用*滑的曲线来分割*面。

  

  3.该算法特别适合用来训练前馈神经网络。

   前馈神经网络:人工神经网络中的一种。在此种神经网络中,各神经元从输入层开始,接收前一级输入,并输入到下一级,直至输出层。整个网络中无反馈,可用一个有向无环图表示。按照层数划分,可以分为单层前馈神经网络和多层前馈神经网络。常见前馈神经网络有:感知机(perceptions)、BP(Back Propagation 反向传播)网络、RBF(Radial Basis Function 径向基)网络等。

  一般看到的神经网络是这样的:

       

  计算的时候:  信号从输入---》输出的过程是向前传递的。

  那么反馈从哪里来?

  在我们的网络没训练好的时候,输出的结果肯定和想象的不一样,这时候求偏差,并且把偏差一级一级的向前传递,逐层得到,这就是反馈。反馈是用来求偏导数的,而偏导数是用来作梯度下降的,梯度下降又是为了求得代价函数的极小值,使得期望和输出之间的误差尽可能的减小。(自己也可以定义一个代价函数,没准就不需要反馈了呢~)

  4.主要由两个环节(激励传播、权重更新)反复循环迭代,直到网络对输入的响应达到预定的目标范围为止。

  激励传播:

      在每次迭代中的传播环节包含两步:

      1.(前向传播阶段)将训练输入送入到网络中,以获得激励响应。

      2.(反向传播阶段)将激励响应训练输入对应的目标输出求差,从而获得隐层和输出层的响应误差。

      

    权重更新:

      对于每个突触上的权重,按照以下步骤进行更新:

      1.将输入激励和响应误差相乘,从而获得权重的梯度。

      2.将这个梯度乘上一个比例(这个比例将会影响到训练过程的速度和效果,因此称为‘训练因子’。梯度的方向指明了误差扩大的方向,因此在更新权重的时候需要对其取反,从而减小权重引起的误差)并取反后加到权重上。

 

综上:

  反向传播算法的思路如下:给定一个样例\\textstyle (x,y),我们首先进行“前向传导”运算,计算出网络中所有的激活值,包括\\textstyle h_{W,b}(x)的输出值。之后,针对第\\textstyle l层的每一个节点 \\textstyle i,我们计算出其“残差”\\textstyle \\delta^{(l)}_i ,该残差表明了该节点对最终输出值的残差产生了多少影像。对于最终的输出节点,我们可以直接算出网络产生的激活值与实际值之间的差距,我们将这个差距定义为\\textstyle \\delta^{(n_l)}_i(第\\textstyle n_l层表示输出层)。对于隐藏单元我们如何处理呢?我们将基于节点(译者注:第\\textstyle l+1层节点)残差的加权*均值计算\\textstyle \\delta^{(l)}_i,这些节点以\\textstyle a^{(l)}_i作为输入。

 

重要参考http://www.cnblogs.com/Crysaty/p/6126321.html

以上是关于深度学习基础--神经网络--BP反向传播算法的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记:深度学习——BP神经网络

AI - 深度学习之美十四章-概念摘要(8~14)

一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)

深度学习之反向传播算法

深度学习基础-基于Numpy的循环神经网络(RNN)实现和反向传播训练

八.DBN深度置信网络