Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MATLAB快速搭建一个神经网络以及神经网络工具箱的使用

MATLAB快速搭建一个神经网络以及神经网络工具箱的使用

作者头像
全栈程序员站长
发布于 2022-08-28 03:52:08
发布于 2022-08-28 03:52:08
3.5K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

文章目录

0.导读

首先声明,这篇文章的内容并不全是本人的原创内容,凡是引用了别人的博客或者文章的地方,我都会标注出来,以便大家阅读原文。

现在最前面的,当然是提纲挈领的废话。凡是商品都有目标人群,文章也该如此,一篇文章写了什么,是写给谁看的,看完之后会起到什么作用,应该是作者在一开始就简明扼要的提出的,否则读者读了文章发现毫无用处,作者挨骂,读者无获,皆不欢喜。

本文的主要内容,是采用形象的描述而非准确的定义来让读者对神经网络有一个粗略的了解,基于MATLAB的GUI界面而非command windows来快速搭建一个神经网络以解决简单的问题。如果你的电脑上没有MATLAB,官方提供的MATLAB在线服务是个不错的选择MATLAB Online – MATLAB & Simulink,当然,前提是你得有正版的激活码。笔者计划在下一篇文章采用准确的定义和MATLAB的脚本语言来进一步阐述神经网络。本文的受众,是那些大学低年级学生–没有受过专业或系统的训练,却因为数模等原因需要在短时间内了解且应用神经网络。

1.神经网络工具箱

为了利用MATLAB搭建一个神经网络,我们要首先了解一下什么是神经网络。斯坦福大学的印度学生、机器学习爱好者 PararthShah 在2012年12月22日的使用买芒果的例子,非常经典易懂。知友Begin Again翻译如下:

你需要挑选芒果,你不知道什么样的芒果最好吃,所以你就尝遍了所有的芒果,然后自己总结出个大深黄色的比较好吃,以后再去买的时候,就可以直接挑选这种。那什么是机器学习呢,就是你让机器“尝”一遍所有芒果,当然,也假设它知道哪些好吃,让机器去总结一套规律(个大深黄色),这就是机器学习。具体操作,就是你描述给机器每一个芒果的特征(颜色,大小,软硬……),描述给机器其输出(味道如何,是否好吃),剩下的就等机器去学习出一套规则。

等等,那机器是怎么学习到这个规则(个大深黄色的好吃)的?没错,是通过机器学习算法。近些年来,由于深度学习概念的兴起,神经网络又成为了机器学习领域最热门的研究方法。神经网络就像一个刚开始学习东西的小孩子,开始认东西,作为一个大人(监督者),第一天,他看见一只京巴狗,你告诉他这是狗;第二天他看见一只波斯猫,他开心地说,这是狗,纠正他,这是猫;第三天,他看见一只蝴蝶犬,他又迷惑了,你告诉他这是狗……直到有一天,他可以分清任何一只猫或者狗。

其实神经网络最初得名,就是其在模拟人的大脑,把每一个节点当作一个神经元,这些“神经元”组成的网络就是神经网络。而由于计算机出色的计算能力和细节把握能力,在大数据的基础上,神经网络往往有比人更出色的表现。当然了,也可以把神经网络当作一个黑箱子,只要告诉它输入,输出,他可以学到输入与输出的函数关系。神经网络的理论基础之一是三层的神经网络可以逼近任意的函数,所以理论上,只要数据量够大,“箱子容量”够大(神经元数量),神经网络就可以学到你要的东西。

2.如何利用MATLAB工具箱建立神经网络

以上的关于神经网络粗浅的描述,虽然并不准确,但是大体的意思表达到位了。简单来说,神经网络就是定义域(输入)和值域(输出)之间的映射。举例来说,病人到医院做了一堆检查,包括肝功能,尿检,血检等,得到了一堆数据(输入),现在要根据这堆数据判断病人得了什么病(输出),这就是神经网络的常用场景之一:模式识别,或者说分类。如下图所示,MATLAB工具箱中的神经网络还可用于曲线拟合(其实这也就是个映射),动态时间序列等问题上。

在MATLAB的command window里输出命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nnstart

即可调用其自带的神经网络工具箱向导。首先根据你要解决的问题选择合适的神经网络,这里以运用的最多的模式识别举例。选择pattern recognition app,如下图所示。

模式识别工具箱,顾名思义,就是用来解决上述病人看病和判断芒果是否好吃的例子的。该工具箱的神经网络采用了两层前向式网络(A two-layer feed-forward network),训练函数是trainscg(scaled conjugate gradient backpropagation)若隐藏层含有足够多的神经元,就能取得较好的识别效果( can classify vectors arbitrarily well, given enough neurons in its hidden layer)。

点击next,开始导入数据。

在这里要说明一下数据格式。输入数据和目标数据都是以矩阵的形式表示,可以表示为行矩阵或者列矩阵。如图中1号红色框所示,我选择列矩阵,那么我的输入输出矩阵中每一列代表一个样本,比如我有150个样本,每个样本包含四个坐标分量,那么我的输入矩阵大小应该为4*150.目标矩阵也应该按照列来解读,如我有150个样本,那么我的目标矩阵也应该是150,每一列都代表与其相对应的输入的结果,其中0意味着不属于该类,1意味着属于该类。比如,第75个输出属于第二类,那么我的目标矩阵的第75列为(0;1;0)。

点击next,进行数据分类。

在这里简单解释一下这三类数据,分别是训练数据(train),确认数据(validation)和测试数据(test)。其中,训练数据用于训练神经网络,确认数据用于确认神经网络的训练效果,测试数据用于展示神经网络好坏。事实上,确认数据和测试数据的作用相似,在数据量较小的情况下,可以不设置测试数据,只设置训练数据和确认数据。

在确认好各个数据的比例后,点击next选择隐藏层神经元数量。

在这里需要解释的是,隐藏层(hidden layer)的神经元数量的选取没有一定的准则。数量过少会使得拟合效果不好(模式分类不够准确),数量过多有可能出现过拟合状态(对于其他数据的识别能力较差)。所以一般的做法是保留默认值,如果对默认值不满意再增加神经元数量。 点击next,此时已经创建好神经网络。

由于训练函数已经选定为trainscg(scaled conjugate gradient backpropagation)且不可更改,所以直接点击train。

此时弹出训练窗口。这里主要解释一下progress和plots。对于progress,我们看到有一下几个条目:

epoch:其代表着迭代次数。BP神经网络的训练是采用迭代训练的,图中显示训练(迭代)15次即停止。特别的,右边的1000意思是训练次数上限为1000次,超过1000次自动停止。 time:训练的时间。图中显示本次训练时间为1S validation checks:与performance和gradient同为停止条件之一。意思是若连续几次训练

performance和gradient的效果不再提高则视为训练完成。但是通过performance和gradient停止意味着该神经网络达到了我们的预期,而通过validation checks停止则意味着该神经网络没有达到了我们的预期。

对于plots,较有参考价值的为后三个。

误差直方图(error Histogram):如下图所示,绝大部分误差在(-0.0348,0.0363)之间。

混淆矩阵(confusion matrix):可视为一个表格。具体可参考百度百科:混淆矩阵_百度百科

ROC曲线:与混淆矩阵相同,也用来表征该神经网络的效果。具体可参考我之前写的一篇文章:ROC曲线简介 – 知乎专栏

回到nprtool,此时有两种选择。

对神经网络的效果不满意,可以选择retrain。理论上,由于初值不同,每一次训练效果都不一样,但是笔者尝试几次发现并无大的区别。选择next,可进行下一步。

对神经网络不满意,可以选择重新训练(train again),调整隐藏层神经元数目(adjust network size)和导入更多数据。特别的,隐藏层(hidden layer)的神经元数量的选取没有一定的准则。数量过少会使得拟合效果不好(模式分类不够准确),数量过多有可能出现过拟合状态(对于其他数据的识别能力较差)。点击next

此时我们可以选择生成MATLAB函数或者可视化神经网络。生成MATLAB函数的话,你就可以利用刚刚训练的网络来解决你自己的问题啦。当然,你的问题和你之前导入的训练数据一定要是同一个问题。就像你不能拿用病人看病的数据训练出来的网络来进行芒果是否好吃的判断。

点击finish,关闭这个向导。

洋洋洒洒写了这么多,其实就是MATLAB神经网络工具箱的一个注解,希望能够对你有多帮助。当然笔者水平有限,写都不对的地方还是希望你能够私信给我,大家共同学习。

人工神经网络学习笔记2——MATLAB神经网络工具箱

神经网络理论的初学者可以利用MATLAB自带的神经网络工具箱来理解ANN算法。

神经网络工具箱模型包括如下内容:

· 感知器

· 线性网络

· BP网络

· 径向基函数网络

· 竞争型神经网络

· 自组织网络和学习向量量化网络

· 反馈网络

神经网络工具箱的使用

在命令行窗口输入nnstart,可以打开MATLAB提供的神经网络图形用户界面,如图1所示:

图1 神经网络图形用户界面 再次点击该界面的‘Fitting app’按钮,打开神经网络工具箱。正如上图显示的一样,直接在命令行窗口输入‘nftool’打开神经网络工具箱。点击之后界面如图2所示:

图2 神经网络工具箱 可以很清楚的看到,一个人工神经网络模型是由‘Input’,‘Hidden Layer’,‘Output Layer’和‘Output’三(四)个主要成分构成,单击‘Next’按钮继续下面的操作。

图3 输入值及目标值选择界面 ‘Input’和‘Targets’可以分别选择神经网络的输入及目标值,此处为了演示,我选择了‘Load Example Data Set’按钮用系统自带的数据‘House’导入到要训练的神经网络中,此时输入为‘houseinputs’,目标为‘house Targets’,单击Next继续下一步操作。

图4 样本比例选择界面 阅读图4中信息,我们需要设置用于训练、验证和测试的样本比例,默认为70:15:15。选择完成之后单击‘Next’,开始建立图5所示神经网络结构图。本神经网络共3层,分别为输入层、输出层和隐含层,其中隐含层的神经元数目可以在途中修改。

图5 神经网络隐含层神经元数目选择 确定神经网络隐含层神经元后,单击‘Next’按钮,确定神经网络结构,在出现的界面中可以选择是否训练神经网络,如图6所示。

图6 神经网络的确定 单击‘Train’按钮,选择训练之前确定的神经网络,如图7所示。

图7 训练神经网络 出现如图所示结果,则说明神经网络已经训练完成,可以在‘Plots’选项内选择需要看到的图形信息。‘Performance’按钮可以显示训练结果示意图;‘Training State’可以得到神经网络训练参数的变化过程示意图,如图8,9所示。

图8 训练结果

图9 训练参数变化曲线 训练完成后,连续单击‘Next’两次,在神经网络的确定窗口中可以保存此次训练结果。

图10 保存结果 准备文书准备的心力憔悴,以上是MATLAB神经网络工具箱的具体使用流程,更多的细节望大家自己去挖掘!

MATLAB中神经网络工具箱的使用

今夕何夕兮,前些天把玩了一下MATLAB中神经网络工具箱的使用,忽有“扪参历井仰胁息”之感。别的倒是没什么,只是神经网络的数据组织结构有些“怪异”,要是不小心就会导致工具箱报错。以下便是神经网络工具箱的正确打开姿势,谨供诸君参考:

1.打开MATLAB,在命令行输入nntool,将出现如下界面:

图1 神经网络工具箱主界面

其中最主要的分为6个部分:第1部分中显示的是系统的输入数据;第2部分是系统的期望输出;第3部分是网络的计算输出;第4部分是网络的误差,即2和3之间的差异;第5部分呈现的是已经建立的神经网络实例;第6部分的两个按钮分别负责数据的导入和网络模型的建立。

2.点击“Import”按钮,分别导入输入数据与目标输出数据(数据可从工作区导入,也可从文件导入):

图2 导入输入数据集

图3 导入期望输出数据集

导入数据后主界面的情况如下:

图4 导入数据后的情况

重要说明:神经网络的数据是以列为基本单位的,即输入与输出数据的列数必须相同,否则将报错!如果原先数据是以行为单位组织的话,可以先在MATLAB中实现转置然后再导入,即B = A’。

3.现在需要的数据已经有了,下一步就是建立一个神经网络模型对数据集进行学习。以下步骤以BP网络为例,首先点击“New”按钮,出现如下界面:

图5 神经网络模型设置

几个重要部分已在上图中框出:1处用于定义该神经网络的名称;2处用于选择神经网络的类型;3处用于选择网络的输入数据;4处用于确定网络的期望输出数据;5、6、7处分别对神经网络的主要机制函数进行设置;8处设置网络层数;9处用于选择各网络层(需要说明的是:第1层指的是隐含层而不是输入层),从而在10和11处可以对该层的神经元个数和传递函数进行设置;12处按钮可以用于查看当前所设置的神经网络的结构图(下附图);点击13处按钮即可生成对应的神经网络模型。前面只是简单地介绍了各个部分的作用,具体参数应该如何设置就只有各位自行去学习相关的文献了,此处不再多言。

图6 神经网络结构预览

4.现在模型和数据都有了,下一步该进行模型的训练了。回到主界面如下:

图7 回到主界面

选中我们刚才建立的神经网络模型,然后点击“Open”按钮,将会出现如下界面:

图8 神经网络界面

在这里主要介绍两个选项卡中的内容,一个是“Train”,另一个是“Adapt”。点击“Train”选项卡后做相应的设置即可进行神经网络的训练:

图9 模型主要信息设置

图10 模型具体参数设置

设置完所有信息后点击“TrainNetwork”按钮即可进行网络的训练了。训练完成后会有一个结果信息界面,如下:

图11 训练结果反馈

5.OK,现在模型训练也结束了,那么下一步自然是要来验证我们训练的模型。先导入验证输入和验证输出,这一步不再重提。然后来到模型验证界面:

图12 验证数据导入后

图13 验证参数设置

红框1中设置网络的输入和验证输出;2中设置网络输出和误差情况的存储名;这些都完成之后点击“Adapt Network”后即可。此后会出现如下的提示界面:

图 14 提示界面

接下来再回到神经网络主界面如下:

图15 网络验证结果

此时界面中会多出红框所框出的两组数据,它们分别是网络的输出与对应的输出误差。具体的数据可以通过双击它们来打开查看。

重要说明:

神经网络的输入和输出数据要求每列为一个样本,按平常的习惯可能需要转置一下。 否则可能会报输入/输出样本数量不同的错误。 如果出现“input data size does not match net.inputs{1}.size”错误,那是因为创建神经网络是设定的输入个数与样本数据的输入个数不同而引起的,重新创建合适的神经网络即可。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151519.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
菜鸟的数学建模之路(四):BP神经网络
BP神经网络属于人工智能范畴,在我看来它更多的是一个用于预测的工具,尽管它的用处还不仅于此。在数学建模上,很多时候,题目提供了很多历史数据,我经常用这些历史数据,用BP神经网络训练它,利用训练好的BP神经网络,来预测接下来的未知的值。
全栈程序员站长
2022/07/25
1.4K0
菜鸟的数学建模之路(四):BP神经网络
MATLAB神经网络拟合工具箱Neural Net Fitting使用方法
  本文介绍MATLAB软件中神经网络拟合(Neural Net Fitting)工具箱的具体使用方法。
疯狂学习GIS
2022/08/10
2.4K0
MATLAB神经网络拟合工具箱Neural Net Fitting使用方法
MATLAB中神经网络工具箱的使用「建议收藏」
今夕何夕兮,前些天把玩了一下MATLAB中神经网络工具箱的使用,忽有“扪参历井仰胁息”之感。别的倒是没什么,只是神经网络的数据组织结构有些“怪异”,要是不小心就会导致工具箱报错。以下便是神经网络工具箱的正确打开姿势,谨供诸君参考:
全栈程序员站长
2022/08/28
5.3K0
MATLAB中神经网络工具箱的使用「建议收藏」
初学者怎么选择神经网络环境?对比MATLAB、Torch和TensorFlow
选自arXiv 机器之心编译 参与:吴攀、蒋思源、李亚洲 初学者在学习神经网络的时候往往会有不知道从何处入手的困难,甚至可能不知道选择什么工具入手才合适。近日,来自意大利的四位研究者发布了一篇题为《神经网络初学者:在 MATLAB、Torch 和 TensorFlow 中的快速实现(Neural Networks for Beginners A fast implementation in Matlab, Torch, TensorFlow)》的论文,对 MATLAB、Torch 和 TensorFlow
机器之心
2018/05/07
2.1K0
初学者怎么选择神经网络环境?对比MATLAB、Torch和TensorFlow
bp神经网络及matlab实现_bp神经网络应用实例Matlab
BP(Back-propagation,反向传播)神经网络是最传统的神经网络。当下的各种神经网络的模型都可以看做是BP神经网络的变种(虽然变动很大…)。 这东西是干什么用的呢? 我们在现实中要处理的一切问题映射到数学上只分为两类,可归纳的问题与不可归纳的问题。首先什么是不可归纳的问题,举个例子,你不能用一套完美的数学公式去表达所有的质数 , 因为目前的研究表明,还没有什么方法是能够表达质数的,也就是说,质数的出现,本身不具备严格的数学规律,所以无法归纳。 但是我们人眼看到猫猫狗狗的图片就很容易分辨哪个是猫,哪个是狗。这说明在猫和狗之间,确实存在着不同,虽然你很难说清楚它们的不同到底是什么,但是可以知道,这背后是可以通过一套数学表达来完成的,只是很复杂而已。 大部分AI技术的目的就是通过拟合这个复杂的数学表达,建立一个解决客观问题的数学函数。BP神经网络的作用也是如此。 BP神经网络这个名字由两部分组成,BP(反向传播)和神经网络。神经网络是说这种算法是模拟大脑神经元的工作机理,并有多层神经元构成的网络。 而这个名字的精髓在BP上,即反向传播。反向传播是什么意思呢。这里举个例子来说明。 比如你的朋友买了一双鞋,让你猜价格。 你第一次猜99块钱,他说猜低了。 你第二次猜101块钱,他说猜高了。 你第三次猜100块钱,他说猜对了。 你猜价格的这个过程是利用随机的数据给出一个预测值,这是一个正向传播。 而你的朋友将你的预测值与真实值进行对比,然后给出一个评价,这个过程是一个反向传播。 神经网络也是类似的过程,通过对网络的超参数进行随机配置,得到一个预测值。这是一个正向传播的过程。而后计算出预测值与真实值的差距,根据这个差距相应的调整参数,这是一个反向传播的过程。通过多次迭代,循环往复,我们就能计算出一组合适的参数,得到的网络模型就能拟合一个我们未知的复杂函数。 我们来看这个BP神经网络的示意图
全栈程序员站长
2022/10/01
1.7K0
bp神经网络及matlab实现_bp神经网络应用实例Matlab
Matlab RBF神经网络及其实例
RBF神经网络和BP神经网络的区别就在于训练方法上面:RBF的隐含层与输入层之间的连接权值不是随机确定的,是有一种固定算式的。下面以精确型RBF为例。
用户9925864
2022/07/27
1.1K0
Matlab RBF神经网络及其实例
竞争型神经网络
自组织神经网络(self-Organization Mapping net,SOM)是基于无监督学习方法的神经网络的一种重要类型。自组织神经网络是神经网络最富有美丽的研究领域之一,它能够通过其输入样本学会检测其规律性和输入样本相互之间的关系,并且根本这些输入样本的信息自适应调整网络,使网络以后的响应与输入样本相适应。竞争型神经网络的神经元通过输入信息能够识别成组的相似输入向量;自组织神经网络通过学习同样能够识别成组的相似输入向量,使那些网络层中彼此靠得很近的神经元对相似输入向量产生响应。与竞争型神经网络不同
瓜大三哥
2018/02/26
2.3K0
竞争型神经网络
MATLAB强化学习工具箱整理
其中网格环境是可以从空网格自定义起点终点障碍物的,也可以添加全局外力,甚至跳跃障碍物的特殊功能
万木逢春
2020/07/24
4.1K0
MATLAB强化学习工具箱整理
如何利用matlab做BP神经网络分析(包括利用matlab神经网络工具箱)「建议收藏」
最近一段时间在研究如何利用预测其销量个数,在网上搜索了一下,发现了很多模型来预测,比如利用回归模型、时间序列模型,GM(1,1)模型,可是自己在结合实际的工作内容,发现这几种模型预测的精度不是很高,于是再在网上进行搜索,发现神经网络模型可以来预测,并且有很多是结合时间序列或者SVM(支持向量机)等组合模型来进行预测,本文结合实际数据,选取了常用的BP神经网络算法,其算法原理,因网上一大堆,所以在此不必一一展示,并参考了bp神经网络进行交通预测的Matlab源代码这篇博文,运用matlab 2016a,给出了下面的代码,并最终进行了预测
全栈程序员站长
2022/07/28
9160
数学建模暑期集训12:神经网络预测——Neural Net Fitting工具箱的使用
在本专栏的第十三篇博文数学建模学习笔记(十三)神经网络——中:matlab程序实现记录过如何在matlab用代码进行神经网络的训练。 本篇内容将记录如何使用Neural Net Fitting工具箱,做神经网络预测时更为简便。
zstar
2022/06/14
1.3K0
数学建模暑期集训12:神经网络预测——Neural Net Fitting工具箱的使用
bp神经网络应用实例(简述bp神经网络)
clear; clc; TestSamNum = 20; % 学习样本数量 ForcastSamNum = 2; % 预测样本数量 HiddenUnitNum=8; % 隐含层 InDim = 3; % 输入层 OutDim = 2; % 输出层 % 原始数据 % 人数(单位:万人) sqrs = [20.55 22.44 25.37 27.13 29.45 30.10 30.96 34.06 36.42 38.09 39.13 39.99 ... 41.93 44.59 47.30 52.89 55.73 56.76 59.17 60.63]; % 机动车数(单位:万辆) sqjdcs = [0.6 0.75 0.85 0.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25 2.35 2.5 2.6... 2.7 2.85 2.95 3.1]; % 公路面积(单位:万平方公里) sqglmj = [0.09 0.11 0.11 0.14 0.20 0.23 0.23 0.32 0.32 0.34 0.36 0.36 0.38 0.49 ... 0.56 0.59 0.59 0.67 0.69 0.79]; % 公路客运量(单位:万人) glkyl = [5126 6217 7730 9145 10460 11387 12353 15750 18304 19836 21024 19490 20433 ... 22598 25107 33442 36836 40548 42927 43462]; % 公路货运量(单位:万吨) glhyl = [1237 1379 1385 1399 1663 1714 1834 4322 8132 8936 11099 11203 10524 11115 ... 13320 16762 18673 20724 20803 21804]; p = [sqrs; sqjdcs; sqglmj]; % 输入数据矩阵 t = [glkyl; glhyl]; % 目标数据矩阵 [SamIn, minp, maxp, tn, mint, maxt] = premnmx(p, t); % 原始样本对(输入和输出)初始化 SamOut = tn; % 输出样本 MaxEpochs = 50000; % 最大训练次数 lr = 0.05; % 学习率 E0 = 1e-3; % 目标误差 rng('default'); W1 = rand(HiddenUnitNum, InDim); % 初始化输入层与隐含层之间的权值 B1 = rand(HiddenUnitNum, 1); % 初始化输入层与隐含层之间的阈值 W2 = rand(OutDim, HiddenUnitNum); % 初始化输出层与隐含层之间的权值 B2 = rand(OutDim, 1); % 初始化输出层与隐含层之间的阈值 ErrHistory = zeros(MaxEpochs, 1); for i = 1 : MaxEpochs HiddenOut = logsig(W1*SamIn + repmat(B1, 1, TestSamNum)); % 隐含层网络输出 NetworkOut = W2*HiddenOut + repmat(B2, 1, TestSamNum); % 输出层网络输出 Error = SamOut - NetworkOut; % 实际输出与网络输出之差 SSE = sumsqr(Error); % 能量函数(误差平方和) ErrHistory(i) = SSE; if SSE < E0 break; end % 以下六行是BP网络最核心的程序 % 权值(阈值)依据能量函数负梯度下降原理所作的每一步动态调整量 Delta2 = Error; Delta1 = W2' * Delta2 .* HiddenOut .* (1 - HiddenOut); dW2 = Delta2 * HiddenOut'; dB2 = Delta2 * ones(TestSamNum, 1); dW1 = Delta1 * SamIn'; dB1 = Delta1 * ones(TestSamNum, 1); % 对输出层与隐含层之间的权值和阈值进行修正 W2 = W2 + lr*dW2; B2 = B2 + lr*dB2; % 对输入层与隐含层之间的权值和阈值进行修正 W1 = W1 + lr*dW1; B1 = B1 + lr*dB1; end HiddenOut = logsig(W1*SamIn + repmat(B1, 1, TestSamNum)); % 隐含层输出最终结果 NetworkOut = W2*HiddenOut + repmat(B2, 1, TestSamNum); % 输
全栈程序员站长
2022/07/31
1.7K0
bp神经网络应用实例(简述bp神经网络)
MATLAB强化学习入门——三、深度Q学习与神经网络工具箱
上一期的文章《网格迷宫、Q-learning算法、Sarsa算法》的末尾,我们提到了Q学习固有的缺陷:由于智能体(agent)依赖以状态-动作对为自变量的Q函数表(Q Function Table)来形成对当前状态的估计,并以此为依据利用策略π选择动作。Q函数表就必须包含智能体在环境中所可能出现的所有动作-状态对及其对应Q值。显然,当一个多步决策问题变得足够复杂甚至变为连续决策或控制问题时,Q学习本身是无力应对的。例如,对于复杂的多步决策问题,庞大而结构复杂的Q表将变得难以存储和读取;将网格迷宫的长、宽各扩大10倍,Q表则变成原来的100倍。对于连续决策/控制问题时,Q表更是无法记录所有的状态。 那么,如何解决这一问题呢? 一个直截的想法就是,选择某个多元函数,逼近Q表中“自变量”动作-状态对与“因变量”Q值形成的关系。但这样做依然存在问题:对于不同的强化学习问题,Q表中的数据呈现出各异的曲线特性,只有找到符合Q表数据的函数形式,才可能良好的逼近Q表。选择传统函数进行逼近,显然是很难实现编程自动化的。 神经网络(Neural Network)恰恰是这么一种有别于传统函数逼近的解决方案。而从数学的角度讲,神经网络本质上就是一种强大的非线性函数逼近器。将神经网络与Q学习结合起来,就得到了能够解决更复杂问题的Q-Network以及使用深度神经网络的Deep-Q-Network (DQN)。 Deep-Q-Learning的算法究竟是什么样的?浙江大学的《机器学习和人工智能》MOOC有着大致的讲解。而如何实现Deep-Q-Learning?莫烦Python以及北理工的MOOC也给出了Python语言的详细示范。 尽管有关Deep-Q-Learning的程序和讲解已经很多权威且易懂的内容;准确的理解Deep-Q-Learning算法,并在MatLab上实现,则是完成强化学习控制这个最终目标的关键。具体到Deep-Q-Learning的实现上,它不仅与之前的Q-Learning在程序结构上有着相当大的区别,直接将它应用于连续控制问题也会是非常跳跃的一步。因此,在这一期的文章里,问题将聚焦在前后两个问题之间:如何使用神经网络让智能体走好网格迷宫? 将这个问题再细分开来,则包括两部分:
全栈程序员站长
2022/11/10
2.6K0
MATLAB强化学习入门——三、深度Q学习与神经网络工具箱
使用python创建自己的第一个神经网络模型吧!
神经网络(NN),也被称为人工神经网络(ANN),是机器学习领域中学习算法的子集,大体上借鉴了生物神经网络的概念。目前,神经网络在计算机视觉、自然语言处理等领域应用广泛。德国资深机器学习专家Andrey Bulezyuk说到,“神经网络正在彻底改变机器学习,因为它们能够有效地模拟各种学科和行业的复杂抽象,且无需太多人工参与。” 大体上,人工神经网络基本包含以下组件:
用户7886150
2020/12/28
5250
浅谈神经网络
一、神经网络介绍 神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体作出的交互反应。 神经网络中最基本的成分是神经元(neuron)模型,即简单神经元。 (1)神经元:模拟人体结构,将数据输入神经元,中间通过激活函数f(x),即一组算法,输出结果。它是组成神经网络的最小单位。 神经元示意图如下图所示: 图1 神经元示意图 为输入向量的各个分量;为神经元各个突触的权值;系数1与为偏置;f为传递函数,通常为非线性函数;t为神经元输出。 可见,一个神经元的功能是
微风、掠过
2018/04/10
9790
深度学习Matlab工具箱代码详解概览
谢谢大家支持,可以让更多朋友和有兴趣志同道合的人关注这个公众号。让知识传播的更加富有活力,谢谢各位读者。 查看之前博文资料请点击右上角查看历史消息 最近研究了几天深度学习的Matlab工具箱代码,发现作者给出的源码中注释实在是少得可怜,为了方便大家阅读,特对代码进行了注释,与大家分享。   在阅读Matlab工具箱代码之前,建议大家阅读几篇CNN方面的两篇经典材料.  (1)《Notes on Convolutional Neural Networks》,这篇文章是与Matlab工具箱代码配套的文献,不过文
量化投资与机器学习微信公众号
2018/01/29
3.4K0
人脸识别 | 卷积深度置信网络工具箱的使用
本文主要以ORL_64x64人脸数据库识别为例,介绍如何使用基于matlab的CDBN工具箱。至于卷积深度置信网络(CDBN,Convolutional Deep Belief Network)的理论知识,只给出笔者整理的一些学习资源。 01 卷积深度置信网络理论知识 参考资料 datas 1、CSDN博客---受限玻尔兹曼机(RBM)学习笔记 (http://blog.csdn.net/itplus/article/details/19168937) 2、CSDN博客---深度信念网络 (Deep
用户1332428
2018/03/08
1.6K0
人脸识别 | 卷积深度置信网络工具箱的使用
matlab训练神经网络模型并导入simulink详细步骤
本文介绍一下怎么把训练好的神经网络导入到simulink并使用,假定有两个变量,一个输出变量,随机生成一点数据
用户9925864
2022/07/27
2.6K0
matlab训练神经网络模型并导入simulink详细步骤
如何利用matlab做BP神经网络分析(利用matlab神经网络工具箱)[通俗易懂]
最近一段时间在研究如何利用预测其销量个数,在网上搜索了一下,发现了很多模型来预测,比如利用回归模型、时间序列模型,GM(1,1)模型,可是自己在结合实际的工作内容,发现这几种模型预测的精度不是很高,于是再在网上进行搜索,发现神经网络模型可以来预测,并且有很多是结合时间序列或者SVM(支持向量机)等组合模型来进行预测,本文结合实际数据,选取了常用的BP神经网络算法,其算法原理,因网上一大堆,所以在此不必一一展示,并参考了bp神经网络进行交通预测的Matlab源代码这篇博文,运用matlab 2016a,给出了下面的代码,并最终进行了预测
全栈程序员站长
2022/08/31
1.4K0
如何利用matlab做BP神经网络分析(利用matlab神经网络工具箱)[通俗易懂]
BP人工神经网络matlab工具箱_matlab神经网络控制
figure, ploterrcorr(errors) %绘制误差的自相关情况(20lags)
全栈程序员站长
2022/10/03
5000
BP人工神经网络matlab工具箱_matlab神经网络控制
MATLAB与深度学习构建神经网络的实用指南
深度学习已经成为现代人工智能研究的一个重要分支,而MATLAB作为一种强大的科学计算工具,为研究人员和工程师提供了构建和训练神经网络的便利。本文将介绍如何在MATLAB中构建神经网络,涵盖基础概念、实用代码示例以及常见问题的解决方案。
一键难忘
2025/01/05
2060
推荐阅读
相关推荐
菜鸟的数学建模之路(四):BP神经网络
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验