神经网络及其matlab仿真

本文进行了神经网络原理简介,并对蜢虫分类问题进行了matlab仿真。
一、神经网络介绍
神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体作出的交互反应。
神经网络中最基本的成分是神经元(neuron)模型,即简单神经元。
(1)神经元:模拟人体结构,将数据输入神经元,中间通过激活函数f(x),即一组算法,输出结果。它是组成神经网络的最小单位。
神经元示意图如下图所示:
这里写图片描述

                  图1 神经元示意图

为输入向量的各个分量;为神经元各个突触的权值;系数1与为偏置;f为传递函数,通常为非线性函数;t为神经元输出。

(2)神经网络
由无数个(人工)神经元组成的神经元网络即为(人工)神经网络。
神经网络需要按照一定的规则进行学习,它的参数权值(以上图为例说明),即为学习成果。通过学习减少神经网络下次犯同样错误的可能性,达到这一目标后,网络才能开展工作。网络学习时,首先给网络的各连接权值赋予(0,1)区间内的随机值,网络将输入模式加权求和、与门限比较,再进行非线性运算。
神经元收到的总输入值与神经元的阈值比较,然后通过激活函数(activation function)处理以产生神经元的输出。一般激活函数为Sigmoid函数(逻辑回归中使用的),该函数连续、可导,具有很好的数学特性。
这里写图片描述
当激活函数输出值为正时,输出为“1”,为负则输出“0”。
以下将以下图为例介绍神经网络的运算过程。
这里写图片描述
图2 多层神经网络意图

上图是由一个输入层、两个隐藏层和一个输出层构成的神经网络。这种也叫多层前馈神经网络(multi-layer feedforward neural networks)。输入层神经元接收外界输入,不进行函数处理,隐层与输出层对信号进行加工,即包含功能神经元,最终输出。只要包含隐层,即可称为多层网络。
隐藏层可以找到数据内在特点,后续层可以在这些特点(而不是嘈杂庞大的原始数据)基础上进行操作,所以隐藏层越多模型效果越好。事实上,直到最近,机器学习技术都没有普遍直接用于原始数据输入,比如图像和音频。相反,机器学习被用于经过特征提取后的数据——也就是说,为了让学习更简单,机器学习被用在预处理的数据上,一些更加有用的特征,比如角度,形状早已被从中提取出来。

(3)神经网络学习方法
神经网络的学习过程,就是根据训练数据来调整神经元之间的连接权,(connection weight)以及每个功能神经元的阈值,所以学习的就是阈值和连接权。譬如说,如果输出结果为“1”(结果正确),则增大连接权值;如果输出结果为“0”(结果错误),则将连接权值向着综合输入加权值减小的方向调整,减小犯同样错误的可能性。网络经过若干次类似的学习调整后,其输出的判断正确率会有明显的改善,达到了学习的目的。
今后当该网络再次遇到类似模式判断时,就能及时做出准确的判断和识别。一般说来,构成网络的神经元个数越多,则它能记忆和识别的模式也就越多,准确度也会越高。

二、BP神经网络(Back-Propagation Neural Networks)
BP神经网络思想如下图所示:
这里写图片描述
图3 BP神经网络思想
给定训练集 。这是一个拥有d个神经元、l个输出神经元、q个隐层神经元的多层前馈网络结构。其中输出层第j个神经元的阈值用表示,隐层第h个神经元阈值用表示,输入层第i个神经元与隐层第h个神经元间连接权为,隐层与输出层为。
如下图所示,隐层第h个神经元收到的输入为,输出层第j个神经元收到的输入为,其中为第h层神经元输出。
这里写图片描述
图4 BP网络算法及变量符号
对于训练集,假定神经网络输出为,。在网络上的均方误差。
图4的网络中有(d+l+1)q+l个参数需要确定。BP是一个迭代(iterate)学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计。
BP算法基于梯度下降(gradient decent)策略,以目标的负梯度方向对参数进行调整,而Sigmoid函数的性质是。所以可以根据一系列计算得到,类似有,,。
学习率控制着算法每一轮迭代更新的步长,太大容易振荡找不到最小值,太小收敛速度过慢。BP算法的工作流程:先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差来对连接权和阈值进行调整,迭代过程循环进行,直到达到条件停止。

三、神经网络matlab仿真实验
实验问题:
蠓虫分类问题可概括叙述如下:生物学家试图对两种蠓虫(Af 与 Apf)进行鉴别,依据的资料是触角和翅膀的长度,已经测得了 9 支 Af 和 6 支 Apf 的数据如下:
Af: (1.24,1.27),(1.36,1.74),(1.38,1.64),(1.38,1.82),(1.38,1.90),(1.40,1.70),(1.48,1.82),(1.54,1.82),(1.56,2.08).
Apf: (1.14,1.82),(1.18,1.96),(1.20,1.86),(1.26,2.00),(1.28,2.00),(1.30,1.96).
现在的问题是:
(i)根据如上资料,如何制定一种方法,正确地区分两类蠓虫。
(ii)对触角和翼长分别为(1.24,1.80),(1.28,1.84)与(1.40,2.04)的 3 个标本,用所得到的方法加以识别。
解答:如上的问题是有代表性的,它的特点是要求依据已知资料(9 支 Af 的数据和 6 支Apf 的数据)制定一种分类方法,类别是已经给定的(Af 或 Apf)。我们将 9 支Af 及 6 支 Apf 的数据集合称之为学习样本。而(1.24,1.80),(1.28,1.84)与(1.40,2.04)的 3 个标本为测试集。

(1)首先画出散点图
这里写图片描述
图5 蜢虫分类散点图

其可能具有一定的非线性特征,此处采用BP(后向传播算法)神经网络算法对其进行分类。

(2)将数据导入matlab;形成p矩阵,为训练集输入,设Af标记为,Apf标记为,则标签矩阵为goal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)]。
(3)设定相关参数:
训练网络采用对数S型函数logsig;
训练目标最小误差为0.000001,即goal=0.000001;
训练次数epoch=5000;
学习速率lr=0.05(为(0,1)之间的一个数);
显示频率:show=20,即每训练20次显示一次。
训练界面
这里写图片描述
图6 蜢虫分类训练界面

可见为两层神经网络,其中中止时仅迭代了18次,此时已经达到中止条件。
这里写图片描述
这里写图片描述
图7 实验结果摘要

最终分类结果:
将测试集代入可以得到矩阵则测试结果分别为Af、Af、Apf(分类结果)。
表1 分类结果表
这里写图片描述

四、总结
神经网络的优势在于可以处理非线性问题的分类,只要设定好了学习参数(如阈值函数、学习速率、目标误差、最大迭代次数等)即可开始训练,计算机可以自动搜索到一个网络模型,训练过程自动化、操作方便。但是由于其使用梯度下降法寻优,不可避免会陷入局部最小值,此时可以加入附加动量mc来进行优化。另外,如果网络规模大,计算量增加,训练时间、收敛时间变长,且学习速率固定,不能根据实际训练过程进行更新和改变。网络的学习和记忆也具有不稳定性,如果增加了学习样本,训练好的网络又需要从头开始训练,对于以前的权值和阈值是没有记忆的。但是可以将预测、分类或聚类做的比较好的权值保存。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页