📄 4.htm
字号:
<TR>
<TD width="100%" height=144>即有:
<TABLE cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
<TBODY>
<TR>
<TD width="76%"><IMG height=124 src="4.files/4.2.ht15.gif" width=119
border=0></TD>
<TD width="24%">(1-24)</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" height=487>
<P>从式(1—24)有:
<P>W<SUB>1</SUB>≥θ,W<SUB>2</SUB>≥θ</FONT></SPAN></P>
<P><FONT size=3>令 W<SUB>1</SUB>=1,W<SUB>2</SUB>=2</SPAN></FONT></P>
<P><FONT size=3>则有:</FONT><FONT size=3>θ</FONT>≤1</P>
<P>取 <FONT size=3>θ=0.5</FONT></P>
<P><FONT size=3>则有:X1+X2-0.5=0,分类情况如图1—11所示。</FONT>
<P align=center><IMG height=339 src="4.files/4.2.ht16.gif" width=384
border=0></P></TD></TR>
<TR>
<TD width="100%" height=286>
<P align=center>图1-11 逻辑函数X<SUB>1</SUB>VX<SUB>2</SUB>的分类</P>
<P>1.2.2 神经网络学习的梯度算法</P>
<P>从感如器的学习算法可知,学习的目的是在于修改网络中的权系数,使到网络对于所输入的模式样本能正确分类。当学习结束时,也即神经网络能正确分类时,显然权系数就反映了同类输人模式样本的共同特征。换句话讲,权系数就是存储了的输人模式。由于权系数是分散存在的,故神经网络自然而然就有分布存储的特点。</P>
<P>前面的感知器的传递函数是阶跃函数,所以,它可以用作分类器。前面一节所讲的感知器学习算法因其传递函数的简单而存在局限性。</P>
<P>感知器学习算法相当简单,并且当函数线性可分时保证收敛。但它也存在问题:即函数不是线性可分时,则求不出结果;另外,不能推广到一般前馈网络中。</P>
<P>为了克服存在的问题,所以人们提出另一种算法——梯度算法(也即是LMS法)。</P>
<P>为了能实现梯度算法,故把神经元的激发函数改为可微分函数,例如Sigmoid函数,非对称Sigmoid函数为f(X)=1/(1+e<SUP>-x</SUP>),对称Sigmoid函数f(X)=(1-e<SUP>-x</SUP>)/(1+e<SUP>-x</SUP>);而不采用式(1—13)的阶跃函数。</P>
<P>对于给定的样本集X<SUB>i</SUB>(i=1,2,,n),梯度法的目的是寻找权系数W<SUP>*</SUP>,使得f[W<SUP>*.</SUP>X<SUB>i</SUB>]与期望输出Yi尽可能接近。</P>
<P>设误差e采用下式表示:</P>
<TABLE cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
<TBODY>
<TR>
<TD width="77%"><IMG height=39 src="4.files/4.2.ht17.gif" width=167
border=0></TD>
<TD width="23%">(1-25)</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" height=115>
<P>其中,Y<SUB>i</SUB>=f〔W<SUP>*</SUP>·X<SUB>i</SUB>]是对应第i个样本X<SUB>i</SUB>的实时输出
<P>Y<SUB>i</SUB>是对应第i个样本X<SUB>i</SUB>的期望输出。</P>
<P>要使误差e最小,可先求取e的梯度:</P>
<TABLE cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
<TBODY>
<TR>
<TD width="77%"><IMG height=44 src="4.files/4.2.ht18.gif" width=202
border=0></TD>
<TD width="23%">(1-26)</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" height=43>
<TABLE cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
<TBODY>
<TR>
<TD width="8%">
<P>其中:</P></TD>
<TD width="69%"><IMG height=39 src="4.files/4.2.ht19.gif" width=160
border=0></TD>
<TD width="23%">(1-27)</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" height=103>
<P>令 U<SUB>k</SUB>=W<SUP>.</SUP>X<SUB>k</SUB>,则有:
<TABLE cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
<TBODY>
<TR>
<TD width="77%"><IMG height=71 src="4.files/4.2.ht20.gif" width=271
border=0></TD>
<TD width="23%">(1-28)</TD></TR></TBODY></TABLE></P></TD></TR>
<TR>
<TD width="100%" height=67>
<P>即有:
<TABLE cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
<TBODY>
<TR>
<TD width="77%"><IMG height=40 src="4.files/4.2.ht21.gif" width=266
border=0></TD>
<TD width="23%">(1-29)</TD></TR></TBODY></TABLE></P></TD></TR>
<TR>
<TD width="100%" height=68>
<P>最后有按负梯度方向修改权系数W的修改规则:
<TABLE cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
<TBODY>
<TR>
<TD width="77%"><IMG height=41 src="4.files/4.2.ht22.gif" width=328
border=0></TD>
<TD width="23%">(1-30)</TD></TR></TBODY></TABLE></P></TD></TR>
<TR>
<TD width="100%" height=72>
<P>也可写成:
<TABLE cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
<TBODY>
<TR>
<TD width="77%"><IMG height=45 src="4.files/4.2.ht23.gif" width=264
border=0></TD>
<TD width="23%">(1-31)</TD></TR></TBODY></TABLE></P></TD></TR>
<TR>
<TD width="100%" height=794>
<P>在上式(1—30),式(1—31)中,<SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Times New Roman; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><FONT
size=3>μ</FONT></SPAN>是权重变化率,它视情况不同而取值不同,一般取0-1之间的小数。<BR>很明显,梯度法比原来感知器的学习算法进了一大步。其关键在于两点:
<P>1.神经元的传递函数采用连续的s型函数,而不是阶跃函数;</P>
<P>2.对权系数的修改采用误差的梯度去控制,而不是采用误差去控制。故而有更好的动态特能,即加强了收敛进程。</P>
<P>但是梯度法对于实际学习来说,仍然是感觉太慢;所以,这种算法仍然是不理想的。</P>
<P>1.2.3 反向传播学习的BP算法</P>
<P>反向传播算法也称BP算法。由于这种算法在本质上是一种神经网络学习的数学模型,所以,有时也称为BP模型。</P>
<P>BP算法是为了解决多层前向神经网络的权系数优化而提出来的;所以,BP算法也通常暗示着神经网络的拓扑结构是一种无反馈的多层前向网络。故而.有时也称无反馈多层前向网络为BP模型。</P>
<P>在这里,并不要求过于严格去争论和区分算法和模型两者的有关异同。感知机学习算法是一种单层网络的学习算法。在多层网络中.它只能改变最后权系数。因此,感知机学习算法不能用于多层神经网络的学习。1986年,Rumelhart提出了反向传播学习算法,即BP(backpropagation)算法。这种算法可以对网络中各层的权系数进行修正,故适用于多层网络的学习。BP算法是目前最广泛用的神经网络学习算法之一,在自动控制中是最有用的学习算法。</P>
<P>一、BP算法的原理</P>
<P>BP算法是用于前馈多层网络的学习算法,前馈多层网络的结构一般如图1—12所示</P>
<P align=center><IMG height=449 src="4.files/4.2.ht24.gif" width=588
border=0></P></TD></TR>
<TR>
<TD width="100%" height=175>
<P align=center>图1-12 网络学习结构</P>
<P>它含有输人层、输出层以及处于输入输出层之间的中间层。中间层有单层或多层,由于它们和外界没有直接的联系,故也称为隐层。在隐层中的神经元也称隐单元。隐层虽然和外界不连接.但是,它们的状态则影响输入输出之间的关系。这也是说,改变隐层的权系数,可以改变整个多层神经网络的性能。</P>
<P>设有一个m层的神经网络,并在输入层加有样本X;设第k层的i神经元的输入总和表示为U<SUB>i</SUB><SUP>k</SUP>,输出X<SUB>i</SUB><SUP>k</SUP>;从第k—1层的第j个神经元到第k层的第i个神经元的权系数为W<SUB>ij</SUB>各个神经元的激发函数为f,则各个变量的关系可用下面有关数学式表示:</P>
<TABLE cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
<TBODY>
<TR>
<TD
width="79%">X<SUB>i</SUB><SUP>k</SUP>=f(U<SUB>i</SUB><SUP>k</SUP>) </TD>
<TD width="21%">(1-32)</TD></TR>
<TR>
<TD width="79%"><IMG height=40 src="4.files/4.2.ht25.gif" width=160
border=0></TD>
<TD width="21%">(1-33)</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" height=245>
<P>反向传播算法分二步进行,即正向传播和反向传播。这两个过程的工作简述如下。
<P>1.正向传播</P>
<P>输入的样本从输入层经过隐单元一层一层进行处理,通过所有的隐层之后,则传向输出层;在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。</P>
<P>2.反向传播</P>
<P>反向传播时,把误差信号按原来正向传播的通路反向传回,并对每个隐层的各个神经元的权系数进行修改,以望误差信号趋向最小。</P>
<P>二、BP算法的数学表达</P>
<P>BP算法实质是求取误差函数的最小值问题。这种算法采用非线性规划中的最速下降方法,按误差函数的负梯度方向修改权系数。</P>
<P>为了说明BP算法,首先定义误差函数e。取期望输出和实际输出之差的平方和为误差函数,则有:</P>
<TABLE cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
<TBODY>
<TR>
<TD width="79%"><IMG height=40 src="4.files/4.2.ht26.gif" width=176
border=0></TD>
<TD width="21%">(1-34)</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" height=199>
<P>其中:Y<SUB>i</SUB>是输出单元的期望值;它也在这里用作教师信号;
<P>X<SUB>i</SUB><SUP>m</SUP>是实际输出;因为第m层是输出层。</P>
<P>由于BP算法按误差函数e的负梯度方向修改权系数,故权系数W<SUB>ij</SUB>的修改量Aw<SUB>ij</SUB>,和e</P>
<TABLE cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
<TBODY>
<TR>
<TD width="79%"><IMG height=48 src="4.files/4.2.ht27.gif" width=138
border=0></TD>
<TD width="21%">(1-35)</TD></TR>
<TR>
<TD width="79%"><FONT size=2>也可写成</FONT></TD>
<TD width="21%"></TD></TR>
<TR>
<TD width="79%"><IMG height=51 src="4.files/4.2.ht28.gif" width=152
border=0></TD>
<TD width="21%">(1-36)</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" height=521>
<P>其中:<SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">η<SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></SPAN></SPAN>为学习速率,即步长。
<P>很明显,根据BP算法原则,求ae/aW<SUB>ij</SUB>最关键的。下面求ae/aW<SUB>ij</SUB>;有</P>
<TABLE cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
<TBODY>
<TR>
<TD width="79%"><IMG height=55 src="4.files/4.2.ht30.gif" width=153
border=0></TD>
<TD width="21%">(1-37)</TD></TR>
<TR>
<TD width="79%"><FONT size=2>由于</FONT></TD>
<TD width="21%"></TD></TR>
<TR>
<TD width="79%"><IMG height=63 src="4.files/4.2.ht31.gif" width=303
border=0></TD>
<TD width="21%">(1-38)</TD></TR>
<TR>
<TD width="79%"><FONT size=2>故而</FONT></TD>
<TD width="21%"></TD></TR>
<TR>
<TD width="79%"><IMG height=49 src="4.files/4.2.ht32.gif" width=159
border=0></TD>
<TD width="21%">(1-39)</TD></TR>
<TR>
<TD width="79%"><FONT size=2>从而有</FONT></TD>
<TD width="21%"></TD></TR>
<TR>
<TD width="79%"><IMG height=100 src="4.files/4.2.ht33.gif" width=206
border=0></TD>
<TD width="21%">(1-40)</TD></TR>
<TR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -