学习笔记之人工神经网络综述.docx

上传人:b****6 文档编号:5398756 上传时间:2022-12-15 格式:DOCX 页数:13 大小:687.88KB
下载 相关 举报
学习笔记之人工神经网络综述.docx_第1页
第1页 / 共13页
学习笔记之人工神经网络综述.docx_第2页
第2页 / 共13页
学习笔记之人工神经网络综述.docx_第3页
第3页 / 共13页
学习笔记之人工神经网络综述.docx_第4页
第4页 / 共13页
学习笔记之人工神经网络综述.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

学习笔记之人工神经网络综述.docx

《学习笔记之人工神经网络综述.docx》由会员分享,可在线阅读,更多相关《学习笔记之人工神经网络综述.docx(13页珍藏版)》请在冰豆网上搜索。

学习笔记之人工神经网络综述.docx

学习笔记之人工神经网络综述

简介:

人工神经网络(artificialneuralnetwork,缩写ANN),简称神经网络(neuralnetwork,缩写NN),是一种模仿生物神经网络的结构和功能的数学模型或计算模型。

神经网络由大量的人工神经元联结进行计算。

大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统。

现代神经网络是一种非线性统计性数据建模工具,常用来对输入和输出间复杂的关系进行建模,或用来探索数据的模式。

人工神经网络是一个能够学习,能够总结归纳的系统,也就是说它能够通过已知数据的实验运用来学习和归纳总结。

人工神经网络通过对局部情况的对照比较(而这些比较是基于不同情况下的自动学习和要实际解决问题的复杂性所决定的),它能够推理产生一个可以自动识别的系统。

与之不同的基于符号系统下的学习方法,它们也具有推理功能,只是它们是建立在逻辑算法的基础上,也就是说它们之所以能够推理,基础是需要有一个推理算法则的集合。

神经网络是一种运算模型,由大量的节点(或称“神经元”,或“单元”)和之间相互联接构成。

每个节点代表一种特定的输出函数,称为激励函数(activationfunction)。

每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),这相当于人工神经网络的记忆。

网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。

而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。

它的构筑理念是受到生物(人或其他动物)神经网络功能的运作启发而产生的。

人工神经网络通常是通过一个基于数学统计学类型的学习方法(LearningMethod)得以优化,所以人工神经网络也是数学统计学方法的一种实际应用,通过统计学的标准数学方法我们能够得到大量的可以用函数来表达的局部结构空间,另一方面在人工智能学的人工感知领域,我们通过数学统计学的应用可以来做人工感知方面的决定问题(也就是说通过统计学的方法,人工神经网络能够类似人一样具有简单的决定能力和简单的判断能力),这种方法比起正式的逻辑学推理演算更具有优势。

人工神经网络依学习策略分类主要有:

监督式学习网络(SupervisedLearningNetwork),无监督式学习网络(UnsupervisedLearningNetwork),混合式学习网络(HybridLearningNetwork),联想式学习网络(AssociateLearningNetwork),最适化学习网络(OptimizationApplicationNetwork)。

依网络架构分类主要有:

前向式架构(FeedForwardNetwork),回馈式架构(RecurrentNetwork),强化式架构(ReinforcementNetwork)。

几个几本概念:

神经元,单层神经元网络,多层神经元网络。

神经元

单层神经元网络,是最基本的神经元网络形式,由有限个神经元构成,所有神经元的输入向量都是同一个向量。

由于每一个神经元都会产生一个标量结果,所以单层神经元的输出是一个向量,向量的维数等于神经元的数目。

示意图:

多层神经元网络:

人工神经网络的特点和优越性,主要表现在三个方面:

第一,具有自学习功能。

例如实现图像识别时,只是需要先把许多不同的图像样板和对应的应识别的结果输入人工神经网络,网络就会通过自学习功能,慢慢学会识别类似的图像。

自学习功能对于预测有特别重要的意义。

预期未来的人工神经网络计算机将为人类提供经济预测、市场预测、效益预测,其应用前途是很远大的。

第二,具有联想存储功能。

用人工神经网络的反馈网络就可以实现这种联想。

第三,具有高速寻找优化解的能力。

