人工神经网络

维基百科,自由的百科全书
跳转至: 导航搜索

机器学习认知科学领域,人工神经网络(artificial neural network,缩写ANN),简称神经网络(neural network,缩写NN)或類神經網絡,是一种模仿生物神经网络(动物的中樞神經系統,特别是大脑)的结构和功能的数学模型计算模型,用于对函数进行估计或近似。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统[來源請求]现代神经网络是一种非线性统计性数据建模工具。典型的神经网络具有以下三个部分:

  • 结构Architecture) 结构指定了网络中的变量和它们的拓扑关系。例如,神经网络中的变量可以是神经元连接的权重(weights)和神经元的激励值(activities of the neurons)。
  • 激励函数(Activity Rule) 大部分神经网络模型具有一个短时间尺度的动力学规则,来定义神经元如何根据其他神经元的活动来改变自己的激励值。一般激励函数依赖于网络中的权重(即该网络的参数)。
  • 学习规则(Learning Rule)学习规则指定了网络中的权重如何随着时间推进而调整。这一般被看做是一种长时间尺度的动力学规则。一般情况下,学习规则依赖于神经元的激励值。它也可能依赖于监督者提供的目标值和当前权重的值。

例如,用于手写识别的一个神经网络,有一组输入神经元。输入神经元会被输入图像的数据所激活。在激励值被加权并通过一个函数(由网络的设计者确定)后,这些神经元的激励值被传递到其他神经元。这个过程不断重复,直到输出神经元被激活。最后,输出神经元的激励值决定了识别出来的是哪个字母。

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

和其他机器学习方法一样,神经网络已经被用于解决各种各样的问题,例如机器视觉语音识别。这些问题都是很难被传统基于规则的编程所解决的。

背景[编辑]

对人类中枢神经系统的观察启发了人工神经网络这个概念。在人工神经网络中,简单的人工节点,称作神经元(neurons),连接在一起形成一个类似生物神经网络的网状结构。

人工神经网络目前没有一个统一的正式定义。不过,具有下列特点的统计模型可以被称作是“神经化”的:

  • 具有一组可以被调节的权重,换言之,被学习算法调节的数值参数,并且
  • 可以估计输入数据的非线性函数关系

这些可调节的权重可以被看做神经元之间的连接强度。

人工神经网络与生物神经网络的相似之处在于,它可以集体地、并行地计算函数的各个部分,而不需要描述每一个单元的特定任务。神经网络这个词一般指统计学认知心理学人工智能领域使用的模型,而控制中央神经系统的神经网络属于理论神经学计算神经学

在神经网络的现代软件实现中,被生物学启发的那种方法已经很大程度上被抛弃了,取而代之的是基于统计学信号处理的更加实用的方法。在一些软件系统中,神经网络或者神经网络的一部分(例如人工神经元)是大型系统中的一个部分。这些系统结合了适应性的和非适应性的元素。虽然这种系统使用的这种更加普遍的方法更适宜解决现实中的问题,但是这和传统的连接主义人工智能已经没有什么关联了。不过它们还有一些共同点:非线性、分布式、并行化,局部性计算以及适应性。从历史的角度讲,神经网络模型的应用标志着二十世纪八十年代后期从高度符号化的人工智能(以用条件规则表达知识的专家系统为代表)向低符号化的机器学习(以用动力系统的参数表达知识为代表)的转变。

历史[编辑]

沃伦·麦卡洛克沃尔特·皮茨(1943)基于数学和一种称为阈值逻辑的算法创造了一种神经网络的计算模型。这种模型使得神经网络的研究分裂为两种不同研究思路。一种主要关注大脑中的生物学过程,另一种主要关注神经网络在人工智能里的应用。

赫布型学习[编辑]

二十世纪40年代后期,心理学家唐纳德·赫布根据神经可塑性的机制创造了一种对学习的假说,现在称作赫布型学习。赫布型学习被认为是一种典型的非监督式学习规则,它后来的变种是长期增强作用的早期模型。从1948年开始,研究人员将这种计算模型的思想应用到B型图灵机上。

法利和韦斯利·A·克拉克(1954)首次使用计算机,当时称作计算器,在MIT模拟了一个赫布网络。

