智能控制考试.docx

上传人:b****6 文档编号:4688432 上传时间:2022-12-07 格式:DOCX 页数:22 大小:503.13KB
下载 相关 举报
智能控制考试.docx_第1页
第1页 / 共22页
智能控制考试.docx_第2页
第2页 / 共22页
智能控制考试.docx_第3页
第3页 / 共22页
智能控制考试.docx_第4页
第4页 / 共22页
智能控制考试.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

智能控制考试.docx

《智能控制考试.docx》由会员分享,可在线阅读,更多相关《智能控制考试.docx(22页珍藏版)》请在冰豆网上搜索。

智能控制考试.docx

智能控制考试

1.单层感知器的结构

单层感知器属于单层前向网络,即除了输入层和输出层之外只拥有一层神经元节点。

感知器(perception)的原理相对简单,是学习其他复杂神经网络的基础。

由单个神经元组成的单层感知器只能用来解决线性可分的二分类问题。

典型使用场景:

将其用于两类模式分类时,就相当于在高维样本空间中,用一个超平面将样本分开。

Rosenblatt证明,如果两类模式线性可分,则算法一定收敛。

 

输入是一个N维向量

其中的每一个分量都对应于一个权值,隐含层的输出叠加为一个标量值:

随后在二值阈值元件中对得到的v值进行判断,产生二值输出:

二维空间中的超平面是一条直线。

在直线下方的点,输出-1;在直线上方的点,输出1。

分类面:

在实际应用中,通常采用纠错学习规则的学习算法。

将偏置作为一个固定输入

 

输入

权值

2.单层感知器的学习算法

(1)定义变量和参数。

X为输入,y为实际输出,d为期望输出,b为偏置,w为权值。

(2)初始化。

n=0,将权值向量设置为随机值或全零值。

(3)激活。

输入训练样本,对每个训练样本指定其期望输出

d

(4)计算实际输出。

(5)更新权值向量。

(6)判断。

若满足收敛条件,算法结束;若不满足,n自增1,转到第3步继续执行。

Ø

条件的混合使用,防止出现算法不收敛现象。

两次迭代之间的权值变化已经很小

Ø设定最大迭代次数M,当迭代了M次

之后算法就停止迭代

Ø误差小于某个预先设定的较小的值

确定学习率

Ø不应当过大,以便为输入向量提供一个比较稳定的权值估计

Ø不应当过小,以便使权值能够根据输入的向量x实时变化,体现误差对权值的修正作用

Ø粗准焦螺旋和细准焦螺旋的类比。

——自适应学习率。

3.感知器的局限性

1.单层感知器无法解决线性不可分问题,只能做近似分类。

2.感知器的激活函数使用阈值函数,输出值只有两种取值,限制了在分类种类上的扩展。

如果输入样本存在奇异样本,网络需要花费很长的时间。

感知器的学习算法只对单层有效。

4.单层感知器应用实例

坐标点的二类模式分类问题:

二维平面坐标系中存在一系列坐标点,已知部分坐标点属于第一类,部分坐标点属于第二类,求新坐标点的类别。

1.手算

2.使用工具箱函数

序号

X

y

所属类型(期望输出)

1

-9

15

0

2

1

8

1

3

-12

4

0

4

-4

5

0

5

0

11

0

6

5

9

1

>>n=0.2;

>>P=[-91-12-40,5;

........

15-84511,9];

>>d=[0,1,0,0,0,1];

>>P=[ones(1,6);P]

定义:

(2)初始化,将权值和偏置初始化为零。

>>w=[0,0,0];

(4)第二次迭代。

重复以上的步骤

>>v=w*P

>>y=hardlim(v)

>>e=(d-y)

>>ee=mae(e)%误差不为零!

>>w=w+n*(T-y)*P'

(5)第三次迭代,重复以上步骤。

>>v=w*P

>>y=hardlim(v)

>>e=(d-y)

>>ee=mae(e)

>>w=w+n*(T-y)*P'

(6)第四次迭代。

>>v=w*P

>>y=hardlim(v)

>>e=(d-y)

>>ee=mae(e)

perception_hand.m

