人工神经网络及其应用实例.docx

上传人:b****7 文档编号:10433582 上传时间:2023-02-11 格式:DOCX 页数:60 大小:292.79KB
下载 相关 举报
人工神经网络及其应用实例.docx_第1页
第1页 / 共60页
人工神经网络及其应用实例.docx_第2页
第2页 / 共60页
人工神经网络及其应用实例.docx_第3页
第3页 / 共60页
人工神经网络及其应用实例.docx_第4页
第4页 / 共60页
人工神经网络及其应用实例.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

人工神经网络及其应用实例.docx

《人工神经网络及其应用实例.docx》由会员分享,可在线阅读,更多相关《人工神经网络及其应用实例.docx(60页珍藏版)》请在冰豆网上搜索。

人工神经网络及其应用实例.docx

人工神经网络及其应用实例

 

人工神经网络及其应用实例

 

人工神经网络是在现代神经科学研究成果基础上提出的一种抽

象数学模型,它以某种简化、抽象和模拟的方式,反映了大脑功能的

若干基本特征,但并非其逼真的描写。

人工神经网络可概括定义为:

由大量简单元件广泛互连而成的复

杂网络系统。

所谓简单元件,即人工神经元,是指它可用电子元件、

光学元件等模拟,仅起简单的输入输出变换y=σ(x)的作用。

下图是3

中常用的元件类型:

线性元件:

y=0.3x,可用线性代数法分析,但是功能有限,现在

已不太常用。

 

2

 

1.5

 

1

 

0.5

 

0

 

-0.5

 

-1

 

-1.5

 

-2

-6

-4

-2

0

2

4

6

 

连续型非线性元件:

y=tanh(x),便于解析性计算及器件模拟,是

当前研究的主要元件之一。

Page1of25

 

2

 

1.5

 

1

 

0.5

 

0

 

-0.5

 

-1

 

-1.5

 

-2

-6

-4

-2

0

2

4

6

 

⎧1,x≥0

⎩-1,x<0

 

,便于理论分析及阈值逻辑器件

实现,也是当前研究的主要元件之一。

 

2

 

1.5

 

1

 

0.5

 

0

 

-0.5

 

-1

 

-1.5

 

-2

-6

-4

-2

0

2

4

6

 

Page2of25

离散型非线性元件:

y=⎨

 

每一神经元有许多输入、输出键,各神经元之间以连接键(又称

突触)相连,它决定神经元之间的连接强度(突触强度)和性质(兴

奋或抑制),即决定神经元间相互作用的强弱和正负,共有三种类型:

兴奋型连接、抑制型连接、无连接。

这样,N个神经元(一般N很大)

构成一个相互影响的复杂网络系统,通过调整网络参数,可使人工神

经网络具有所需要的特定功能,即学习、训练或自组织过程。

一个简

单的人工神经网络结构图如下所示:

 

上图中,左侧为输入层(输入层的神经元个数由输入的维度决定),

右侧为输出层(输出层的神经元个数由输出的维度决定),输入层与

输出层之间即为隐层。

输入层节点上的神经元接收外部环境的输入模式,并由它传递给

相连隐层上的各个神经元。

隐层是神经元网络的内部处理层,这些神

经元在网络内部构成中间层,不直接与外部输入、输出打交道。

人工

神经网络所具有的模式变换能力主要体现在隐层的神经元上。

输出层

用于产生神经网络的输出模式。

多层神经网络结构中有代表性的有前向网络(BP网络)模型、

Page3of25

 

多层侧抑制神经网络模型和带有反馈的多层神经网络模型等。

本文主

要探讨前向网络模型。

多层前向神经网络不具有侧抑制和反馈的连接方式,即不具有本

层之间或指向前一层的连接弧,只有指向下一层的连接弧。

代表是

BP神经网络:

输入模式由输入层进入网络,经中间各隐层的顺序变

换,最后由输出层产生一个输出模式,如下图所示:

 

输入层

 

隐层

 

输出层

 

多层前向神经网络由隐层神经元的非线性处理衍生它的能力,这

个任务的关键在于将神经元的加权输入非线性转换成一个输出的非

线性激励函数。

下图给出了一个接收n个输入x1,x2,,xn的神经元:

b

1

x1

w1

x2

w2

σ

y

wn

xn

 

Page4of25

 

神经元的输出由下式给出:

n

x

j=1

这里输入的加权和(括号内部分)由一个非线性函数传递,b表

示与偏差输入相关的权值,wj表示与第j个输入相关的权值。

使用最广泛的函数是S形函数,其曲线家族包括对数函数和双曲

正切函数,这些都可用来对人口动态系统、经济学系统等建模。

另外

所用的其他函数有高斯函数、正弦函数、反正切函数,在此不一一展