弗兰克·罗森布拉特(1956)创造了感知机。这是一种模式识别算法,用简单的加减法实现了两层的计算机学习网络。罗森布拉特也用数学符号描述了基本感知机里没有的回路,例如异或回路。这种回路一直无法被神经网络处理,直到Paul Werbos(1975)创造了反向传播算法

马文·明斯基西摩·帕尔特(1969)发表了一项关于机器学习的研究以后,神经网络的研究停滞不前。他们发现了神经网络的两个关键问题。第一是基本感知机无法处理异或回路。第二个重要的问题是电脑没有足够的能力来处理大型神经网络所需要的很长的计算时间。直到计算机具有更强的计算能力之前,神经网络的研究进展缓慢。

反向传播算法与复兴[编辑]

后来出现的一个关键的进展是反向传播算法(Werbos 1975)。这个算法有效地解决了异或的问题,还有更普遍的训练多层神经网络的问题。

在二十世纪80年代中期,分散式平行处理(当时称作联结主义)流行起来。David E. Rumelhart和James McClelland(1986)的教材对于联结主义在计算机模拟神经活动中的应用提供了全面的论述。

神经网络传统上被认为是大脑中的神经活动的简化模型,虽然这个模型和大脑的生理结构之间的关联存在争议。人们不清楚人工神经网络能多大程度地反映大脑的功能。

支持向量机和其他更简单的方法(例如线性分类器)在机器学习领域的流行度逐渐超过了神经网络,但是在2000年代后期出现的深度学习重新激发了人们对神经网络的兴趣。

神经元[编辑]

神经元示意图:

Ncell.png
  • a1~an为输入向量的各个分量
  • w1~wn为神经元各个突触的权值
  • b为偏置
  • f为传递函数,通常为非线性函数。一般有traingd(),tansig(),hardlim()。以下默认为hardlim()
  • t为神经元输出

数学表示

  • 为权向量
  • 为输入向量,的转置
  • 为偏置
  • 为传递函数

可见,一个神经元的功能是求得输入向量与权向量的内积后,经一个非线性传递函数得到一个标量结果。

单个神经元的作用:把一个n维向量空间用一个超平面分割成两部分(称之为判断边界),给定一个输入向量,神经元可以判断出这个向量位于超平面的哪一边。

该超平面的方程:

  • 权向量
  • 偏置
  • 超平面上的向量

[1]

神经元网络[编辑]

单层神经元网络[编辑]

是最基本的神经元网络形式,由有限个神经元构成,所有神经元的输入向量都是同一个向量。由于每一个神经元都会产生一个标量结果,所以单层神经元的输出是一个向量,向量的维数等于神经元的数目。

示意图:

SingleLayerNeuralNetwork english.png

多层神经元网络[编辑]

人工神经网络的实用性[编辑]

人工神经网络是一个能够学习,能够总结归纳的系统,也就是说它能够通过已知数据的实验运用来学习和归纳总结。人工神经网络通过对局部情况的对照比较(而这些比较是基于不同情况下的自动学习和要实际解决问题的复杂性所决定的),它能够推理产生一个可以自动识别的系统。与之不同的基于符号系统下的学习方法,它们也具有推理功能,只是它们是建立在逻辑演算法的基础上,也就是说它们之所以能够推理,基础是需要有一个推理演算法则的集合。

人工神经元网络模型[编辑]

