人工智能应用基础
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.1 神经网络简介

人工神经网络(Artificial Neural Networks,ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。在工程与学术界也常直接简称为“神经网络”或“类神经网络”。

3.1.1 神经元结构

1904年,生物学家发现了神经元的组成结构。神经元通过树突接收信号,到达一定的阈值后会激活神经元细胞,通过轴突把信号传递到末端其他神经元,如图3-2所示。

图3-2 神经元的组成结构

1943年,心理学家Warren McCulloch和数学家Walter Pits发明了神经元模型,非常类似人类的神经元,x1xn模拟树突的输入,不同的权重参数衡量不同的输入对输出的影响,通过加权求和、增加偏置值的方式传输出来,再通过激活函数,得到输出,传递下去,如图3-3所示。

图3-3 神经元模型

此模型沿用至今,并且直接影响着这一领域研究的进展。因而,他们两人可称为人工神经网络研究的先驱。

3.1.2 感知机概述

1. 感知机模型

感知机模型是神经网络最基本的构成部分,如图3-4所示是典型的MP神经元模型,其中包括n个输入,每个输入有各自的连接权重,计算输入与连接权重乘积的和与阈值的差值,作为激活函数的输入,得到输出。

图3-4 典型的MP神经元模型

图中x1, x2, …, xn是从其他神经元传入的输入信号,w1, w2, …, wn分别是传入信号的权重,即参数,是特征的缩放倍数,θ表示一个阈值,或称为偏置值(bias)。神经元综合的输入信号和偏置值相加或相减之后,产生当前神经元最终的处理信号,该信号作为上图中f(*)函数的输入,即f(net),f称为激活函数或激励函数(Activation Function),激活函数的主要作用是加入非线性因素,解决线性模型的表达、分类能力不足的问题。

(1)Sigmod函数

Sigmoid函数的特点是该函数将取值为(-∞,+∞)的数映射到(0,1)之间,如果是非常大的负数,输出就是0;如果是非常大的正数,输出就是1,这样使得数据在传递过程中不容易发散。

Sigmoid函数的公式与图形如图3-5所示:

图3-5 Sigmoid函数的公式与图形

(2)Tanh函数

Tanh是Sigmoid函数的变形,该函数是将(-∞,+∞)的数映射到(−1,1)之间,在实际应用中有比函数Sigmoid更好的效果,其公式与图形如图3-6所示:

图3-6 Tanh函数的公式与图形

(3)ReLU函数

ReLU函数称为修正线性单元(Rectified Linear Unit),是一种分段线性函数,近来比较流行的激活函数。当输入信号小于0时,输出为0;当输入信号大于0时,输出等于输入,其弥补了Sigmoid函数以及Tanh函数的梯度消失问题。

ReLU函数的公式与图形如图3-7所示:

图3-7 ReLU函数的公式与图形

ReLU函数的优点:

• ReLU函数是部分线性的,并且不会出现过饱和的现象,使用ReLU函数得到的随机梯度下降法(SGD)的收敛速度比Sigmodi函数和Tanh函数都快。

• ReLU函数只需要一个阈值就可以得到激活值,不需要像Sigmoid函数一样需要复杂的指数运算。

2. 感知机模型实现分类

(1)分类模型

现在我们有一个简单的任务,需要将下面的三角形和圆形进行分类,如图3-8所示:

图3-8 需要分类的图形散点分布情况

利用上面的感知机模型训练可以得到一条直线,利用线性分开这些数据点。

直线方程如下:

w1*x1+w2*x2+b=0

求解出w1w2b,我们就可以得到图3-9中类似的直线,来分割两种不同类型的数据点:

图3-9 线性分割两种不同类型的数据点

那么这条边界找到了,这个边界是方程w1*x1+w2*x2+b=0,感知机模型则使用函数值w1*x1+w2*x2+b作为激活函数Sigmoid的输入。激活函数将这个输入映射到(0,1)的范围内. 那么可以增加一个维度来表示激活函数的输出。

我们假设g(x)>0.5就为正类(这里指圆形类),g(x)<0.5就为负类(这里指三角形类)。得到的三维图如图3-10所示:第三维z可以看成是一种类别(比如圆形就是+1、三角形就是-1)!

图3-10 线性到非线性

右边输出为1的部分就是说w1*x1+w2*x2+b>0,导致激活函数输出>0.5,从而分为正类(圆形类),

左边输出为-1的部分就是说w1*x1+w2*x2+b<0,导致激活函数输出<0.5,从而分为负类(三角形类)。

(2)参数w权重的作用

参数w是决定那个分割平面的方向所在,分割平面的投影就是直线:

w1*x1+w2*x2+b=0

简单解释如下,已知二元输入x1x2,需要求解系数w=[w1,w2],令方程w1*x1+w2*x2+b=0,那么该直线的斜率就是-w1/w2。随着w1、w2的变动,直线的方向在改变,那么分割平面的方向也在改变。

(3)参数b偏置的作用

参数b是决定竖直平面沿着垂直于直线方向移动的距离,当b>0的时候,直线往左边移动,当b<0的时候,直线往右边移动.

假设我们有图3-11和图3-12:

图3-11 b=-3
直线方程x1+x2-3=0

图3-12 将b减小到0
直线方程x1+x2=0

我们从上图中很容易得到结论:

b>0的时候,直线往左边移动;

b<0的时候,直线往右边移动;

b=0的时候,分割线都是经过原点的。

到这个时候,已经明白了,如果没有偏置,则所有的分割线都是经过原点的,但是现实问题并不会所有的类型都经过原点线性可分。

3.1.3 神经网络结构

1945年,冯·诺依曼领导的设计小组研制成功存储程序式电子计算机,标志着电子计算机时代的开始。1948年,他在研究工作中比较了人脑结构与存储程序式计算机的区别,提出了以简单神经元构成的再生自动机网络结构。但是,由于指令存储式计算机技术的发展非常迅速,迫使他放弃了神经网络研究的新途径,继续投身于指令存储式计算机技术的研究,并做出了巨大贡献。虽然冯·诺依曼的名字是与普通计算机联系在一起的,但他也是人工神经网络研究的先驱之一。

20世纪50年代末,罗森布拉特(F. Rosenblatt)设计制作了“感知机”,它是一种多层的神经网络。这项工作首次把人工神经网络的研究从理论探讨付诸工程实践。当时,世界上许多实验室仿效制作了感知机,分别应用于文字识别、声音识别、声呐信号识别及学习记忆问题的研究。然而,这次人工神经网络的研究高潮未能持续很久,许多人陆续放弃了这方面的研究工作,这是因为当时数字计算机的发展处于旺盛时期,许多人误以为数字计算机可以解决人工智能、模式识别、专家系统等方面的一切问题,因而感知机方面的研究工作被冷落了;其次,当时的电子技术工艺水平比较落后,主要的元件是电子管或晶体管,利用它们制作的神经网络体积庞大,价格昂贵,要制作在规模上与真实的神经网络相似是完全不可能的;另外,1968年一本名为《感知机》的著作指出线性感知机功能是有限的,它不能解决如“异或”运算这样的基本问题,而且多层网络还不能找到有效的计算方法,这些论点促使大批研究人员对于人工神经网络的前景失去信心。20世纪60年代末期,人工神经网络的研究进入了低潮。

另外,在20世纪60年代初期,Widrow提出了自适应线性元件网络,这是一种连续取值的线性加权求和阈值网络。后来,在此基础上发展了非线性多层自适应网络。当时,这些工作虽未标出神经网络的名称,而实际上就是一种人工神经网络模型。

随着人们对感知机兴趣的衰退,神经网络的研究沉寂了相当长的时间。20世纪80年代初期,模拟与数字混合的超大规模集成电路制作技术提高到新的水平,实现了商业化,此外,数字计算机的发展在若干应用领域遇到困难。这一背景预示,向人工神经网络寻求出路的时机已经成熟。美国的物理学家Hopfield于1982年和1984年在美国科学院院刊上发表了两篇关于人工神经网络研究的论文,引起了巨大的反响。Hopfield神经网络HNN(Hopfiled Neural Network)是一种结合存储系统和二元系统的神经网络。它保证了向局部极小值收敛,但收敛到错误的局部极小值(Local Minimum),而非全局极小值(Global Minimum)的情况也可能发生。Hopfield神经网络也提供了模拟人类记忆的模型。人们重新认识到神经网络的威力及付诸应用的现实性。随即,一大批学者和研究人员围绕着Hopfield提出的方法展开了进一步的工作,形成了20世纪80年代中期的人工神经网络研究热潮。

神经网络是由多个神经元组成的网络,如图3-13所示。以手写数字识别的项目为例,如图3-14所示中的0~9的手写数字,它们由像素组成,每个像素的值作为输入层的x1xn,输入层的信号传给不同深度、数量的神经元,并进行加权计算,神经元再把信号传给下一级,最后输出一个结果y,代表0~9中的某个数字,如图3-15所示。

图3-13 多层神经网络模型

图3-14 手写数字

图3-15 单层神经网络模型