寻找一个复杂问题的优化解,往往需要很大的计算量,利用一个针对某问题而设计的反馈型人工神经网络,发挥计算机的高速运算能力,可能很快找到优化解。

人工神经网络的主要缺点为可解释性差,训练代价比较高。

讲解:

(这里讲的是前向神经网络,或者叫前馈神经网络)

参考出处:

“人工神经网络入门系列”博文——逖靖寒(博客园)

网址:

单层神经网络:

与和或操作用单层神经网络就可以实现,2个神经元作为输入,1个神经元作为输出,模型如下所示:

图1.与操作的神经网络模型

图中把求解权值(w1,w2)和阀值的问题转化为求解权值(w1,w2,w3)的问题,激活函数f(x)=w1*x1+w2*x2+w3*x3。

该ANN通过10000次训练,最终求得三个权值。

训练过程中制定如下学习规律:

W(i)=W(i)+(正确值-实际计算的值)*x(i)。

通过一定次数的训练,我们就可以让(正确值-实际计算的值)变得相当小,这样最后的结果也就稳定了,同时求出了我们需要的w1,w2,w3的近似值。

多层神经网络:

用单层神经网络去训练异或操作,发现结果并不理想,网上给出的解释是单层神经网络的学习能力有限,需要使用更加复杂的网络模型。

至于使用多少层的网络,查阅相关资料,得到的结论是:

1.一般认为,增加隐层数可以降低网络误差,提高精度,但也使网络复杂化,从而增加了网络的训练时间和出现“过拟合”的倾向。

2.若输入层和输出层采用线性转换函数,隐层采用Sigmoid转换函数,则含一个隐层的MLP网络能够以任意精度逼近任何有理函数。

在设计BP网络时可参考这一点,应优先考虑3层BP网络(即有1个隐层)。

3.一般地,靠增加隐层节点数来获得较低的误差,其训练效果要比增加隐层数更容易实现。

其中,sigmoid转换函数是f(x)=1/[1+e^(-x)],图形如下:

图2.Sigmoid函数图像(当倾斜系数为1)

可以看出,sigmoid函数是一个良好的阈值函数,连续,光滑,严格单调,关于(0,0.5)中心对称。

如果x=a*r.其中a为倾斜系数,当a足够小,这个图形可以无限制接近阈值函数,效果如下:

图3.Sigmoid函数图像(当倾斜系数为5)

在设计异或操作的ANN时,采用了3层神经网络(其实前面所说的单层是两层,输入层,输出层),添加了一个隐藏层Hidden。

问题:

3层神经网络实现异或学习的效果要好于单层,但是也有学习失败的情况发生。

修改了训练次数,发现问题还是没有很好解决。

增加隐藏层的神经元个数为3,结果好很多。

3层神经网络对于与或操作的学习效果反而不如单层的效果,网上给出的解释为:

不同的网络对不同的情况都有不同的适应程度,这就需要深层的理论支持了。

增加隐藏神经元个数为3,结果好很多。

BP算法:

BP算法,误差反向传播(ErrorBackPropagation,BP)算法。

BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。

由于多层前馈网络的训练经常采用误差反向传播算法,人们也常把将多层前馈网络直接称为BP网络。

1)正向传播:

输入样本->输入层->各隐层(处理)->输出层

注1:

若输出层实际输出与期望输出(教师信号)不符,则转入2)(误差反向传播过程)

2)误差反向传播:

输出误差(某种形式)->隐层(逐层)->输入层

其主要目的是通过将输出误差反传,将误差分摊给各层所有单元,从而获得各层单元的误差信号,进而修正各单元的权值(其过程,是一个权值调整的过程)。

注2:

权值调整的过程,也就是网络的学习训练过程(学习也就是这么的由来,权值调整)。

BP网络具有很强的非线性映射能力,一个3层BP神经网络能够实现对任意非线性函数进行逼近(根据Kolrnogorov定理)。

BP算法是一种监督类型的算法,也是局部优化的算法,是前向算法,一般采用梯度下降。

层前向神经网络不具有侧抑制和反馈的连接方式,即不具有本层之间或指向前一层的连接弧,只有指向下一层的连接弧。

代表是BP神经网络:

