许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  利用MATLAB快速构建神经网络

利用MATLAB快速构建神经网络

阅读数 69
点赞 0
article_banner

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里输出命令

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神经网络工具箱的一个注解,希望能够对你有多帮助。当然笔者水平有限,写都不对的地方还是希望你能够私信给我,大家共同学习。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...

相关文章
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空