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

BP算法:

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

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

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

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

  

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

    

  

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

  

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

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

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

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

  那么反馈从哪里来?

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

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

  激励传播:

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

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

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

      

    权重更新:

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

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

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

综上:

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

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

时间: 2024-08-05 07:08:47

深度学习基础--神经网络--BP反向传播算法的相关文章

DL4NLP——神经网络(一)前馈神经网络的BP反向传播算法步骤整理

这里把按[1]推导的BP算法(Backpropagation)步骤整理一下,备忘使用.[1] 中直接使用矩阵微分的记号进行推导,整个过程十分简洁.而且这种矩阵形式有一个非常大的优势就是对照其进行编程实现时非常方便. 但其实用标量计算推导也有一定的好处,比如可以清楚地知道某个权重是被谁所影响的. 记号约定: $L$:神经网络的层数.输入层不算. $n^l$:第 $l$ 层神经元的个数.偏置神经元不算在内. $W^{l}\in\mathbb R^{n^l\times n^{l-1}}$:第 $l-1

机器学习之五:神经网络、反向传播算法

一.逻辑回归的局限 在逻辑回归一节中,使用逻辑回归的多分类,实现了识别20*20的图片上的数字. 但所使用的是一个一阶的模型,并没有使用多项式,为什么? 可以设想一下,在原有400个特征的数据样本中,增加二次.三次.四次多项式,会是什么情形? 很显然,训练样本的特征数量将会拔高多个数量级,而且,更重要的,要在一个式子中拟合这么多的特征,其难度是非常大的,可能无法收敛到一个比较理想的状态. 也就是说,逻辑回归没法提供很复杂的模型. 因为其本质上是一个线性的分类器,擅长解决的是线性可分的问题. 那么

神经网络之反向传播算法实现

1 神经网络模型 以下面神经网络模型为例,说明神经网络中正向传播和反向传播过程及代码实现 1.1 正向传播 (1)输入层神经元\(i_1,i_2\),输入层到隐藏层处理过程 \[HiddenNeth_1 = w_1i_1+w_2i_2 + b_1\] \[HiddenNeth_2 = w_3i_1+w_4i_2 + b_1\] \[h_1 = sigmoid(HiddenNeth_1)\] \[h_2 = sigmoid(HiddenNeth_2)\] (2)隐藏层:神经元\(h_1,h_2\)

神经网络和反向传播算法推导

注:由于自己画图实在太难画,本文中基本所有插图来源于算法团子机器学习班,请勿转载 1.普通的机器学习模型: 其实,基本上所有的基本机器学习模型都可以概括为以下的特征:根据某个函数,将输入计算并输出.图形化表示为下图: 当我们的g(h)为sigmoid函数时候,它就是一个逻辑回归的分类器.当g(h)是一个只能取0或1值的函数时,它就是一个感知机.那么问题来了,这一类模型有明显缺陷:当模型线性不可分的时候,或者所选取得特征不完备(或者不够准确)的时候,上述分类器效果并不是特别喜人.如下例: 我们可以

《神经网络与深度学习》笔记5-反向传播算法(上)

《神经网络与深度学习》笔记6-反向传播算法(下)

BP反向传播算法的工作原理How the backpropagation algorithm works

In the last chapter we saw how neural networks can learn their weights and biases using the gradient descent algorithm. There was, however, a gap in our explanation: we didn't discuss how to compute the gradient of the cost function. That's quite a g

【神经网络和深度学习】笔记 - 第二章 反向传播算法

上一章中我们遗留了一个问题,就是在神经网络的学习过程中,在更新参数的时候,如何去计算损失函数关于参数的梯度.这一章,我们将会学到一种快速的计算梯度的算法:反向传播算法. 这一章相较于后面的章节涉及到的数学知识比较多,如果阅读上有点吃力的话也可以完全跳过这一章,把反向传播当成一个计算梯度的黑盒即可,但是学习这些数学知识可以帮助我们更深入的理解神经网络. 反向传播算法的核心目的是对于神经网络中的任何weight或bias计算损失函数$C$关于它们的偏导数$\frac{\partial C}{\par

2. 深度学习与神经网络基础

1. 人工智能.机器学习和深度学习的概念及关系 人工智能(Artificial Intelligence, AI)--为机器赋予人的智能,即计算机能够像人类一样完成更智能的工作. 机器学习是实现人工智能的一种手段.何为"学习"?"如果一个程序可以在任务T上,随着经验E的增加,效果P也可以随之增加,则称这个程序可以从经验中学习." 对传统机器学习而言,通常需要进行特征提取,而这并不简单.深度学习解决的核心问题之一就是自动地将简单的特征组合成更复杂的特征,并使用这些组合