开介绍,本文主要使用的激励函数是对数函数,函数表达式为:

y=L(u)=

函数曲线如下图所示:

 

1

 

0.8

 

0.6

 

0.4

 

0.2

 

0

1

1+e-u

 

-0.2

-10

 

-8

 

-6

 

-4

 

-2

 

0

 

2

 

4

 

6

 

8

 

10

 

对于有限输入量,对数函数输出范围为y∈(0,1)。

在输入为u=0时,

输出值为中间值y=0.5。

输出在u=0附近随着输入的增加以相对快的

Page5of25

y=σ(∑wjj+b)

 

速率增加并非常慢地到达上限。

对于u<0,输出起初减少得很快,然

后随着下限的接近将会变慢。

训练神经元的规则有很多种,这里首先介绍利用delta规则的学

习,神经元选择为一个单输入单输出的简单情形,数学描述如下:

u=wx+b,y=

1

1+e-u

该神经元具有一个输入x,权重为w,偏差输入为b,目标输出

为t,预报输出为y。

则预报误差为:

E=t-y=t-

11

1+e-u1+e-wx-b

为消除当误差在整个输入模式上求和时引起的误差符号问题,在

delta规则里使用的误差指示是平方误差,定义为:

11

22

1

-wx-b

)2

根据delta规则,最优权值(使平方误差最小)可以在训练过程

中从初始权值出发,沿负梯度方向下降得到。

将平方误差对w,b(神

经元的可调整参数)进行微分,得:

∂ε

∂u

=-E⋅

e-u

(1+e-u)2

∂ε

∂w

∂ε

∂b

=⋅=-E⋅⋅x

∂u∂w(1+e-u)2

=⋅=-E⋅

∂u∂b(1+e-u)2

根据delta原则,权值改变应与误差梯度的负值成比例,引入学

习率β,每次迭代中的权值改变可表示为:

∂εe-u

∂w(1+e-u)2

∂ε

∂b

e-u

(1+e-u)2

 

Page6of25

=t-

1+e

∂ε∂ue-u

∂ε∂ue-u

∆w=-β⋅=β⋅E⋅⋅x

∆b=-β⋅=β⋅E⋅

 

学习率β决定了沿梯度方向的移动速度,以确定新的权值。

大的

β值会加快权值的改变,小的β值则减缓了权值的改变。

第i次迭代

后的新权值可表示为:

wi+1=wi+β⋅E⋅

e-u

(1+e-u)2

⋅x

bi+1=bi+β⋅E⋅

e-u

(1+e-u)2

如果将偏差输入b视为输入x的一部分,令x0=1,w0=b,可以得到

对于多输入神经元的权值修正式:

 

+1

e-u

(1+e-u)2

⋅xj,j=0,1,2,

n

总之,利用delta规则的有监督的学习可以按如下方法来实现:

一个输入模式(x0,x1,x2,,xn)通过连接被传递,它的初始权值被设置

为任意值。

对加权的输入求和,产生输出y,然后y与给定的目标输

出t做比较决定此模式的平方误差ε。

输入和目标输出不断地被提出,

在每一次迭代或每一个训练时间后利用delta规则进行权值调整直到

得到可能的最小平方误差。

delta规则在每一步中通过导数寻找在误差平面中某个特定点局

部区域的斜率,它总是应用这个斜率从而试图减小局部误差,因此,

delta规则不能区分误差空间中的全局最小点和局部最小点,它本身

不能克服单层神经网络的局限,无法直接应用到多层神经网络(易陷

入局部最小点),但它的一般形式是多层神经网络中的学习算法——

反传算法的核心。

在多层前向神经网络的训练过程中,误差导数或关于权值的误差

 

Page7of25

wijji+β⋅E⋅

=w

 

表面的斜率对权值的调整是至关重要的,在网络训练期间,所有的输

出神经元和隐含神经元权值必须同时调整,因此,有必要找出关于所

有权值的误差导数。

由于网络层数增多,平方误差ε与权值的连接没

有之前单个神经元时那么直接,故可以使用链式规则的概念来找到导

数。

下面对一个含有一层隐含神经元的BP网络进行讨论,网络结构

如下图所示:

 

x0=1

 

1

 

a0m

a01

 

σ

y1

 

b1

 

y0=1

x1

1

b0

 

x2

 

1

 

 

1

 

z

 

bm

an1

ym

xn

1

anm

σ

 

各个神经元的输入输出关系为:

yi=

1

1+e-ui

n

j=0

x

m

m

i=0

设目标输出为t,则平方误差ε定义为:

 

Page8of25

ui=∑ajij,i=1,2,

z=v,v=∑biiy

 

1

2

使用链式法则,分别列出平方误差ε对所有网络参数的导数:

∂ε

∂v

=-(t-z)