误差为零,权值w不再更新,得到的分类超平面为:

>>w=w+n*(T-y)*P'

程序:

%perception_hand.m

%%清理

(1)定义变量定义输入期望输出

clear,clc

closeall

%%

n=0.2;%学习率

w=[0,0,0];

P=[-9,1,-12,-4,0,5;...

15,-8,4,5,11,9];

d=[0,1,0,0,0,1];%期望输出

P=[ones(1,6);P];

P

P=

111111

-91-12-405

15-845119

%%

(2)显示要分类的点

figure;

subplot(2,1,1);%显示待分类的点和分类结果

plot([-9,-12-40],[15,4511],'o');

holdon;

plot([1,5],[-8,9],'*');

axis([-13,6,-10,16]);

legend('第一类','第二类');

title('6个坐标点的二分类');

%%(3)初始化

w=[0,0,0];

%%(4)第一次迭代计算V和y值

v=w*P;

v

y=hardlim(v);%实际输出

y

%%y是实际输出,与期望输出d不一致需要根据误差d-y调整权值和偏置

e=(d-y);

e

ee=mae(e);

ee

w=w+n*(d-y)*P';

w

v=

000000

y=

111111

e=

-10-1-1-10

ee=

0.6667

w=

-0.80005.0000-7.0000

%%(5)第二次迭代,根据第一次迭代更新的w向量的值,计算V和y值

v=w*P;

v

y=hardlim(v);%实际输出

y

e=(d-y);

e

ee=mae(e);

ee

%%可以发现,实际输出与期望输出仍然不一致,还需要再次调整w向量

w=w+n*(d-y)*P';

w

v=-150.800060.2000-88.8000-55.8000-77.8000-38.8000

y=010000

e=

000001

ee=0.1667

w=

-0.60006.0000-5.2000

%%(6)第三次迭代,根据第一次迭代更新的w向量的值,计算V和y值

v=w*P;

v

y=hardlim(v);%实际输出

y

e=(d-y);

e

ee=mae(e);

ee

%%可以发现,mae值与前一次迭代相比没有变化,但是v值已经有了更新,继续调整权值和偏置

w=w+n*(d-y)*P';

w

v=-132.600047.0000-93.4000-50.6000-57.8000-17.4000

y=010000

e=

000001

ee=

0.1667

w=-0.40007.0000-3.4000

%%(7)第四次迭代

v=w*P;

v

y=hardlim(v);%实际输出

y

e=(d-y);

e

ee=mae(e);

ee

%%可以发现,程序在第四次迭代时就已经取得正确的结果,mae值为0,此时算法就收敛了,

由于mae值为0,因此即使继续更新w向量,其值也保持不变:

w=w+n*(d-y)*P';

w

v=-114.400033.8000-98.0000-45.4000-37.80004.0000

y=010001

e=

000000

ee=0

程序在第4次迭代时就已经取得了正确的结果,mae值为零。

此时算法就收敛了,由于mae值为零,因此继续更新w向量,其值也保持不变。

w=w+n*(d-y)*P';

w

w=

-0.40007.0000-3.4000

%%显示

figure;

subplot(2,1,1);%显示待分类的点和分类结果

plot([-9,-12-40],[15,4511],'o');

holdon;

plot([1,5],[-8,9],'*');

axis([-13,6,-10,16]);

legend('第一类','第二类');

title('6个坐标点的二分类');

x=-13:

.2:

6;

y=x*(-w

(2)/w(3))-w

(1)/w(3);

plot(x,y);

holdoff;

总程序

%perception_hand.m

%%清理

clear,clc

closeall

%%

n=0.2;%学习率

w=[0,0,0];

P=[-9,1,-12,-4,0,5;...

15,-8,4,5,11,9];

d=[0,1,0,0,0,1];%期望输出

P=[ones(1,6);P];

MAX=20;%最大迭代次数为20次

%%训练

i=0;

while1

v=w*P;

y=hardlim(v);%实际输出

%更新

e=(d-y);

ee(i+1)=mae(e);

if(ee(i+1)<0.001)%判断

