本文比较乱,仅适合本人自己查看

BP 算法由信号的正向传播和误创差的反向传播的两个过程组成的。正向传播的过程中,训练样本从输入层 进入网络,再经过隐含层输出到输出层。若输出层的实际输出与最后的期望输出有出入,则将误差(输出值与期望值的差值)方向传播,若误差为零,则结束学习算法。

     反向传播时,将输出误差(期望输出与实际输出之差)按原通路反传计算,通过隐层反向,直至输入层,在反传过程中将误差分摊给各层的各个单元,获得各层各单元的误差信号,并将其作为修正各单元权值的根据。这一计算过程使用梯度下降法完成,在不停地调整各层神经元的权值和阈值后,使误差信号减小到最低限度。

权值和阈值不断调整的过程,就是网络的学习与训练过程,经过信号正向传播与误差反向传播,权值和阈值的调整反复进行,一直进行到预先设定的学习训练次数,或输出误差减小到允许的程度。

基本思想如下:(摘自百度百科)

学习过程由信号的正向传播与误差的反向传播两个过程组成。正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。这种信号正向传播与误差反向传播的各层权值调整过程,是周而复始地进行的。权值不断调整的过程,也就是网络的学习训练过程。此过程一直进行到网络输出的误差减少到可接受的程度,或进行到预先设定的学习次数为止。

算法实行步骤:(摘自百度百科)

(1)组成输入模式由输入层经过隐含层向输出层的“模式顺传播”过程。
(2)网络的期望输出与实际输出之差的误差信号由输出层经过隐含层逐层休整连接权的“误差逆传播”过程。
(3)由“模式顺传播”与“误差逆传播”的反复进行的网络“记忆训练”过程。
(4)网络趋向收敛即网络的总体误差趋向极小值的“学习收敛”过程。
在训练阶段中,训练实例重复通过网络,同时修正各个权值,改变连接权值的目的是最小化训练集误差率。继续网络训练直到满足一个特定条件为止,终止条件可以使网络收敛到最小的误差总数,可以是一个特定的时间标准,也可以是最大重复次数。

    不足(摘自百度百科)

虽然BP算法得到广泛的应用,但它也存在不足,其主要表现在训练过程不确定上,具体如下。
(1)训练时间较长。对于某些特殊的问题,运行时间可能需要几个小时甚至更长,这主要是因为学习率太小所致,可以采用自适应的学习率加以改进。
(2)完全不能训练。训练时由于权值调整过大使**函数达到饱和,从而使网络权值的调节几乎停滞。为避免这种情况,一是选取较小的初始权值,二是采用较小的学习率。
(3)易陷入局部极小值。BP算法可以使网络权值收敛到一个最终解,但它并不能保证所求为误差超平面的全局最优解,也可能是一个局部极小值。这主要是因为BP算法所采用的是梯度下降法,训练是从某一起始点开始沿误差函数的斜面逐渐达到误差的最小值,故不同的起始点可能导致不同的极小值产生,即得到不同的最优解。如果训练结果未达到预定精度,常常采用多层网络和较多的神经元,以使训练结果的精度进一步提高,但与此同时也增加了网络的复杂性与训练时问。
(4)“喜新厌旧”。训练过程中,学习新样本时有遗忘旧样本的趋势


推导:

BP(梯度传播)算法 backpropagation

后面摘录自:https://www.cnblogs.com/HolyShine/p/6413653.html

多层网络的训练需要一种强大的学习算法,其中BP(errorBackPropagation)算法就是成功的代表,它是迄今最成功的神经网络学习算法。

今天就来探讨下BP算法的原理以及公式推导吧。

神经网络

  先来简单介绍一下神经网络,引入基本的计算公式,方便后面推导使用

BP(梯度传播)算法 backpropagation

图1 神经网络神经元模型

  图1就是一个标准的M-P神经元模型。

【神经元工作流程】

  每个神经元接受n个(图1中只有3个)来自其他神经元或者直接输入的输入信号(图1中分别为x0,x1,x2),这些输入信号分别与每条“神经”的权重相乘,并累加输入给当前神经元。每个神经元设定有一个阈值θ(图1中的b),累计值需要减去这个阈值,并且将最终结果通过“**函数”(图1中的f)挤压到(0,1)范围内,最后输出。

  总结一下,神经元的工作流程主要有3步:

  ①累计输入的信号与权重。

    BP(梯度传播)算法 backpropagation

  ②将权重与设定的阈值相减

       BP(梯度传播)算法 backpropagation

  ③将第2步得出的结果送给**函数(一般是sigmoid函数),输出

          BP(梯度传播)算法 backpropagation

 

【多层前馈神经网络】

  将上面的神经元按照一定的层次结构连接起来,就得到了神经网络。

BP(梯度传播)算法 backpropagation

  图2 多层前馈神经网络

 

  图2显示的是一个3层(1个输入层,1个隐藏层,1个输出层)的神经网络。

  像这样的形成层级结构,每层神经元与下一层神经元全连接(每层的每个神经元到下一层的每个神经元都有连接),神经元之间不存在同层连接,也不存在跨层连接的神经网络通常被称为“多层前馈神经网络”。

【神经网络工作流程】

  假定有数据集D:

