Matlab使用神经网络&遗传算法优化
Posted anywareAI
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab使用神经网络&遗传算法优化相关的知识,希望对你有一定的参考价值。
Matlab 使用神经网络&遗传算法优化
概述
matlab 是一个强大的工具,拥有成熟的各种工具环境,本科时向老师是介绍说“matlab什么都能做”。这句话说的确实对,因为它本身的功能应用在各个学科各个领域,2020版还新增了5g工具箱等工具。matlab 半年一更,学习的速度赶不上更新的速度。
在 matlab 中,有神经网络工具箱的功能,可以快速的帮助我们定义神经网络。
2020a中,对于“机器学习与深度学习”领域就有如下工具箱:
这些工具箱很直观,但是初次使用会让人摸不到头脑。根据相关书籍的建议,从代码去使用神经网络工具箱会更加有灵活性,所以参考文档与博客学习。
定义神经网络
主要用到的函数有:
-
newff
(2010a之后推荐使用feedforwardnet
函数) -
sim -
train
newff
主要格式:
% 方式一
net = newff(P,T,S)
% 方法二
net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)
它的用法示例:
% 获取数据
[inputs,targets] = simplefitdata;
% 通过 newff 创建前馈神经网络
net = newff(inputs,targets,20);
% train 方法训练模型
net = train(net,inputs,targets);
% 返回输出
outputs = net(inputs);
% 计算误差
errors = outputs - targets;
% 通过 perform 函数分析模型效果
perf = perform(net,outputs,targets)
newff的参数就是对应的模型参数设定,比如
-
P :输入数据矩阵 -
T :输出数据矩阵 -
S :隐含层节点数 -
TF :节点传递函数 -
等等
newff
函数2010b的版本中就已经弃用了,取而代之的是feedforwardnet
函数
feedforwardnet
主要格式:
feedforwardnet(hiddenSizes,trainFcn)
示例代码:
% 获取数据
[x,t] = simplefit_dataset;
% 隐含层参数是10
net = feedforwardnet(10);
net = train(net,x,t);
% 可视化查看网络
view(net)
y = net(x);
perf = perform(net,y,t)
他们的用法是类似的。
在
feedforwardnet
中把一些参数放在了层的设置,比如节点转移函数,就用net.layers{1}.transferFcn
设置
train
train
用来训练拟合神经网络。
一般格式:
trainedNet = train(net,X,T,Xi,Ai,EW)
[trainedNet,tr] = train(net,X,T,Xi,Ai,EW)
[trainedNet,tr] = train(net,X,T,Xi,Ai,EW,Name,Value)
部分参数:
-
NET :待训练网络. -
X :输入数据矩阵。 -
T:输出数据矩阵。 -
等等
sim
sim
用模型进行预测。
一般用这个格式:
[Y,Xf,Af] = sim(net,X,Xi,Ai,T)
参数:
-
net: 神经网络对象 -
X : 输入 -
Xi : 初始输入延迟条件(默认 = zeros) -
Ai : 初始层延迟条件 (默认 = zeros) -
T : 输出数据 (默认 = zeros)
一般模型流程
-
数据归一化
[inputn,inputps] = mapminmax(input_train),
[outputn , outputps] = mapminmax(output_train)1
-
BP 神经网络构建
% 2010b 之前
net= newff(inputn,outputn, 5);
% 2010b 之后
net = feedforwardnet(5);
3.网络参数设置
net.trainParam.epochs = 100;
net.trainParam.lr = 0.1;
net.trainParam.goal = 0.00004;
-
BP 神经网络训练
net = train(net,inputn,outputn);
使用遗传算法优化神经网络
很多的核心论文中都用了这种思路,用的是“搜索算法”去优化,常用的是“遗传算法”或者它的变种。近几年类似的,更多的文章在“搜索”和“选择”上使用强化学习的思想,比如强化学习选择模型。
遗传算法中有几个重要的部分:“适应度函数”、“选择”、“变异”、“交叉”,一句两句讲不清具体算法,感兴趣自行尝试,这里提供一些思路。
核心就是:在一般的神经网络过程的“权值阈值初始化”部分用遗传算法计算最优参数赋值权重。
这样的思路可以延伸至其他优化算法,比如粒子群算法。同时这种思路也有局限性,比如如果样本不均匀等情况会对这种情况产生影响。
以上是关于Matlab使用神经网络&遗传算法优化的主要内容,如果未能解决你的问题,请参考以下文章
LSSVM分类基于matlab遗传算法优化LLSVM数据分类含Matlab源码 2339期
LSSVM分类基于matlab遗传算法优化LLSVM数据分类含Matlab源码 2339期
ELM分类基于matlab遗传算法优化ELM神经网络数据分类含Matlab源码 2138期
ELM分类基于matlab遗传算法优化ELM神经网络数据分类含Matlab源码 2138期