BP神经网络详细讲解
PS:这篇介绍神经网络是很详细的,有一步一步的推导公式!神经网络是DL(深度学习)的基 础。 如果对神经网络已经有所了解,可以直接跳到 “三、BP 算法的执行步骤“ 部分,算法框架清晰 明了。 另外,如果对 NN 很感兴趣,也可以参阅最后两篇参考博文,也很不错! 学习是神经网络一种最重要也最令人注目的特点。在神经网络的发展进程中,学习算法的研究有 着十分重要的地位。目前,人们所提出的神经网络模型都是和学习算 法相应的。所以,有时人 们并不去祈求对模型和算法进行严格的定义或区分。有的模型可以有多种算法.而有的算法可能 可用于多种模型。不过,有时人们也称算法 为模型。 自从 40 年代 Hebb 提出的学习规则以来,人们相继提出了各种各样的学习算法。其中以在 1986 年 Rumelhart 等提出的误差反向传播法,即 BP(error BackPropagation)法影响最为广泛。直到 今天,BP 算法仍然是自动控制上最重要、应用最多的有效算法。 1.2.1 神经网络的学习机理和机构 在神经网络中,对外部环境提供的模式样本进行学习训练,并能存储这种模式,则称为感知器; 对外部环境有适应能力,能自动提取外部环境变化特征,则称为认知器。 神经网络在学习中,一般分为有教师和无教师学习两种。感知器采用有教师信号进行学习,而认 知器则采用无教师信号学习的。在主要神经网络如 BP 网 络,Hopfield 网络,ART 网络和 Kohonen 网络中;BP 网络和 Hopfield 网络是需要教师信号才能进行学习的;而 ART 网络和 Kohonen 网络则无需教师信号就可以学习。所谓教师信号,就是在神经网络学习中由外部提供 的模式样本信号。 一、感知器的学习结构 感知器的学习是神经网络最典型的学习。 目前,在控制上应用的是多层前馈网络,这是一种感知器模型,学习算法是BP 法,故是有教师 学习算法。 一个有教师的学习系统可以用图 1—7 表示。这种学习系统分成三个部分:输入部,训练部和输 出部。 图 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)完全一样,则学习过程结束。 神经网络的学习一般需要多次重复训练,使误差值逐渐向零趋近,最后到达零。则这时才会使输 出与期望一致。故而神经网络的学习是消耗一定时期的,有的学习过程要重复很多次,甚至达万 次级。原因在于神经网络的权系数 W 有很多分量 W1,W2,----Wn;也即是一个多参数修改系 统。系统的参数的调整就必定耗时耗量。目前,提高神经网络的学习速度,减少学习重复次数是 十分重要的研究课题,也是实时控制中的关键问题。 二、感知器的学习算法 感知器是有单层计算单元的神经网络,由线性元件及阀值元件组成。感知器如图 1-9 所示。 图 1-9感知器结构 感知器的数学模型: (1-12) 其中:f[.]是阶跃函数,并且有 (1-13) θ是阀值。 感知器的最大作用就是可以对输入的样本分类, 故它可作分类器, 感知器对输入信号的分类如下: (1-14) 即是,当感知器的输出为 1 时,输入样本称为 A 类;输出为-1 时,输入样本称为 B 类。从上可 知感知器的分类边界是: (1-15) 在输入样本只有两个分量 X1,X2 时,则有分类边界条件: (1-16) 即 W1 X1 +W2 X2 -θ=0(1-17) 也可写成 (1-18) 这时的分类情况如固 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-20) 感知器学习算法步骤如下: 1.对权系数 w 置初值 对权系数 w=(W1.W2,…,Wn,Wn+1 )的各个分量置一个较小的零随机值,但 Wn+1=-θ 。 并记为 Wl (0),W2 (0),…,Wn (0),同时有 Wn+1(0)=-θ 。这里 Wi (t)为 t 时刻从第 i 个 输入上的权系数,i=1,2,…,n。Wn+1 (t)为 t 时刻时的阀值。 图 1-10 感知器的分类例子 2.输入一样本 X=(X1,X2,…,Xn+1 )以及它的期望输出 d。 期望输出值 d 在样本的类属不同时取值不同。 如果 x 是 A 类, 则取 d=1,如果 x 是 B 类, 则取-1。 期望输出 d 也即是教师信号。 3.计算实际输出值 Y 4.根据实际输出求误差 e e=d—Y(t)(1-21) 5.用误差 e 去修改权系数 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的真值: X 1 0011 0101X 2 X 1 V X 2 0111 以 X1VX2=1 为 A 类,以 X1VX2=0 为 B 类,则有方程组 (1-23) 即有: (1-24) 从式(1—24)有: W1≥θ,W2≥θ 令 W1 =1,W2 =2 则有: θ ≤1 取θ=0.5 则有:X1+X2-0.5=0,分类情况如图 1—11 所示。 图 1-11 逻辑函数 X1 VX2的分类 1.2.2 神经网络学习的梯度算法 从感如器的学习算法可知,学习的目的是在于修改网络中的权系数,使到网络对于所输入的模式 样本能正确分类。当学习结束时,也即神经网络能正确分类时,显然 权系数就反映了同类输人 模式样本的共同特征。换句话讲,权系数就是存储了的输人模式。 由于权系数是分散存在的,故 神经网络自然