神经网络五个基本的学习算法文档格式.docx
- 文档编号:21103718
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:16
- 大小:135.98KB
神经网络五个基本的学习算法文档格式.docx
《神经网络五个基本的学习算法文档格式.docx》由会员分享,可在线阅读,更多相关《神经网络五个基本的学习算法文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
和当前的突触权值,与后突触权值
无关。
神经网络可以通过竞争学习来进行聚类。
然而,开始时输入模式必须落入充分分离的分组中。
否则,网络可能不稳定,因为它将不再以同样的输出神经元响应给定的输入模式。
Boltzmann学习中突触权值的改变实质上取决于前突触
和后突触
之间的相关量。
并同时考虑在钳制条件和自由运行条件下的相关量,且
的值数都在-1和+1范围内。
对此题分别采用MLP网络拟合,RBF网络拟合。
1.MLP网络拟合
%Example4_17BP
%用于曲线拟合的BP网络
clearall;
%n为隐藏的神经元个数
n=input('
请输入隐藏的神经元个数n='
);
t=[15151518282937374450506061646565727575828591919798125142142147147150159165183192195218218219224225227232232237246258276285300301305312317338347354357375394513535554591648660705723756768860];
y0=[21.6622.7522.331.2544.7940.5550.2546.8852.0363.4761.138173.0979.0979.5165.3171.986.194.692.5105101.7102.9110104.3134.9130.68140.58155.3152.2144.5142.15139.81153.22145.72161.1174.18173.03173.54178.86177.68173.73159.98161.29187.07176.13183.4186.26189.66186.09186.7186.8195.1216.41203.23188.38189.7195.31202.63224.82203.3209.7233.9234.7244.3231242.4230.77242.57232.12246.7];
net=newff(minmax(t),[n,1],{'
tansig'
'
purelin'
},'
trainlm'
%未经训练的模拟输出y1
y1=sim(net,t);
net.trainParam.epochs=250;
net.trainParam.goal=9.0;
net=train(net,t,y0);
%训练后的模拟输出y2
y2=sim(net,t);
y3=233.84*(1-exp(-0.006042*t));
figure;
plot(t,y0,'
-'
t,y1,'
--'
t,y2,'
t,y3,'
:
'
title('
训练后的网络仿真结果'
xlabel('
时间/天数'
ylabel('
晶状体重量/克'
legend('
原始数据'
'
初始化值'
训练后曲线'
模型曲线'
1.在MLP网络拟合中,进行了三次试验,隐藏神经元的个数分别是8,12,15,结果显示在隐藏神经元的个数大的时候有更好的拟合能力,尤其在数据间变化快(上下波动大)的时候可以很好的拟合,比原来的最小平方模型更好。
2.在RBF网络拟合中,拟合结果显示,在数据变化快(上下波动大)的时候能完全拟合,但是在数据变化慢(上下波动小)的时候的拟合结果相当差,证明它的网络推广能力不强。
3.当MLP网络和RBF网络比较时,它们的误差曲线分别如图3,图5可以看出他们的误差之间相差不大,但是RBF网络的迭代步数明显要少于MLP网络。
虽然MLP网络不能很好的对数据变化快的点进行拟合,但从整体数据看它的适应能力好。
RBF网络在数据变化慢的点的拟合效果明显比MLP网络差。
functionC=make_data_4_8()
%产生用于BP,RBF,SVM试验数据
pats=input('
产生数据的个数pats='
iffloor(pats/2)*2~=pats,
disp('
Numberofpatternsshouldbeequal-tryagain!
return
end
f=pats/2;
%生成第一类数据
C1=randn(f,2);
C1(:
3)=ones(f,1)*.95;
4)=ones(f,1)*.05;
5)=zeros(f,1);
fori=1:
f
RC1(i,i)=(1/2*pi)*exp((-1/2*pi)*(norm(C1(i,1:
2)-zeros(1,2)))^2);
%第一类数据的概率密度函数
mesh(C1(:
1),C1(:
2),RC1(:
:
));
% 生成第二类数据
C2=randn(f,2);
C2=C2*2;
C2(:
1)=C2(:
1)+2;
3)=ones(f,1)*.05;
4)=ones(f,1)*.95;
5)=ones(f,1)*1;
RC2(i,i)=(1/2*pi*4)*exp((-1/2*pi)*(norm(C2(i,1:
2)-[20])^2));
figure
% 第二类数据的概率密度函数
mesh(C2(:
1),C2(:
2),RC2(:
plot(C1(:
2),'
*'
axis([-410-5.55.5])
plot(C2(:
o'
holdon
%shufflethemup
H=[C1'
C2'
]'
;
[yi]=sort(rand(f*2,1));
C=H(i,:
用上面的程序画出两类数据的Guass分布三维图
P=mk_data(500);
%产生数据用来训练神经网络,两类高斯分布的训练数据分别为250
hN=2;
oN=2;
lr=0.1;
mom=0;
epochs=320;
[w1,b1,w2,b2,ep_err,a]=bpm_train(P,hN,oN,2,lr,mom,epochs,0,0,0,0,0);
%训练神经网络,hN是隐藏神经元个数,oN是输出层神经元个数,lr是学习率,mom动量参数,epochs是训练回合数目。
w1,b1分别是返回训练所得的权值的偏移量。
bpm_dec_bnds(w1,b1,w2,b2,0.1);
%产生分类边界
%测试
T=mk_data(10000);
%产生10000个测试数据
[cor,uncor]=bpm_test(w1,b1,w2,b2,T);
c=pl_circ([-2/30],2.34,0.01,1);
%确定Bayes分界面
%hN=2;
oN=2
1.在神经元数目,学习率参数
,动量常数
,都不变,试验时只改变训练集数目和回合数的时候,从表1,表2分别可以看出均方误差和正确分类概率没有必然的联系,均方误差和正确分类概率不会随着训练集数目和回合数的增加而增加,也不会随着训练集数目和回合数的减少而减少。
2.在学习率参数
=0.1,动量常数
=0的时候,比较神经元个数对试验结果的影响,从表1,表2及图12,图13可以看出当隐藏神经元个数是4的时候比隐藏神经元个数是2的时候,试验结果中:
均方误差小,正确分类概率大。
说明含有4个隐藏神经元的网络得出的结果优于2个隐藏神经元的网络。
3.学习率参数
和动量常数
的选择。
从表3,表4,表5,表6及图14,图15,图16,图17可以看出:
当隐藏神经元的个数固定(在试验中为2),学习率参数
分别为0.01,0.1,0.5,0.9时,改变动量常数
,均方误差和正确分类概率同动量常数
没有一个线性关系,这就要求我们选择一个最佳的组合。
从试验结果看,当学习率参数
为0.01,动量常数
为0.1时,正确分类概率最高为80.46%。
4.从16中组合中挑出最优的学习曲线(图18),试验结果(表7),明显看出学习率参数
=0.01,动量常数
=0.1时,它的学习曲线衰减很快,证明它有较小的均方误差。
5.均方误差与分类概率没有必然联系,一个BP算法的均方收敛的误差非常小,同时也可能牺牲了它的泛化能力,在实验中我们可以发现:
分类概率好的结果其均方误差并非最小的。
%Example_5_14利用SVM工具。
对n个点进行训练。
请输入测试的次数n='
lr=input('
请输入正则化参数lr='
cs=input('
请输入隐藏层中心大小cs='
)
n
P=mk_data(200);
w=rbf(P(1:
100,1:
2),P(:
1:
2),P(1:
100,3:
4),cs,lr);
T=mk_data(500);
rbfout=rbf_test(w,T(:
2),P(:
2),cs);
rbfcor(i,:
)=rbf_correct(rbfout,T(:
5));
figure(i);
rbf_db(w,P(:
2),cs,0.2);
avecorrect=mean(rbfcor)
mincorrect=min(rbfcor)
maxcorrect=max(rbfcor)
stdcorrect=std(rbfcor)
P=mk_data(500);
cw=4;
lr=0.01;
c=0.1
[pesos,vect,b]=svm_rbf(P,cw,1000,lr,c);
%cw是宽度,lr是学习率参数,c是正则化常数
T=mk_data(32000);
[cu]=svm_test(T,pesos,vect,b,cw);
svm_dec_bnd(pesos,vect,b,cw)
对于每次试验用500个点进行训练,并用32000个数据点进行测试。
五次试验宽度cw为4,正则化常数c都为0.1,并固定学习率参数lr为0.01。
两维分布驱动的一维网格:
hN=200;
p=rand(1000,2);
%输入数据分布
plot(p(:
1),p(:
2));
%画出数据的分布图
[w1sP1]=som_1d(p,hN,10,[0.118]);
%hN是隐藏神经元个数
[w2sP2]=som_1d(p,hN,50,[P1
(1)0.001P1
(2)0],w1s);
当隐藏神经元个数越大,对原始离散数据的逼近更好,在排序阶段和收敛阶段都比隐藏神经元为100的要好。
但是,我们对离散数据进行逼近时,不能把隐藏神经元个数选取的太大,如果选取的过大的话,网络会出现过拟合现象,这样以来它的网络推广性就会下降;
同时,隐藏神经元个数越大,运行的时间也会相应的增加。
所以适当的选取隐藏神经元个数越大是很重要的。
function[NN_w1NN_wNN_w1_1NN_w_1]=Som_912()
clf
%--设置符号代码的值
a=0.2;
%--训练数据集
P=[a000000000000000,
0a00000000000000,
00a0000000000000,
000a000000000000,
0000a00000000000,
00000a0000000000,
000000a000000000,
0000000a00000000,
00000000a0000000,
000000000a000000,
0000000000a00000,
00000000000a0000,
000000000000a000,
0000000000000a00,
00000000000000a0,
000000000000000a,
1111110000100000,
0000000111100000,
0000000000011111,
1111111000000000,
0000000111111111,
0000000000000111,
0000000001001110,
0000111101111000,
0000000011011110,
1001111000000000,
0011000000000000]'
%--排序阶段权值
[W1p1]=som_2d(P,10,10,2000,[.01,8]);
figure
(1);
subplot(2,1,1);
som_pl_map(W1,1,2)
Orderingweights'
%--收敛阶段权值
W=som_2d(P,10,10,5000,[p1
(1)0.001p1
(2)0],W1);
subplot(2,1,2);
som_pl_map(W,1,2)
Convergenceweights'
%--测试数据集
T=[a000000000000000,
0000000000000000,
0000000000000000]'
%==============包含具有最强响应的标定神经元的特征映射=============
NN_w1=zeros(10,10);
NN_w=zeros(10,10);
%---计算
forh=1:
16
M_w1=0;
M_w=0;
10
forj=1:
M1=0;
M2=0;
fork=1:
29
M1=M1+W(i,j,k)*T(h,k);
M2=M2+W1(i,j,k)*T(h,k);
end;
ifM_w<
M1
POS_wi=i;
POS_wj=j;
M_w=M1;
ifM_w1<
M2
POS_w1i=i;
POS_w1j=j;
M_w1=M2;
NN_w1(POS_w1i,POS_w1j)=h;
NN_w(POS_wi,POS_wj)=h;
end;
NN_w1
NN_w
%--文字显示
figure
(2);
text_plot(NN_w1);
orderingphase'
figure(3);
text_plot(NN_w);
Convergencephase'
%=======利用“模拟电极渗透映射”的语义映射===========
NN_w1_1=zeros(10,10);
NN_w_1=zeros(10,10);
%----计算
forh=1:
NN_w_1(i,j)=h;
NN_w1_1(i,j)=h;
NN_w1_1
NN_w_1
%---文字显示
figure(4);
text_plot(NN_w1_1);
figure(5);
text_plot(NN_w_1);
functiontext_plot(z);
[czrz]=size(z);
s=cell(cz,rz);
cz
rz
switchz(i,j)
case0
s(i,j)={'
};
case1
dove'
case2
hen'
case3
duck'
case4
goose'
case5
owl'
case6
hawk'
case7
eagle'
case8
fox'
case9
dog'
case10
wolf'
case11
cat'
case12
tiger'
case13
lion'
case14
horse'
case15
zebra'
case16
cow'
cellplot(s);
1.基于ICA学习的网络和固定点算法FastICA_25都能很好的将混合数据分离开来。
不过它们分离后的各个信号幅度都以原来的真实数据有很大的不同,虽然信号幅度不同,但是它们分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 神经网络 五个 基本 学习 算法