BP(梯度传播)算法 backpropagation

  输入神经网络,同样假定就是图2这个3层前馈神经网络,我们来列一下,图2这个网络要通过这些训练集来训练得到多少个参数。

  图2的神经网络有n个输入神经元(记为x1、x2....xn)、m个隐藏层神经元(记为h1,h2,...,hm),k个输出神经元(记为y1,y2,...,yk),通过训练,我们要获得下面几种数值

  ①输入层到隐藏层的权值:n x m 个

  ②隐藏层到输出层的权值:m x k 个

  ③m个隐藏层阈值与k个输出层阈值

  训练完成后,通过测试集样例与训练出的参数,可以直接得到输出值来判断所属分类(分类问题)

BP算法

  神经网络的运行过程清楚了,那么训练过程是怎么样的呢?

  我们知道,训练的任务是:

      通过某种算法,习得上面所讲的n x m + m x k + m + k = (n+k+1) x m + k 个参数

  这里我们使用的就是BP算法。

  先来根据神经元工作流程来定义几个量,这里再贴一下修改后的神经网络流程图

图3 3层前馈神经网络图

【定义】

    第i个输入神经元到第j个隐藏层神经元的权重:Vij

    第i个隐藏层神经元到第j个输出层神经元的权重:Wij

    第i个隐藏层神经元的输出:bi

    第i个输出层的阈值:θi

    第j个隐藏层神经元的输入:

          BP(梯度传播)算法 backpropagation

    第q个输出神经元的额输入:

        BP(梯度传播)算法 backpropagation 

  假定通过我们的神经网络,对于训练样例BP(梯度传播)算法 backpropagation网络输出为BP(梯度传播)算法 backpropagation

   假定完美输出应该为BP(梯度传播)算法 backpropagation例如,对于k分类问题,若训练样例p属于第1类,则yp=(1,0,0,0...,0)

  那么一轮训练我们的均方误差为:

  BP(梯度传播)算法 backpropagation

  实际上

BP(梯度传播)算法 backpropagation

 

  其中f函数为sigmoid函数。

  这下,我们的目标就转化为:

    寻得一组合适的参数序列,使得(1)式的值(均方误差)最小。

  在我的上一篇随笔里也提到过这个问题,这种形式的问题比较适合使用梯度下降算法,BP正是采取了这个策略,以目标的负梯度方向对参数进行调整。

【梯度下降求解参数】

  梯度下降的基本思想是:设定参数的初始值,通过一个学习速率η和当前梯度,来逐渐步进参数,以求拟合一个局部最优的参数

  一般的参数迭代过程如下:

    BP(梯度传播)算法 backpropagation

  不清楚梯度下降算法的可以看一下我另一篇随笔:http://www.cnblogs.com/HolyShine/p/6403116.html

  神经网络的一次迭代,就是参数的一次“步进”。

  接下来我们使用梯度下降分别推导几个参数的迭代公式

  我们以隐藏层中第h个神经元为参照对象,求解他的输入权重V和输出权重W,以及阈值γ;以输出层中第j个神经元为输出参照,求解他的阈值θ

   <隐藏层到输出层的权重Whj>

  根据梯度下降算法,权重参数的步进为:

BP(梯度传播)算法 backpropagation

  由复合函数求导公式以及式(1)式(2):

BP(梯度传播)算法 backpropagation

  其中,第二项是sigmoid函数求导,由于sigmoid函数有如下的性质:

BP(梯度传播)算法 backpropagation

  所以

BP(梯度传播)算法 backpropagation

  第一项和第三项的推导也列在这里

BP(梯度传播)算法 backpropagation

BP(梯度传播)算法 backpropagation

  最终(3)式变为:

  BP(梯度传播)算法 backpropagation

  这些量都是一轮训练中已知的,因此可以解得梯度的大小,用于参数的更新工作

  其他参数的求解基本一致。


基本思想
(1)组成输入模式由输入层经过隐含层向输出层的“模式顺传播”过程。
(2)网络的期望输出与实际输出之差的误差信号由输出层经过隐含层逐层休整连接权的“误差逆传播”过程。
(3)由“模式顺传播”与“误差逆传播”的反复进行的网络“记忆训练”过程。
(4)网络趋向收敛即网络的总体误差趋向极小值的“学习收敛”过程。
在训练阶段中,训练实例重复通过网络,同时修正各个权值,改变连接权值的目的是最小化训练集误差率。继续网络训练直到满足一个特定条件为止,终止条件可以使网络收敛到最小的误差总数,可以是一个特定的时间标准,也可以是最大重复次数。
(1)组成输入模式由输入层经过隐含层向输出层的“模式顺传播”过程。
(2)网络的期望输出与实际输出之差的误差信号由输出层经过隐含层逐层休整连接权的“误差逆传播”过程。
(3)由“模式顺传播”与“误差逆传播”的反复进行的网络“记忆训练”过程。
(4)网络趋向收敛即网络的总体误差趋向极小值的“学习收敛”过程。
在训练阶段中,训练实例重复通过网络,同时修正各个权值,改变连接权值的目的是最小化训练集误差率。继续网络训练直到满足一个特定条件为止,终止条件可以使网络收敛到最小的误差总数,可以是一个特定的时间标准,也可以是最大重复次数。
 

相关文章: