MATLAB神经网络编程(二)——线性神经网络

《MATLAB神经网络编程》 化学工业出版社 读书笔记
第四章 前向型神经网络 4.2 线性神经网络

本文是《MATLAB神经网络编程》书籍的阅读笔记,其中涉及的源码、公式、原理都来自此书,若有不理解之处请参阅原书。

(一)简介
线性神经网络是最简单的一种神经网络,可以由一个或者多个线性神经元组成。20世纪50年代由Widrow和Hoff提出的自适应线性元(Adaptive Linear Element,Adaline)是线性神经网络最早最典型的代表。

线性神经网络与感知器的区别在于:线性神经网络的神经元传递函数是线性函数,因此线性神经网络的输出可以取任意值,而感知器的输出只可能是0或者1。

线性神经网络在收敛速度与精度上都比感知器要高,但是同感知器一样,线性神经网络只能解决线性分离问题。

感知器的每一个输入都有一个输出与之相对应。参照输出向量与期望输出向量的差别,调整网络的权值跟阈值,使得训练误差的平方和最小或者小于一定值,这种学习规则就是Widrow-Hoff学习规则,称为LMS(Least Mean Square)算法。

(二)线性神经网络的模型

1,神经元模型。
从网络结构看,与感知器结构类似,不同的神经元的传递函数是线性传递函数purelin.
1

purelin函数的结构:

2

特点是输入等于输出,不做人任何处理。所以向量形式可以表示为:

Y=purelin(V)=purelin(WX+b)=WX+b

2,网络结构

若网络中包含多个神经元节点,就能形成多个输出,这种神经网络就是Madaline网络。

3

其中向量P是Rⅹ1维的输入向量,S为神经元个数,W是SⅹR维权值矩阵,B是Sⅹ1维偏差矩阵,Y是Sⅹ1维输出矩阵。

(三)线性神经网络的学习:W—H学习规则

1,W-H规则简介

W-H学习规则是由Widrow与Hoff提出的用来修正权矢量的学习规则,所以称为W-H规则,由于采用LMS(最小均方和)作为判断网络收敛的准则,因此又称为LMS算法。与感知器类似,LMS在权值调整上基于纠错学习规则,但是LMS易于实现,得到广泛应用,成为自适应滤波的标准算法,也称为Δ规则。

4-1

d(n)是期望输出,x(n)w(n)可以认为是实际输出,e(n)表示二者误差。

5

图示最后的一个公式称为W-H学习规则,即最小均方差算法(LMS)。从公式中可以看出W-H学习规则的权值变化量:

ΔW=W(n+1)-W(n)

正比于输入矢量和输出误差。

2,学习速率η的选择。

上述W-H公式中的η称为学习速率,当其取较大值时可以加快网络的训练速度,但是如果值过大,会导致网络的稳定性降低和训练误差增加,实践证明,在一般的实际运用中,通常取接近1的数,或者取值为:

6

这样的选择可以达到既快速又正确的结果。这一取值可以采用MATLAB神经网络工具箱中的函数maxlinlr来实现,上图中的公式可以用下面函数来实现:

lr=0.99maxlinlr§

lr为学习速率。
采用W-H规则训练自适应性元件使其能够收敛的必要条件是被训练的输入矢量必须是线性独立的,且必须选择合适的学习速率以免产生振荡现象。

关于学习速率也可以参考文档:http://www.docin.com/p-797967931.html
上文中的部分截图也来自该文档。

3,W-H学习流程

第一步,设置变量和参数。

6.5

第二步,初始化。
7

第三步
8

第四步,判断是否满足收敛条件,若满足,算法结束;否则n值加一,继续第三步重新执行。
这一步的条件可以是:误差小于指定的值ε,即|e(n)|<ε;或者是权值变化已经很小,即|w(n+1)-w(n)|<ε。
另外,在实现时还应当设立最大迭代次数,以防止算法不收敛时程序进入死循环。

(四),线性神经网络与感知器对比。

9

(五),线性神经网络函数。

1,newlind函数。
功能:设计一个线性层,通过输入向量和目标向量来计算线性层的权值与阈值。返回地 线性层是已经训练完成的,可以直接使用。

10

注意:上图中的S即为这个线性层中的神经元个数。

其调用格式还有:

net=newlind(P,T,Pi)

P与T含义与上图相同,Pi为初始输入延迟状态的ID个单元阵列,每个元素Pi{i,k}都是一个Ri*Q维的矩阵,默认为空。(PS:这一句我真的不明白啊到底是什么意思啊啊啊);net是返回值,是一个线性层,注意,只是一层,神经元的个数是S个,并且已经训练完成,可以直接使用。

2,newlin函数
功能:建立一个未经训练的线性层
所谓的线性层是一个单独的层次,权函数是dotprod,输入函数是netsum,传递函数是purelin。线性层一般用作信号处理和预测中的自适应滤波器。

11

上图中的P的解释有误,应该是一个由R个输入元素的最大值和最小值组成的R*2维的输入矩阵(注意与newlind的区别,而与感知器的参数是类似的)。

3,learnwh函数。
功能:该函数是W-H学习函数,也称为Delta准则或者最小方差准则学习函数。
它可以修改神经元的权值和阈值,使得输出误差的平方和最小。它沿着误差平方和的下降最快方向连续调整网络的权值与阈值,由于线性网络的误差性能表明是抛物面,仅有一个最小值,因此可以保证网络是收敛的(直接摘自书籍,到底是什么意思啊啊啊啊),前提是学习速率不超出由maxlinlr计算得到的最大值。

12

参数太多了不一一解释,又兴起的话可以直接看书108页。重要的参数有:P是R*Q维输入向量,E是S*Q维误差向量,W是S*R维权值向量,LP是学习速率,如设定学习速率“P.lr=0.01”,这也是其默认值。

learnwh与上面两个函数的区别在于可调参数更多,可以设计自己想要的线性网络,比较适合高手使用。

4,maxlinlr函数。
功能:是分析函数,用来计算线性层的最大学习速率。

13

两种方式的分别针对的是带有阈值的线性层与不带有阈值的线性层。

5,其他函数

14

15

这里写图片描述


参考文档
http://www.docin.com/p-797967931.html

你可能感兴趣的:(java,java,后端)