浅谈神经网络

2017-08-13  本文已影响0人  a微风掠过

一、神经网络介绍

神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体作出的交互反应。

神经网络中最基本的成分是神经元(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分类结果表

序号123

触角长度1.241.281.40

翅膀长度1.801.842.04

分类结果AfAfAp

四、总结

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

附代码:

clear

p1=[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];

p2=[1.14,1.82;1.18,1.96;1.20,1.86;1.26,2.001.28,2.00;1.30,1.96];

p=[p1;p2]';

pr=minmax(p);%确定每行的最大最小值

goal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)];

plot(p1(:,1),p1(:,2),'h',p2(:,1),p2(:,2),'o')

net=newff(pr,[3,2],{'logsig','logsig'});%设置为两层神经网络且均为logsig型函数

net.trainParam.show = 10;%显示频率

net.trainParam.lr = 0.01;%学习速率

net.trainParam.goal =0.000001;%目标误差

net.trainParam.epochs = 5000;%迭代次数

net = train(net,p,goal);%开始训练

x=[1.24 1.80;1.28 1.84;1.40 2.04]';%测试集数据

y0=sim(net,p)

上一篇下一篇

猜你喜欢

热点阅读