输入模式由输入层进入网络,经中间各隐层的顺序变换,最后由输出层产生一个输出模式

BP算法实现步骤(软件):

1)初始化

2)输入训练样本对,计算各层输出

3)计算网络输出误差

4)计算各层误差信号

5)调整各层权值

6)检查网络总误差是否达到精度要求

满足,则训练结束;不满足,则返回步骤2)

梯度下降法:

一、基本概念

梯度下降法,就是利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代能使待优化的目标函数逐步减小。

梯度下降法是2范数下的最速下降法。

最速下降法的一种简单形式是:

x(k+1)=x(k)-a*g(k),其中a称为学习速率,可以是较小的常数。

g(k)是x(k)的梯度。

梯度下降法是按下面的流程进行的:

1)首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。

2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。

为了更清楚,给出下面的图:

这是一个表示参数θ与误差函数J(θ)的关系图,红色的部分是表示J(θ)有着比较高的取值,我们需要的是,能够让J(θ)的值尽量的低。

也就是深蓝色的部分。

θ0,θ1表示θ向量的两个维度。

在上面提到梯度下降法的第一步是给θ给一个初值,假设随机给的初值是在图上的十字点。

然后我们将θ按照梯度下降的方向进行调整,就会使得J(θ)往更低的方向进行变化,如图所示,算法的结束将是在θ下降到无法继续下降为止。

当然,可能梯度下降的最终点并非是全局最小点,可能是一个局部最小点,可能是下面的情况:

上面这张图就是描述的一个局部最小点,这是我们重新选择了一个初始点得到的,看来我们这个算法将会在很大的程度上被初始点的选择影响而陷入局部最小点

相关概念:

模拟退火算法,梯度下降,遗传算法,蚁群算法

除了梯度算法,还有其他的算法来进行局部优化和逼近,需要查找

激励函数:

在人工神经网络中,单个神经元的输入与输出之间的函数关系叫做激励函数。

常见激励函数:

Sigmoid函数,是连续,可导,有界,关于原点对称的增函数,呈S形,具体可用反正切函数arctan或指数函数exp来实现,如f(x)=arctan(x)/(pi/2),f(x)=1/(1+e-x);

阶跃函数,是sigmoid函数的不可导版本;

径向基函数,是函数值沿从输入空间中某点向外辐射的径向射线变化的函数,在空间呈球形。

一般来说,神经网络的激励函数有以下几种:

阶跃函数,准线性函数,双曲正切函数,Sigmoid函数等等,其中sigmoid函数就是S型函数。

参考相关文章:

从文章叙述可以知道,激励函数是用来加入非线性因素的,因为线性模型的表达能力不够。

有些数据是非线性可分的,所以需要通过激活函数来使得这组数据线性可分。

为神经元的输出公式,输入的加权和由一个非线性函数传递,b表示与偏差输入相关的权值,σ为传递函数,也就是激励函数,或者叫激活函数。

扩号内的部分叫做静激活。

使用最广泛的函数为S型函数,其曲线家族包括对数函数,双曲正切函数,对数函数就是sigmoid函数,双曲正切函数为tanh/双曲正切:

tanh(x)=sinh(x)/cosh(x)=[e^x-e^(-x)]/[e^x+e^(-x)]。

摘自:

2.常用激活函数

激活函数的选择是构建神经网络过程中的重要环节,下面简要介绍常用的激活函数。

(1)线性函数(LinerFunction)

(2)斜面函数(RampFunction)

(3)阈值函数(ThresholdFunction)

图2.阈值函数图像

以上3个激活函数都是线性函数,下面介绍两个常用的非线性激活函数。

(4)S形函数(SigmoidFunction)

  该函数的导函数:

(5)双极S形函数

  该函数的导函数:

  S形函数与双极S形函数的图像如下:

图3.S形函数与双极S形函数图像

  双极S形函数与S形函数主要区别在于函数的值域,双极S形函数值域是(-1,1),而S形函数值域是(0,1)。

  由于S形函数与双极S形函数都是可导的(导函数是连续函数),因此适合用在BP神经网络中。

(BP算法要求激活函数可导)

 

神经网络模型:

神经网络是由大量的神经元互联而构成的网络。

