声明:本文章是根据网上资料,加上自己整理和理解而成,仅为记录自己学习的点点滴滴。可能有错误,欢迎大家指正。
人工神经网络(Artificial Neural Network,简称ANN)是一种模仿生物神经网络结构和功能的计算模型。它由大量的节点(或称神经元)相互连接而成,这些节点通常按照分层的方式组织。
人工神经网络的基本思想是通过模拟生物神经元的工作方式来处理信息。每个神经元接收来自其他神经元的输入信号,并对这些信号进行加权求和,然后通过一个激活函数来产生输出信号。这些输出信号又可以作为其他神经元的输入,从而形成一个复杂的网络结构。下面让我们从生物神经网络说起。
1. 什么是生物神经网络
1.1 生物神经元
众所周知,人类大脑是人体最复杂的器官,由神经元、神经胶质细胞、神经干细胞和血管组成。 神经元(Neuron),也叫神经细胞(Nerve Cell),是携带和传输信息的细胞,是人脑神经系统中最基本的单元。神经元结构如下图所示:
图1 神经元结构图
神经元结构组成部分介绍:
(1) 胞体(soma):是神经元的中心部分,含有细胞的染色体,能够迅速评估同时接收到的数百上千条信息。其中有些信息可能是兴奋性的(“放电”),有些是抑制性的(“不要放电”),胞体的唤起程度取决于所有传入信息的汇总。胞体相当于一个信息处理器,对来自其他神经元的信号进行求和,并产生神经脉冲输出信号。对应生理活动:兴奋或抑制
(2) 细胞突起是由细胞体延伸出来的细长部分,又可分为树突和轴突.
- 树突(Dendrite):树枝状的纤维从细胞体向外伸出,分叉且非常多,这些纤维被称为树突。树突主要是收集来自感觉器官的直接刺激或来自相邻神经元的活动信息,并把传入信息传递给神经元的中心部分即胞体。 每个神经元可以有一或多个树突。总的来说,树突主要起感受器的作用,并且可以接受一个或者多个输入。
- 轴突(axon):从胞体上伸出,上有髓鞘(轴突覆盖物),传递被唤起的神经元自己的信息(兴奋大于抑制)。轴突有时很长,有的人连接脊与脚趾的轴突可以长达一米多。轴突有时会非常短,大脑里中间神经元之间的轴突可能只有不到1厘米长。每个神经元只有一个轴突。总的来说,轴突主要起传输的作用,且只有一个输出。
了解生物神经网络前,我们先了解一些基础概念:
- 动作电位(action potential):当细胞体的唤起达到临界水平时,触发轴突中的电脉冲,轴突内外电荷发生逆转,导致电信号沿轴突传递,我们称之为神经元“放电”
- 全或无原则(all-or-none principle):动作电位没有中间状态,要么放电,要么不放电。
- 静息电位(resting potential):在正常的静止状态时,细胞中的离子使轴突带有少量的负电荷,此时状态即为静息电位。
- 突触小体(terminal buttons):位于轴突末端,灯泡一样的结构。
- 神经递质(neurotransmitter):突触小体中气泡状的小囊泡中所包含的化学物质
- 去极化:减小神经元内的负电位。
- 超极化:增大神经元内的负电位。
- 兴奋阈限:引发动作电位的最低膜电位值。
图2 一个神经元的动作电位图
1.2 生物神经网络
在生物神经网络中,神经元之间没有物理连接,中间留有20纳米左右的缝隙。 每个神经元与其它神经元,通过突触联接进行互联来传递信息,形成一个神经网络,即神经系统。
1.2.1 神经元自身的信息传递
一个典型的神经元能够通过树突和胞体一次接收上千条信息。当胞体被充分唤起时,它自己的信息便会被传递给轴突。轴突通过动作电位将信息传递到突触小体。这个含有神经递质的小泡破裂,将神经递质释放到突触间隙中。形状合适的神经递质分子来到突触后膜时,会停留在受体上并刺激接收细胞。多余的神经递质通过再摄取过程被回收到“发送”神经元中。
图3 神经元自身的信息传递过程
神经元自身的信息传递具体传递步骤为:
第一步:当胞体的唤起达到临界水平时,触发轴突中的电脉冲。
第二步:轴突靠近胞体的一小片膜中的小孔打开,正电子流便可以迅速通过,这部分轴突的内部电荷便从负变成了正。
第三步:之后就像推倒了多米诺骨牌,这些改变沿着轴突前进,使得电信号从胞体被传到轴突末梢。
1.2.2 神经元之间的信息传递
神经元之间通过一种特殊的电信号传递信息。有些信号将身体外面的信息,比如你看到的、听到的或者闻到的,传递给大脑。有些信号则是给身体里的器官,腺体和肌肉的指令。神经元通过自己的树突从它相邻的神经元那里接收信号。接着,这些信号被传递到细胞主体,也就是胞体。然后,信号离开胞体,沿着轴突一路向下到达突触。在这个过程中,髓鞘包裹着轴突,将电信号们和外界隔离开来,加快信号传递的速度。最后,信号离开突触,并被传递给下一个神经细胞。
神经元之间的“信息”传递,属于化学物质传递。一个神经元可被视为一种仅有两种状态的细胞:兴奋(放电)和抑制(不放电)。神经元的状态取决于从其它的神经细胞收到的输入信号量,及突触的强度(抑制或加强)。 当信号量总和超过了某个阈值时,细胞体就会被“激活(activation)”,也就会兴奋。当它“兴奋(fire)”时,就会向与它相连的神经元发送化学物质(神经递质, neurotransmiter),从而改变这些神经元的电位;如果某些神经元的电位超过了一个“阈值(threshold)”,那么,它也会“兴奋”起来,接着向其它神经元发送化学物质,犹如涟漪一般,一层接着一层传播,如图所示。
图4 神经元间的信息传递
神经元间的信息传递具体传递步骤为:
第一步:当电脉冲抵达突触小体时,突触小体中气泡状的小泡会破裂,释放出其中的化学物质,即神经递质。
第二步:这些神经递质会尝试着将神经信息传过与相邻神经元的间隙,即神经递质嵌入邻近神经元上的特定受点,胞体被唤起,将信息传递下去。
第三步:没有与之相匹配的受点的神经递质则会被再摄取,回收到囊泡中去,其余的神经递质被相应的酶所分解。
2、什么是人工神经网络
2.1 人工神经元
1943 年,心理学家 Warren McCulloch 和数学家 Walter Pitts 最早提出并给出了人工神经网络的概念及人工神神经元的数学模型,这种神经元模型称为MP 模型(即McCulloch-Pitts模型),是最早的神经元模型之一,至此开启了人工神经网络研究的序幕。下图是MP 模型图。看不懂,别着急,往下看,和生物神经元类比就明白了。
图5 M-P神经元模型图
人工神经元模型是一个包含输入,输出与计算功能的模型。
- 对于生物神经网络中的单个神经元而言, 人工神经元的前半端(下图中红色虚线框)相当于生物神经元的树突,是输入端,用来接受多个神经元输出的信号(如图中的a、b、c)并进行组合;
- 人工神经元的后半端(下图中绿色虚线框)相当于生物神经元的轴突,是输出端,用来输出信号(如图中的y) 给接下来更多的神经元;
- 前后端中间的分界线是激活函数,相当于生物神经元的阀值函数,用来对输入的组合信号判断是否达到阀值,如果达到阀值则该神经元激活,向输出端输出信号,否则抑制信号,不进行输出。
- 神经元间的连接强度的强弱用权重表示(如图中的wa、wb、wc)。权重可以看作是连接上的“放大器”或“调节器”,决定着输入信号在通过连接时被增强或减弱的程度。
图6 人工神经元的基本原理
2.2人工神经网络
人工神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。芬兰计算机科学家Teuvo Kohonen对神经网络定义为:“神经网络,是一种由具有自适应性的简单单元(即神经元)构成的广泛并行互联的网络,它的组织结构能够模拟生物神经系统对真实世界所作出的交互反应。”
仿照生物神经网络,构建多层人工神经网络,每一层的人工神经元都与其前后层的神经元相互连接,如图7所示。在每个连接上显示了相关的连接权重,较小的权重将弱化信号,而较大的权重将放大信号。
图7 人工神网络的基本原理
- 输入层(输入节点):相当于生物神经元的树突,是输入端,用来接受多个神经元输出的信号并进行组合。在输入节点中,不进行任何的计算——仅向隐藏节点传递信息
- 中间层(也叫隐藏层或隐藏节点):相当于生物神经元的阀值函数,用来对输入的组合信号判断是否达到阀值,如果达到阀值则该神经元激活,向输出端输出信号,否则抑制信号,不进行输出。隐藏层和外部世界没有直接联系(由此得名)。这些节点进行计算,并将信息从输入节点传递到输出节点。
- 输出层(输出节点):相当于生物神经元的轴突,是输出端,用来输出信号给接下来更多的神经元。主要负责计算,并从网络向外部世界传递信息。
图中输入层有3个输入单元,隐藏层有3个单元,输出层有3个单元。
因此,神经网络的基本原理是将神经网络的输出值y与训练样本中标定的真实输出值进行比较,计算出输出误差,之后再使用这个误差值来指导前后两层中每两个神经元之间连接权重的调整,进而逐步改善神经网络的输出值,直至与训练样本的真实输出值之间的误差达到很小,在设定的可容忍范围内为止。可以看出,前后两层中每两个神经元之间的连接权重就是神经网络需要进行学习的内容,对这些连接权重持续进行优化,才能使神经网络的输出越来越好,达到我们满意的结果。
注意:
- 设计一个神经网络时,输入层与输出层的节点数往往是固定的,中间层则可以自由指定;
- 神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别;
- 结构图里的关键不是圆圈(代表“神经元”),而是连接线(代表“神经元”之间的连接)。每个连接线对应一个不同的权重(其值称为权值),这是需要训练得到的。
3. 人工神经网络的发展
3.1 神经网络的发展历程
下面了解一下人工神经网络发展的历程。从单层神经网络(感知器)开始,到包含一个隐藏层的两层神经网络,再到多层的深度神经网络,一共有三次兴起过程。详见下图。
3.2 神经网络的分类
下面重点介绍下单层神经网络、两层神经网络和多层神经网络。
(1)神经元模型
由上面的介绍已知神经元模型。我们可将神经元模型用下图表示:包含有3个输入,1个输出。
图8 神经元模型
(2)单层神经网络(感知器)
继MP模型提出后,于1958年,计算科学家Rosenblatt提出了由两层神经元组成的神经网络。他给它起了一个名字--“感知器”(Perceptron)(有的文献翻译成“感知机”,下文统一用“感知器”来指代)。感知器是当时首个可以学习的人工神经网络。
下面来说明感知器模型。在原来MP模型的“输入”位置添加神经元节点,标志其为“输入单元”。其余不变,于是我们就有了下图:从本图开始,我们将权值w1, w2, w3写到“连接线”的中间。
图9 单层神经网络
在“感知器”中,有两个层次。分别是输入层和输出层。输入层里的“输入单元”只负责传输数据,不做计算。输出层里的“输出单元”则需要对前面一层的输入进行计算。我们把需要计算的层次称之为“计算层”,并把拥有一个计算层的网络称之为“单层神经网络”。有一些文献会按照网络拥有的层数来命名,例如把“感知器”称为两层神经网络。
具体的感知机内容详见:从零开始:神经网络(2)——MP模型-CSDN博客
(3)两层神经网络(多层感知器)
单层神经网络无法解决异或问题。但是当增加一个计算层以后,两层神经网络不仅可以解决异或问题,而且具有非常好的非线性分类效果。
两层神经网络除了包含一个输入层,一个输出层以外,还增加了一个中间层(如下图中的a1、a2)。此时,中间层和输出层都是计算层。我们扩展上节的单层神经网络,在右边新加一个层次(只含有一个节点)。
图10 两层神经网络
(4)多层神经网络(深度学习)
两层神经网络虽然轻松解决了异或问题,但仍存在很多问题,如训练时长久,容易陷入局部最优。此外,隐藏层的节点数需要进行调整,而这个过程比较繁琐,不太方便使用。
在2006年,Hinton在《Science》和相关期刊上发表了论文,首次提出了“深度信念网络”的概念。与传统的训练方式不同,“深度信念网络”有一个“预训练”(pre-training)的过程,这可以方便的让神经网络中的权值找到一个接近最优解的值,之后再使用“微调”(fine-tuning)技术来对整个网络进行优化训练。这两个技术的运用大幅度减少了训练多层神经网络的时间。他给多层神经网络相关的学习方法赋予了一个新名词--“深度学习”。
我们延续两层神经网络的方式来设计一个多层神经网络。在两层神经网络的输出层后面,继续添加层次。原来的输出层变成中间层,新加的层次成为新的输出层。依照这样的方式不断添加,我们可以得到更多层的多层神经网络。所以可以得到下图。
图11 多层神经网络
多层神经网络中,输出也是按照一层一层的方式来计算。从最外面的层开始,算出所有单元的值以后,再继续计算更深一层。只有当前层所有单元的值都计算完毕以后,才会算下一层。有点像计算向前不断推进的感觉。所以这个过程叫做“正向传播”。
3.3 神经网络发展的效果
随着神经网络的发展,其表示性能越来越强。从单层神经网络,到两层神经网络,再到多层神经网络,下图说明了,随着网络层数的增加,以及激活函数的调整,神经网络所能拟合的决策分界平面的能力。
可以看出,随着层数增加,其非线性分界拟合能力不断增强。图中的分界线并不代表真实训练出的效果,更多的是示意效果。神经网络的研究与应用之所以能够不断地火热发展下去,与其强大的函数拟合能力是分不开关系的。
3.4 神经网络发展的外因
当然,光有强大的内在能力,并不一定能成功。一个成功的技术与方法,不仅需要内因的作用,还需要时势与环境的配合。神经网络的发展背后的外在原因可以被总结为:更强的计算性能,更多的数据,以及更好的训练方法。只有满足这些条件时,神经网络的函数拟合能力才能得已体现,见下图。
图12 发展的外在原因
在单层神经网络年代,由于当时的计算性能不足,导致Rosenblat无法制作一个双层分类器。而10年以后,计算机CPU的快速发展已经使得我们可以做两层神经网络的训练,并且还有快速的学习算法BP。但是在两层神经网络快速流行的年代。更高层的神经网络由于计算性能的问题,以及一些计算方法的问题,其优势无法得到体现。直到2012年,研究人员发现,用于高性能计算的图形加速卡(GPU)可以极佳地匹配神经网络训练所需要的要求:高并行性,高存储,没有太多的控制需求,配合预训练等算法,神经网络才得以大放光彩。
互联网时代,大量的数据被收集整理,更好的训练方法不断被发现。所有这一切都满足了多层神经网络发挥能力的条件,所谓是“时势造英雄”。