∂ε

∂bi

∂ε

∂v

m

∂ε

∂yi

∂ε

∂v

m

 

=⋅=⋅

∂ui∂yi∂ui∂yi(1+e-ui)2

i=1,2,

m

∂ε

∂aji

=⋅=⋅xj,i=1,2,

m,j=0,1,2,

n

 

在实际的编程过程中,我们需要的是

∂ε

∂bi

∂ε

∂aji

,所以如果有需要,

也可以直接采用以下整理之后的形式:

∂ε

∂bi

=-(t-z)⋅yi,i=0,1,2,

m

∂ε

∂aji

e-ui

(1+e-ui)2

m,j=0,1,2,

n

研究表明,两层网络在其隐层中使用S形激励函数,在输出层中

使用线性传输函数,就几乎可以以任意精度逼近任意感兴趣的函数,

只要隐层中有足够的单元可用。

问题1:

试使用BP神经网络去逼近正弦函数的正半周,如下:

t=sin(x),x∈[0,π]

由于输入量x仅有一维,故BP神经网络结构可以设计为:

 

Page9of25

 

=⋅yi,i=0,1,2,

=⋅bi,i=1,2,

∂ε∂ε∂yi∂εe-ui

∂ε∂ui∂ε

∂ui∂aji

∂ui

=-(t-z)⋅bi⋅⋅xj,i=1,2,

 

x0=1

 

a01

 

 

σ

 

y1

 

y0=1

a02

b1

b0

 

a11

 

b2

 

1

z

 

x1=x

a12

σ

y2

 

各个神经元的输入输出关系为:

 

yi=

1

1+e-ui

1

j=0

x

2

i=0

根据之前的推导,平方误差ε对所有网络参数的导数为:

∂ε

∂bi

=-(t-z)⋅yi,i=0,1,2

∂ε

∂aji

e-ui

(1+e-ui)2

网络参数修正方程为:

 

k+1

∂ε

∂bi

k

 

a

k+1

ji

 

ji

k∂εke-ui

 

为加快寻找最优权值的速度,可以使用动量法。

之前的方法中,

收敛到最优权值的速度取决于学习率的大小,但是过大的学习率会导

致来回震荡,不能稳定到最优权值点。

动量法的引入,使得较大的学

习率也可以具有较好的稳定性,即提供了在学习期间到达最优权值时

 

Page10of25

ui=∑ajij,i=1,2

z=v,v=∑biiy

=-(t-z)⋅bi⋅⋅xj,i=1,2,j=0,1

biibk-β⋅

=

=bi+β⋅(t-z)⋅yi,i=0,1,2

=a-β⋅=aji+β⋅(t-z)⋅bi⋅⋅xj,i=1,2,j=0,1

∂aji(1+e-ui)2

 

的稳定性。

这种方法基本上是将过去权值变化的平均值附加到每一次

权值变化的新权值增量,从而使网络权值的变化更平滑。

数学表示如

下:

∆wk+1=μ⋅∆wk+(1-μ)⋅β⋅(-

∂ε

∂w

式中,μ是一个在0和1之间的动量参数,∆wk是在前一个训练

时间里的权值变化。

使用动量法的实际效果是:

基本上,如果以前积

累的变化与之前方向所暗示的是同一个方向时,动量部分就会加速当

前权值改变;如果当前积累的变化是相反的方向,动量将阻止当前的

变化。

据此编写MATLAB程序,源代码如下:

beta=0.1;

miu=0.8;

fori=1:

1:

101;

x1(1,i)=(i-1)*pi/100;

t(1,i)=sin(x1(1,i));

end

x0=1;

y0=1;

a01=rand();

a02=rand();

a11=rand();

a12=rand();

b0=rand();

b1=rand();

b2=rand();

delta_a01=0;

delta_a02=0;

delta_a11=0;

delta_a12=0;

delta_b0=0;

delta_b1=0;

delta_b2=0;

k=1;

total_error=0;

Page11of25

 

while1

u1=a01*x0+a11*x1(1,k);

u2=a02*x0+a12*x1(1,k);

temp1=exp(-u1)/((1+exp(-u1))^2);

temp2=exp(-u2)/((1+exp(-u2))^2);

y1=1/(1+exp(-u1));

y2=1/(1+exp(-u2));

z=b0*y0+b1*y1+b2*y2;

total_error=total_error+(t(1,k)-z)^2/2;

 

delta_b0=miu*delta_b0+(1-miu)*beta*sum((t(1,k)-z)*

y0);

b0=b0+delta_b0;

delta_b1=miu*delta_b1+(1-miu)*beta*sum((t(1,k)-z)*

y1);

b1=b1+delta_b1;

delta_b2=miu*delta_b2+(1-miu)*beta*sum((t(1,k)-z)*

y2);

b2=b2+delta_b2;

delta_a01=miu*delta_a01+(1-miu)*beta*sum((t(1,k)-z)

*b1*temp1*x0);

a01=a01+delta_a01;

delta_a02=miu*delta_a02+(1-miu)*beta*sum((t(1,k)-z)

*b2*temp2*x0);

a02=a02+delta_a02;

delta_a11=miu*delta_a11+(1-miu)*beta*sum((t(1,k)-z)

*b1*temp1*x1(1,k));

a11=a11+delta_a11;

delta_a12=miu*delta_a12+(1-miu)*beta*sum((t(1,k)-z)

*b2*temp2*x1(1,k));

a12=a12+delta_a12;

 

k=k+1;

ifk==length(x1)+1

total_error

k=1;

iftotal_error<0.001

break;

else

total_error=0;

end

end

end

clearu1u2temp1temp2y1y2zx0y0;

Page12of25

 

x0=ones(size(x1));

y0=ones(size(x1));

u1=a01*x0+a11*x1;

u2=a02*x0+a12*x1;

y1=1./(1+exp(-u1));

y2=1./(1+exp(-u2));

z=b0*y0+b1*y1+b2*y2;

plot(x1,t,'r');

holdon;

plot(x1,z,'b');

holdoff;

axis([0pi-0.21.2]);

 

程序运行后,输出拟合曲线与原函数曲线,如下图所示:

 

1

 

0.8

 

0.6

 

0.4

 

0.2

 

0

 

-0.2

 

0

 

0.5

 

1

 

1.5

 

2

 

2.5

 

3

 

可以看出,训练后的神经网络的预报输出与目标输出已经很接近,

拟合效果是较为理想的。

 

Page13of25

 

总的来说,神经网络的学习过程,是神经网络在外界输入样本的

刺激下不断改变网络的连接权值乃至拓扑结构,以使网络的输出不断

地接近期望的输出。

BP算法是多层前向神经网络的一种学习规则,

核心思想是将输出误差以某种形式通过隐层向输入层逐层反传,学习

的过程就是信号的正向传播与误差的反向传播交替的过程。

多层前向神经网络的主要功能有:

(1)非线性映射能力。

多层前向神经网络能学习和存储大量输

入——输出模式映射关系,而无需事先了解描述这种映射关系的数学

方程。

只要能提供足够多的样本模式供对神经网络进行学习训练,它

便能完成由n维输入空间到m维输出空间的非线性映射。

(2)泛化能力。

当向网络输入训练时未曾见过的非样本数据时,

网络也能完成由输入空间到输出空间的正确映射。

(3)容错能力。

输入样本中带有较大的误差甚至个别错误对网

络的输入输出规律影响很小。

多层前向神经网络的标准BP学习算法有着以下明显的缺陷:

(1)易形成局部极小(属于贪婪算法,局部最优)而得不到全

局最优;

(2)训练次数多使得学习效率低下,收敛速度慢;

(3)隐节点的选取缺乏理论支持;

(4)训练时学习新样本有遗忘旧样本的趋势。

标准BP算法的改进方法主要有:

增加动量项;自适应调节学习

率等。

增加动量项已经在之前进行过讨论,可以减小振荡趋势,提高

 

Page14of25

 

训练速度。

自适应调节学习率是指根据环境变化增大或减小学习率,

基本方法是:

设一初始学习率,若经过一批次权值调整后使总误差增大,则本

次调整无效,并令β=α1β(α1<1);若经过一批次权值调整后使总误差

减小,则本次调整有效,并令β=α2β(α2>1)。

 

下面通过一个非线性分类问题来考察前向神经网络在模式识别

领域的应用。

问题2:

x-y平面上有200个点,分别属于两个类别。

试设计并训练一个

多层前向神经网络,以完成该分类任务,使得被错误分类的样本数量

最低。

ω1类以绿色标示,ω2类以蓝色标示。

 

1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

 

Page15of25

 

根据题意,前向神经网络的结构设计如下:

 

x0=1

a01

σ

y1

y0=1

a02

b1

b0

 

x1=x

a11

 

a12

σ

z

b2

 

x2=y

a21

a22

σ

y2

 

网络的输入输出关系及分类策略为:

 

yi=

2

1+e-ui

2

j=0

x

 

z=

2

1+e-v

2

i=0

y

⎧ω,z>0

⎩ω2,z<0

分类误差定义为:

12⎧1,(x,y)∈ω1

2⎩-1,(x,y)∈ω2

由此可得误差量对网络参数的导数:

∂ε∂ε∂z∂ve-v

∂bi∂z∂v∂bi(1+e-v)2

∂ε

∂aji

-v

 

2

为简化表达式,定义:

 

p=-(t-z)⋅

-v

 

2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1