根据网络中神经元的互联方式,常见网络结构主要可以分为下面3类:

(1)前馈神经网络;

(2)反馈神经网络;(3)自组合网络。

之前所讲的内容皆为前馈神经网络。

前馈网络也称前向网络。

这种网络只在训练过程会有反馈信号,而在分类过程中数据只能向前传送,直到到达输出层,层间没有向后的反馈信号,因此被称为前馈网络。

感知机(perceptron)与BP神经网络就属于前馈网络。

反馈型神经网络是一种从输出到输入具有反馈连接的神经网络,其结构比前馈网络要复杂得多。

典型的反馈型神经网络有:

Elman网络和Hopfield网络。

自组织神经网络是一种无监督学习网络。

它通过自动寻找样本中的内在规律和本质属性,自组织、自适应地改变网络参数与结构。

Hebb学习律是一种经典的无监督式的学习算法。

Delta学习规则:

Delta学习规则是一种简单的有监督学习算法,该算法根据神经元的实际输出与期望输出差别来调整连接权,其数学表示如下:

其中Wij表示神经元j到神经元i的连接权,di是神经元i的期望输出,yi是神经元i的实际输出,xj表示神经元j状态,若神经元j处于激活态则xj为1,若处于抑制状态则xj为0或-1(根据激活函数而定)。

a是表示学习速度的常数。

假设xi为1,若di比yi大,那么Wij将增大,若di比yi小,那么Wij将变小。

Delta规则简单讲来就是:

若神经元实际输出比期望输出大,则减小所有输入为正的连接的权重,增大所有输入为负的连接的权重。

反之,若神经元实际输出比期望输出小,则增大所有输入为正的连接的权重,减小所有输入为负的连接的权重。

这个增大或减小的幅度就根据上面的式子来计算。

这里,di-yi只是一种计算误差的方法,还有平方误差、均方差等等方法。

那么公式可以表示为

神经元选择为一个单输入单输出的简单情形,数学描述如下:

该神经元具有一个输入x,权重为w,偏差输入为b,目标输出为t,预报输出为y。

则预报误差为:

为消除当误差在整个输入模式上求和时引起的误差符号问题,在delta规则里使用的误差指示是平方误差,定义为:

根据delta规则,最优权值(使平方误差最小)可以在训练过程中从初始权值出发,沿负梯度方向下降得到。

将平方误差对w,b(神经元的可调整参数)进行微分,得:

根据delta原则,权值改变应与误差梯度的负值成比例,引入学习率β,每次迭代中的权值改变可表示为:

这里就是为什么在修正时要用加法和乘以x的原因

学习率β决定了沿梯度方向的移动速度,以确定新的权值。

大的β值会加快权值的改变,小的β值则减缓了权值的改变。

第i次迭代后的新权值可表示为:

Matlab构建前向神经网络:

人工神经网络及其应用实例.pdf

ANN示例:

NOR操作

先考虑用单层神经网络,那么有2个输入,一个输出,输出层神经元的激励函数为Sigmoid函数,训练过程调整权值采用delta学习规则,与多层不同,单层只通过(预估值-期望值)*输入来调整权值。

该方法在求与,或操作时效果可以,但是在做异或操作时效果就不好了。

因此,考虑多层神经网络,那么前面提到,BP网络具有很强的非线性映射能力,一个3层BP神经网络能够实现对任意非线性函数进行逼近(根据Kolrnogorov定理)。

因此,我们设计一个三层的网络,输入层,隐藏层,输出层。

实际为2层神经网络。

先定为2个输入神经元,2个隐藏神经元,1个输出神经元。

隐藏神经元和输出神经元采用sigmoid激励函数,训练过程调整权值采用delta学习规则,梯度下降的方法来调整权值。

调整权值采用的误差为平方误差,求偏导,可以得到梯度下降也就是调节的幅度。

在计算过程中,可根据输出层求得隐藏层到输出层的权值delta1,根据该项反推输入层到隐藏层的权值delta2。

实验结果可以看到,多层可以使结果较为准确,然而有时训练失败,而且与和或操作也训练失败。

这时候考虑增加隐藏层神经元的个数为3,解决了原有的问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1