反向传播BP模型

学习是神经网络一种最重要也最令人注目的特点。在神经网络的发展进程中,学习算法的研究有着十分重要的地位。目前,人们所提出的神经网络模型都是和学习算法相应的。所以,有时人们并不去祈求对模型和算法进行严格的定义或区分。有的模型可以有多种算法.而有的算法可能可用于多种模型。不过,有时人们也称算法 为模型。

自从40年代Hebb提出的学习规则以来,人们相继提出了各种各样的学习算法。其中以在1986年Rumelhart等提出的误差反向传播法,即BP(error BackPropagation)法影响最为广泛。直到今天,BP算法仍然是自动控制上最重要、应用最多的有效算法。

1.2.1 神经网络的学习机理和机构

在神经网络中,对外部环境提供的模式样本进行学习训练,并能存储这种模式,则称为感知器;对外部环境有适应能力,能自动提取外部环境变化特征,则称为认知器

神经网络在学习中,一般分为有教师和无教师(有监督和无监督)学习两种。感知器采用有教师信号进行学习,而认知器则采用无教师信号学习的。在主要神经网络如BP网络,Hopfield网络,ART网络和Kohonen网络中;BP网络和Hopfield网络是需要教师信号才能进行学习的;而ART网络和 Kohonen网络则无需教师信号就可以学习。所谓教师信号,就是在神经网络学习中由外部提供的模式样本信号。

一、感知器的学习结构

感知器的学习是神经网络最典型的学习。

目前,在控制上应用的是多层前馈网络,这是一种感知器模型,学习算法是BP法,故是有教师学习算法。

一个有教师的学习系统可以用图1—7表示。这种学习系统分成三个部分:输入部,训练部和输出部。

bp算法python bp算法的优缺点_感知器

图1-7  神经网络学习系统框图

输入部接收外来的输入样本X,由训练部进行网络的权系数W调整,然后由输出部输出结果。在这个过程中,期望的输出信号可以作为教师信号输入,由该教师信号与实际输出进行比较,产生的误差去控制修改权系数W。

学习机构可用图1—8所示的结构表示。

在图中,Xl ,X2 ,…,Xn ,是输入样本信号,W1 ,W2 ,…,Wn 是权系数。输入样本信号Xi 可以取离散值“0”或“1”。输入样本信号通过权系数作用,在u产生输出结果 ∑Wi Xi ,即有:

u=∑Wi Xi =W1 X1 +W2 X2 +…+Wn Xn

再把期望输出信号Y(t)和u进行比较,从而产生误差信号e。权值调整机构根据误差e去对学习系统的权系数进行修改,修改方向应使误差e变小,不断进行下去,使到误差e为零,这时实际输出值u和期望输出值Y(t)完全一样,则学习过程结束。

bp算法python bp算法的优缺点_反向传播_02

神经网络的学习一般需要多次重复训练,使误差值逐渐向零趋近,最后到达零。则这时才会使输出与期望一致。故而神经网络的学习是消耗一定时期的,有的学习过程要重复很多次,甚至达万次级。原因在于神经网络的权系数W有很多分量W1 ,W2,----Wn ;也即是一个多参数修改系统。系统的参数的调整就必定耗时耗量。目前,提高神经网络的学习速度,减少学习重复次数是十分重要的研究课题,也是实时控制中的关键问题。

二、感知器的学习算法

感知器是有单层计算单元的神经网络,由线性元件及阀值元件组成。感知器如图1-9所示。

bp算法python bp算法的优缺点_反向传播_03

图1-9   感知器结构

感知器的数学模型:

其中:f[.]是阶跃函数,并且有


θ是阀值。

感知器的最大作用就是可以对输入的样本分类,故它可作分类器,感知器对输入信号的分类如下:

即是,当感知器的输出为1时,输入样本称为A类;输出为-1时,输入样本称为B类。从上可知感知器的分类边界是:


在输入样本只有两个分量X1,X2时,则有分类边界条件:


     W1 X1 +W2 X2 -θ=0       (1-17)

也可写成

这时的分类情况如图1—10所示。

