改进点主要在以下几个方面
1激励函数的坡度
———————误差曲面的平台和不收敛现象
————————————————激励函数中引入陡度因子,分段函数做激励函数
2误差曲面
——————误差平方做目标函数,逼近速度慢,过拟合
————————————————标准误差函数中加入惩罚项
————————————————信息距离和泛化能力之间的关系,构建新的神经网络学习函数
3网络初始权值的选取
—————————通常在0,1间选取,易陷入局部最小
—————————————————复合算法优化初始权值
—————————————————Cauchy不等式和线性代数方法得最优初始权值
4改进优化算法
————————标准BP采用梯度下降法,局部最小收敛慢
——————————————————共扼梯度法、Newton法、Gauss一Ncwton法、Lvenber_Marquardt法、快速传播算法
——————————————————前馈网络学习算法,二阶学习算法,三项BP算法,最优学习参数的BP算法。
5优化网络结构
————————拓扑结构中网络层数、各层节点数、节点连接方式的不确定性
——————————————构造法和剪枝法(权衰减法、灵敏度计算方法等)
——————————————网络结构随样本空间进行变换,简化网络结构
6混合智能算法
————————与遗传算法、进化计算、人工免疫算法、蚁群算法、微粒群算法、
————————模糊数学、小波理论、混沌理论。细胞神经网络
可以的!
之所以叫BP网络,是因为使用了反向传递算法,这是一种结果导向的自学习方法,用在五子棋上是可以的。因为五子棋的游戏方法正是很明显的结果导向的过程。
简单说这么个过程:
1设置输入和输出类型,比如都是坐标[x1,y1]、[x2,y2]
2训练:
你告诉网络
A情况下应该输出A1
B情况下应该输出B1
C情况下应该输出C1
A+B情况下应该输出AB1
3测试:
你问网络A+B+C情况下,应该输出多少?在哪里下子(就是[x,y]是多少?)网络就根据前面BP训练的结果自动算出你要的坐标。
用Matlab神经网络工具箱做吧,不是很难。另外,五子棋的棋盘别太大了,训练难度和时间是随棋盘大小成级数增长的。
clear
%p1,p2是训练数据
p1=[124,127;136,174;138,164;138,182;138,190;
140,170;148,182;154,182;156,208];
p2=[114,182;118,196;120,186;126,200
128,200;130,196];
p=[p1;p2]';
pr=minmax(p)
%goal是训练数据p的标准输出结果
goal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)];
%plot(p1(:,1),p1(:,2),'h',p2(:,1),p2(:,2),'o')
%创建一个前向反馈后向传播神经网络-即BP神经网络
net=newff(pr,[3,2],{'logsig','logsig'});
%设置训练参数
nettrainParamshow = 10;
nettrainParamlr = 005;
nettrainParamgoal = 1e-10;
nettrainParamepochs = 50000;
%训练网络
net = train(net,p,goal);
x=[124 180;128 184;140 204]';
%测试训练结果
y1=sim(net,p1')
y2=sim(net,p2')
y=sim(net,x)
不是训练到一定程度,而是已经训练完了
在sim的时候出现问题,你需要将P_test转置一下,
即P_test=[02123 01257 01343 02079 05579 05716 07059 07145 07205 07401 07019 07136 02317 02936 0]';
因为P是1510,T是1210,
即有10组数据,15个输入,12个输出,
所以P_test应为151
而你的P_test为115,所以出错
假设输入的是5个参数,输出1个参数。
神经网络的节点结构为 5-N-1 (N是中间层节点数,数目根据实验效果确定,可选5~10个)
关于输入延迟,不清楚意思。
是否可以做这样的数据处理:
假设t 时间的5个输入数据和t+1时间的1个输出数据对应,则以这一对数据作为训练样本,也不需要其理解神经网络中的延时处理机制。
训练函数写法: net=train(net,t 时间的输入数据,t+1时间的输入数据);
clc;clear;close all;
L1=1;
L2=1;
theta1=linspace(0,pi/2,100);
theta2=linspace(0,pi/2,100);
[x y]=fun(L1,L2,theta1,theta2);
plot(x,y,'o');hold on;
P = [theta1;theta2];
T = [x;y];
net = newff(minmax(P),[20,2],{'tansig','purelin'});
nettrainFcn = 'trainlm';
nettrainParamepochs = 500;
nettrainParamgoal = 1e-6;
[net tr] = train(net,P,T);
在人工神经网络发展历史中,很长一段时间里没有找到隐层的连接权值调整问题的有效算法。直到误差反向传播算法(BP算法)的提出,成功地解决了求解非线性连续函数的多层前馈神经网络权重调整问题。
BP (Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。
BP神经网络模型BP网络模型包括其输入输出模型、作用函数模型、误差计算模型和自学习模型。
(1)节点输出模型
隐节点输出模型:Oj=f(∑Wij×Xi-qj) (1)
输出节点输出模型:Yk=f(∑Tjk×Oj-qk) (2)
f-非线形作用函数;q -神经单元阈值。
(2)作用函数模型
作用函数是反映下层输入对上层节点刺激脉冲强度的函数又称刺激函数,一般取为(0,1)内连续取值Sigmoid函数: f(x)=1/(1+e乘方(-x)) (3)
(3)误差计算模型
误差计算模型是反映神经网络期望输出与计算输出之间误差大小的函数:
(4)
tpi- i节点的期望输出值;Opi-i节点计算输出值。
(4)自学习模型
神经网络的学习过程,即连接下层节点和上层节点之间的权重矩阵Wij的设定和误差修正过程。BP网络有师学习方式-需要设定期望值和无师学习方式-只需输入模式之分。自学习模型为
△Wij(n+1)= h ×Фi×Oj+a×△Wij(n) (5)
h -学习因子;Фi-输出节点i的计算误差;Oj-输出节点j的计算输出;a-动量因子。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)