disp('wehavegotit:

');

disp(w);

break;

end

%更新权值和偏置

w=w+n*(d-y)*P';

if(i>=MAX)%达到最大迭代次数,退出

disp('MAXtimesloop');

disp(w);

disp(ee(i+1));

break;

end

i=i+1;

end

%%显示

figure;

subplot(2,1,1);%显示待分类的点和分类结果

plot([-9,-12-40],[15,4511],'o');

holdon;

plot([1,5],[-8,9],'*');

axis([-13,6,-10,16]);

legend('第一类','第二类');

title('6个坐标点的二分类');

x=-13:

.2:

6;

y=x*(-w

(2)/w(3))-w

(1)/w(3);

plot(x,y);

holdoff;

subplot(2,1,2);%显示mae值的变化

x=0:

i;

plot(x,ee,'o-');

s=sprintf('mae的值(迭代次数:

%d)',i+1);

title(s);

1.线性神经网络的结构

线性神经网络最典型的例子是自适应线性元件(AdaptiveLinearElement,Adaline)。

线性神经网络与感知器的主要区别在于,感知器的传输函数只能输出两种可能的值,而线性神经网络的输出可以取任意值,其传输函数是线性函数。

线性神经网络在收敛的精度和速度上较感知器都有了较大提高,但由于其线性运算规则,它也只能解决线性可分的问题。

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

Madaline可以用一种间接的方式

解决线性不可分的问题,方法是

用多个线性函数对区域进行划分,

然后对各个神经元的输出做逻辑

运算。

线性神经网络解决线性不可分问题的另一个方法是,对神经元添加非线性输入,从而引入非线性成分,这样做会使等效的输入维度变大。

线性神经网络与感知器的对比

Ø网络传输函数。

感知器传输函数是一个二值阈值元件,而线性神经网络的传输函数是线性的。

这就决定了感知器只能做简单的分类,而线性神经网络还可以实现拟合或逼近。

Ø学习算法。

LMS算法得到的分类边界往往处于两类模式的正中间,而感知器学习算法在刚刚能正确分类的位置就停下来了,从而使分类边界离一些模式距离过近,使系统对误差更敏感

线性神经网络应用实例——与

网络的训练中共需确定3个自由变量,而输入的训练向量则有4个,因此可以形成一个线性方程组:

 

 

手算:

%定义

>>P=[0,0,1,1;0,1,0,1]

>>P=[ones(1,4);P]%包含偏置的输入向量

>>d=[0,0,0,1]%期望输出向量

%初始化

>>w=[0,0,0]%权值向量初始化为零向量

>>lr=maxlinlr(P)%根据输入矩阵求解最大学习率

>>MAX=200;%最大迭代次数,根据经验确定

>>fori=1:

MAX...

fprintf('第%d次迭代\n',i);

v=w*P;%求出输出

y=v;

disp('线性网络的二值输出:

');

yy=y>=0.5%将模拟输出转化为二值输出,以0.5为阈值

e=d-y;%误差

m(i)=mse(e);%均方误差

fprintf('均方误差:

%f\n',m(i));

dw=lr*e*P';%权值向量的调整量

fprintf('权值向量:

\n');

w=w+dw%调整权值向量

end

plot([0,0,1],[0,1,0],'o');holdon;

plot(1,1,'d');

x=-2:

.2:

2;

y=1.5-x;

plot(x,y)

axis([-0.5,2,-0.5,2])

xlabel('x');ylabel('ylabel');

title('线性神经网络用于求解与逻辑')

legend('0','1','分类面');

得到的分类超平面为:

BP神经网络的串行方式和批量方式

Ø串行方式。

在线方式,网络每获得一个新样本,就计算一次误差并更新权值,直到样本输入完毕。

随机输入样本,不容易陷入局部最优陷阱。

Ø批量方式:

离线方式。

网络获得所有的训练样本,计算所有样本均方误差的和作为总误差。

容易并行化,速度快。

设计BP网络的方法

BP网络的设计主要包括网络层数、输入层节点数、隐含层节点数、输出层节点数及传输函数、训练方法、训练参数的设置等几个方面。

1.网络层数。

对于大部分应用场合,单个隐含层即可满足需要

2.输入层节点数。

输入层节点数取决于输入向量的维数。

如果输入的是的图像,则输入向量应为图像中所有的像素形成的4096维向量。

如果待解决的问题是二元函数拟合,则输入向量应为二维向量。

3.隐含层节点数。

较多的隐含层节点数可以带来更好的性能,但可能导致训练时间过长。

经验公式:

k为样本数

n为输入层结点数

输出层神经元个数

输出层神经元的个数同样需要根据从实际问题中得到的抽象模型来确定。

在模式分类问题中,如果共有n种类别,则输出可以采用n个神经元。

也可以将节点个数设计为个,表示最小的不小于的整数。

由于输出共有4种情况,因此采用二维输出即可覆盖整个输出空间,00、01、10和11分别表示一种类别。

传递函数的选择

一般隐含层使用Sigmoid函数,而输出层使用线性函数。

如果输出层也采用Sigmoid函数,输出值将会被限制在0~1或-1~1之间。

训练方法的选择

Ø使用LM算法收敛速度最快,均方误差也较小。

LM算法对于模式识别相关问题的处理能力较弱,且需要较大的存储空间

Ø模式识别问题,使用RPROP算法能收到较好的效果

ØSCG算法对于模式识别和函数逼近问题都有较好的性能表现。

初始权值的确定

通常将初始权值定义为较小的非零随机值,经验值为

F:

权值输入端连接的神经元个数

4.BP神经网络的局限性

BP网络具有实现任何复杂非线性映射的能力,特别适合求解内部机制复杂的问题,但BP网络也具有一些难以克服的局限性

(1)需要的参数较多,且参数的选择没有有效的方法。

隐含层结点个数。

(2)容易陷入局部最优。

(3)样本依赖性。

如果样本集合代表性差、矛盾样本多、存在冗余样本,网络就很难达到预期的性能

(4)初始权重敏感性。

训练的第一步是给定一个较小的随机初始权重,由于权重是随机给定的,BP网络往往具有不可重现性。

径向基神经网络的学习算法(正则化网络方法)

Ø确定隐含层结点中心

Ø隐含层中基函数的标准差

Ø网络权值(隐含层到输出层)

正则化网络的一个特点就是:

隐含节点的个数等于输入训练样本的个数。

因此如果训练样本的个数N过大,网络的计算量将是惊人的,从而导致过低的效率甚至根本不可实现。

解决的方案是用Galerkin方法来减少隐含层神经单元的个数,此时求得的解是较低维数空间上的次优解。

这就是广义网络

径向基神经网络与多层感知器的比较

Ø径向基神经网络是三层网络(输入层、隐含层、输出层),只有一个隐含层,而多层感知器则可以有多个隐含层

Ø径向基神经网络的隐含层和输出层完全不同,隐含层采用非线性函数(径向基函数)作为基函数,而输出层采用线性函数,两者作用不同

Ø径向基神经网络的基函数计算的是输入向量与基函数中心之间的欧式距离(两者取差值,再取欧几里德范数),而多层感知器的隐单元的激励函数则计算输入向量与权值的内积

Ø多层感知器对非线性映射全局逼近,径向基函数局部逼近

离散Hopfield神经网络

1.与前向网络的根本区别

Ø在前向神经网络(或前馈神经网络)中,各层神经元节点接受前一层输入的数据,经过处理输出到下一层,数据正向流动,没有反馈连接。

前向线性神经网络的输出仅由当前的输入和网络的权值决定,

Ø反馈神经网络的输出除了与当前输入和网络权值有关以外,还与网络之前的输入有关

 

典型的反馈神经网络有Hopfield网络、Elman网络、CG网络模型、盒中脑(BSB)模型和双向联想记忆(BAM)等。

其最突出的优点是具有很强的联想记忆和优化计算功能,最重要的研究方向是反馈神经网络的稳定性。

Hopfield网络分为离散型DHNN和连续型CHNN两种网络模型

最初提出的Hopfield网络是离散网络,输出值只能取0或1,分别表示神经元的抑制和兴奋状态

 

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

当前位置:首页 > 高中教育 > 理化生

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

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