感知器的学习算法目的在于找寻恰当的权系数w=(w1.w2,…,Wn),使系统对一个特 定的样本x=(xt,x2,…,xn)能产生期望值d。当x分类为A类时,期望值d=1;X为B类 时,d=-1。为了方便说明感知器学习算法,把阀值θ并入权系数w中,同时,样本x也相应增加一 个分量xn+1 。故令:

Wn+1 =-θ,Xn+1 =1      (1-19)

则感知器的输出可表示为:

感知器学习算法步骤如下:
1.对权系数w置初值
对权系数w=(W1 .W2 ,…,Wn ,Wn+1 )的各个分量置一个较小的零随机值,但Wn+1 =
—g。并记为Wl (0),W2 (0),…,Wn (0),同时有Wn+1(0)=-θ 。这里Wi (t)为t时刻从第i个
输入上的权系数,i=1,2,…,n。Wn+1 (t)为t时刻时的阀值。

bp算法python bp算法的优缺点_感知器_04

图1-10 感知器的分类例子

2.输入一样本X=(X1 ,X2 ,…,Xn+1 )以及它的期望输出d。

期望输出值d在样本的类属不同时取值不同。如果x是A类,则取d=1,如果x是B类,则取-1。期望输出d也即是教师信号。

3.计算实际输出值Y

bp算法python bp算法的优缺点_bp算法python_05

4.根据实际输出求误差e

e=d—Y(t)       (1-21)

5.用误差e去修改权系数

bp算法python bp算法的优缺点_感知器_06

i=1,2,…,n,n+1      (1-22)

其中,η称为权重变化率,0<η≤1

在式(1—22)中,η的取值不能太大.如果1取值太大则会影响wi (t)的稳定;的取值也不能太小,太小则会使Wi (t)的求取过程收敛速度太慢。

当实际输出和期望值d相同时有:

Wi (t+1)=Wi (t)

6.转到第2点,一直执行到一切样本均稳定为止。

从上面式(1—14)可知,感知器实质是一个分类器,它的这种分类是和二值逻辑相应的。因此,感知器可以用于实现逻辑函数。下面对感知器实现逻辑函数的情况作一些介绍。

例:用感知器实现逻辑函数X1 VX2 的真值:

以X1VX2=1为A类,以X1VX2=0为B类,则有方程组


即有:


从式(1—24)有:

W1 ≥θ,W2 ≥θ

令 W1 =1,W2 =2

则有: θ ≤1

取   θ=0.5

则有:X1+X2-0.5=0,分类情况如图1—11所示。

bp算法python bp算法的优缺点_bp算法python_07

图1-11  逻辑函数X1 VX2 的分类

1.2.2 神经网络学习的梯度算法

从感如器的学习算法可知,学习的目的是在于修改网络中的权系数,使到网络对于所输入的模式样本能正确分类。当学习结束时,也即神经网络能正确分类时,显然 权系数就反映了同类输人模式样本的共同特征。换句话讲,权系数就是存储了的输入模式。由于权系数是分散存在的,故神经网络自然而然就有分布存储的特点。

前面的感知器的传递函数是阶跃函数,所以,它可以用作分类器。前面一节所讲的感知器学习算法因其传递函数的简单而存在局限性。

感知器学习算法相当简单,并且当函数线性可分时保证收敛。但它也存在问题:即函数不是线性可分时,则求不出结果;另外,不能推广到一般前馈网络中。

为了克服存在的问题,所以人们提出另一种算法——梯度算法(也即是LMS(最小均方误差)法)。

为了能实现梯度算法,故把神经元的激发函数改为可微分函数,例如Sigmoid函数,非对称Sigmoid函数为f(X)=1/(1+e-x ),导数f(x)*(1-f(x))对称Sigmoid函数f(X)=(1-e-x )/(1+e-x );而不采用式(1—13)的阶跃函数。

对于给定的样本集Xi (i=1,2,,n),梯度法的目的是寻找权系数W* ,使得f[W*. Xi ]与期望输出Yi尽可能接近。