通常来说,一个人工神经元网络是由一个多层神经元结构组成,每一层神经元拥有输入(它的输入是前一层神经元的输出)和输出,每一层(我们用符号记做)Layer(i)是由Ni(Ni代表在第i层上的N)个网络神经元组成,每个Ni上的网络神经元把对应在Ni-1上的神经元输出做为它的输入,我们把神经元和与之对应的神经元之间的连线用生物学的名称,叫做突触英语:Synapse),在数学模型中每个突触有一个加权数值,我们称做权重,那么要计算第i层上的某个神经元所得到的势能等于每一个权重乘以第i-1层上对应的神经元的输出,然后全体求和得到了第i层上的某个神经元所得到的势能,然后势能数值通过该神经元上的激活函数(activation function,常是∑函数(英语:Sigmoid function)以控制輸出大小,因為其可微分且連續,方便差量规则(英语:Delta rule)處理。求出该神经元的输出,注意的是该输出是一个非线性的数值,也就是说通过激励函数求的数值根据极限值来判断是否要激活该神经元,换句话说我们对一个神经元网络的输出是否线性不感兴趣。

基本結構[编辑]

一种常见的多层结构的前馈网络(Multilayer Feedforward Network)由三部分組成,

  • 輸入層(Input layer),眾多神經元(Neuron)接受大量非線形輸入訊息。輸入的訊息稱為輸入向量。
  • 輸出層(Output layer),訊息在神經元鏈接中傳輸、分析、權衡,形成輸出結果。輸出的訊息稱為輸出向量。
  • 隱藏層(Hidden layer),簡稱「隱層」,是輸入層和輸出層之間眾多神經元和鏈接組成的各個層面。隱層可以有多層,習慣上會用一層。隱層的節點(神經元)數目不定,但數目越多神經網絡的非線性越顯著,從而神經網絡的強健性(robustness)(控制系統在一定結構、大小等的參數攝動下,維持某些性能的特性。)更顯著。習慣上會選輸入節點1.2至1.5倍的節點。

神经网络的类型已经演变出很多种,这种分层的结构也并不是对所有的神经网络都适用。

學習過程[编辑]

通過訓練樣本的校正,對各個層的權重進行校正(learning)而建立模型的過程,稱為自動學習過程(training algorithm)。具体的学习方法则因网络结构和模型不同而不同,常用反向传播算法(Backpropagation/倒傳遞/逆傳播,以output利用一次微分en:Delta rule來修正weight)來驗證。

參見:神經網絡介紹

種類[编辑]

人工神經網路分類為以下兩種:
1.依學習策略(Algorithm)分類主要有:


2.依網路架構(Connectionism)分類主要有:

理论性质[编辑]

计算能力[编辑]

多层感知器(MLP)是一个通用的函数逼近器,由Cybenko定理证明。然而,证明不是由所要求的神经元数量或权重来推断的。 Hava Siegelmann和Eduardo D. Sontag的工作证明了,一个具有有理数权重值的特定递归结构(与全精度实数权重值相对应)相当于一个具有有限数量的神经元和标准的线性关系的通用图灵机。[2] 他们进一步表明,使用无理数权重值会产生一个超图灵机。

容量[编辑]

人工神经网络模型有一个属性,称为“容量”,这大致相当于他们可以塑造任何函数的能力。它与可以被储存在网络中的信息的数量和复杂性相关。

收敛性[编辑]

没有什么通常意义上的收敛,因为它取决于一些因素。首先,函数可能存在许多局部极小值。这取决于成本函数和模型。其次,使用优化方法在远离局部最小值时可能无法保证收敛。第三,对大量的数据或参数,一些方法变得不切实际。在一般情况下,我们发现,理论保证的收敛不能成为实际应用的一个可靠的指南。

综合统计[编辑]

在目标是创建一个普遍系统的应用程序中,过度训练的问题出现了。这出现在回旋或过度具体的系统中当网络的容量大大超过所需的自由参数。为了避免这个问题,有两个方向:第一个是使用交叉验证和类似的技术来检查过度训练的存在和选择最佳参数如最小化泛化误差。二是使用某种形式的正规化。这是一个在概率化(贝叶斯)框架里出现的概念,其中的正则化可以通过为简单模型选择一个较大的先验概率模型进行;而且在统计学习理论中,其目的是最大限度地减少了两个数量:“风险”和“结构风险”,相当于误差在训练集和由于过度拟合造成的预测误差。

参见[编辑]

外部連結[编辑]

参考文献[编辑]

  1. ^ Hagan, Martin. Neural Network Design. PWS Publishing Company. 1996. ISBN 7-111-10841-8. 
  2. ^ Siegelmann, H.T.; Sontag, E.D. Turing computability with neural nets (PDF). Appl. Math. Lett. 1991, 4 (6): 77–80. doi:10.1016/0893-9659(91)90080-F.