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)

一般模型流程

  1. 数据归一化
[inputn,inputps] = mapminmax(input_train),
[outputn , outputps] = mapminmax(output_train)1
  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;
  1. 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期

基于Matlab的遗传算法优化BP神经网络的算法实现(附算法介绍与代码详解)

优化预测基于matlab遗传算法优化BP神经网络预测含Matlab源码 1376期