设误差e采用下式表示:

其中,Yi ^=f〔W* ·Xi ]是对应第i个样本Xi 的实时输出

Yi 是对应第i个样本Xi 的期望输出。

要使误差e最小,可先求取e的梯度:

令  Uk =W. Xk ,则有:


即有:


最后有按负梯度方向修改权系数W的修改规则:


也可写成:


在上式(1—30),式(1—31)中,μ 是权重变化率,它视情况不同而取值不同,一般取0-1之间的小数。
很明显,梯度法比原来感知器的学习算法进了一大步。其关键在于两点:

1.神经元的传递函数采用连续的s型函数,容易求导,而不是阶跃函数;

2.对权系数的修改采用误差的梯度去控制,而不是采用误差去控制。故而有更好的动态特能,即加强了收敛进程。

但是梯度法对于实际学习来说,仍然是感觉太慢;所以,这种算法仍然是不理想的。

1.2.3 反向传播学习的BP算法

反向传播算法也称BP算法。由于这种算法在本质上是一种神经网络学习的数学模型,所以,有时也称为BP模型。

BP算法是为了解决多层前向神经网络的权系数优化而提出来的;所以,BP算法也通常暗示着神经网络的拓扑结构是一种无反馈的多层前向网络。故而.有时也称无反馈多层前向网络为BP模型。

在这里,并不要求过于严格去争论和区分算法和模型两者的有关异同。感知机学习算法是一种单层网络的学习算法。在多层网络中.它只能改变最后权系数。因此, 感知机学习算法不能用于多层神经网络的学习。1986年,Rumelhart提出了反向传播学习算法,即BP(backpropagation)算法。这 种算法可以对网络中各层的权系数进行修正,故适用于多层网络的学习。BP算法是目前最广泛用的神经网络学习算法之一,在自动控制中是最有用的学习算法。

一、BP算法的原理

BP算法是用于前馈多层网络的学习算法,前馈多层网络的结构一般如图1—12所示

bp算法python bp算法的优缺点_感知器_08

图1-12  网络学习结构

它含有输人层、输出层以及处于输入输出层之间的中间层。中间层有单层或多层,由于它们和外界没有直接的联系,故也称为隐层。在隐层中的神经元也称隐单元。 隐层虽然和外界不连接.但是,它们的状态则影响输入输出之间的关系。这也是说,改变隐层的权系数,可以改变整个多层神经网络的性能。

1.正向传播

输入的样本从输入层经过隐单元一层一层进行处理,通过所有的隐层之后,则传向输出层;在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。

2.反向传播

反向传播时,把误差信号按原来正向传播的通路反向传回,并对每个隐层的各个神经元的权系数进行修改,以望误差信号趋向最小。

二、BP算法的数学表达


一. 网络结构






 经典的BP网络,其具体结构如下:

   

bp算法python bp算法的优缺点_感知器_09

bp算法python bp算法的优缺点_感知器_10

 请特别注意上面这个图的一些符号说明如下:

bp算法python bp算法的优缺点_神经网络_11



二.  学习算法




     1. 信号的前向传递过程

          

bp算法python bp算法的优缺点_bp算法python_12


              请特别注意上述公式中的下标,这里,权值矩阵包含了神经元节点本身的偏置,所以权值矩阵多了一列。




   2.   误差反向传导过程


         

         

bp算法python bp算法的优缺点_感知器_13

 

bp算法python bp算法的优缺点_神经网络_14








bp算法python bp算法的优缺点_反向传播_15





bp算法python bp算法的优缺点_反向传播_16


bp算法python bp算法的优缺点_反向传播_17




bp算法python bp算法的优缺点_bp算法python_18




bp算法python bp算法的优缺点_反向传播_19




三.  小结


     


 信号的前向传递和误差反向传递过程都可以用递归公式描述。其实,就几个公式而已,把相关的几个重要公式再次总结如下:

      

bp算法python bp算法的优缺点_反向传播_20




bp算法python bp算法的优缺点_反向传播_21

bp算法python bp算法的优缺点_感知器_22

(1-12)