人工神经网络

来自集智百科 - 复杂系统|人工智能|复杂科学|复杂网络|自组织
http://c2.com/cgi/wiki?$1>Cynthia2018年8月23日 (四) 23:43的版本 →‎反向传播
跳到导航 跳到搜索


该词条由 Cynthia 翻译编辑,由 Leo 审校,【总审校者】总审校,翻译自Wikipedia词条Artificial neural networks

人工神经网络是一组互相连接的节点,与大脑中的大量神经元类似。这里,每个圆形节点代表一个人工神经元 ,一个箭头表示从一个人工神经元的输出连接到另一个的输入。

人工神经网络 (ANNs) 或 联结主义 系统 或许是受到构成动物大脑生物神经网络启发的计算系统。这种系统通过分析样本“学习”执行任务,通常不需要用任何具体的任务规则编程。例如,在图像识别,他们可能通过分析被手动标记成“有猫”和“无猫”的示例图像来学习识别包含猫的图像并利用结果识别其他图像中的猫。他们不需要任何关于猫的先验知识以完成这个任务,例如它们有毛,尾巴,胡须和猫科动物的脸。它们自动地从它们处理的学习材料中产生识别特征。

人工神经网络是基于一些称为人工神经元的相连单元或节点,它们宽泛地模拟了一个生物的大脑中的神经元。每个连接好像一个生物的大脑中的突触,它们可以将信号从一个人工神经元传递到另一个。一个接收信号的人工神经元可以处理它然后发信号给它连接到的额外的人工神经元。

在通常的人工神经网络实现中,在人工神经元之间连接的信号是一个实数,每个人工神经元的输出则由它输入之和的某个非线性函数计算。人工神经元之间的连接成为“边”。人工神经元和边通常有一个随学习进行而调整的权重。这个权重增加或减少一个连接处的信号强度。人工神经元可能有一个阈值以便信号只有在聚集的信号越过这个阈值时才发出。一般地,人工神经元聚集成层,不同的层可能对它们的输入执行不同种类的转换。信号从第一层(输入层)传递到最后一层(输出层),可能会多次穿过这些层。

人工神经网络起初希望达到的目标是用人脑相同方式解决问题。然而,随着时间的发展,人们将注意力转向执行具体的任务,导致了人工神经网络的发展从生物学的偏离。人工神经网络被用于多种任务,包括计算机视觉语音识别机器翻译社交网络滤波,棋类和电子游戏医疗诊断

历史

Warren McCullochWalter Pitts构造了一个关于基于数学算法的神经网络计算模型,称为阈值逻辑。这个模型为神经网络研究铺平了分为两边的道路。一个关注大脑中的生物学过程,而另一个关注神经网络向人工智能的应用。这个工作引领了神经网络的工作以及他们与有限状态机(Finite state machine)的联系。

赫布学习(Hebbian learning)

在19世纪40年代晚期,D.O.Hebb基于神经可塑性的机制构造了一个学习假设,被称为赫布学习。赫布学习是无监督学习(unsupervised learning)。这形成了长程增强效应模型。在1948年,研究者开始将这些想法和B类图灵机应用到计算模型上。

Farley 和Clark首先使用计算机器,后来称作“计算器”,来模拟赫布网络。其他神经网络计算机器被RochesterHolland, Habit 和 Duda创造.

Rosenblatt创造了感知机,这是一种模式识别算法。Rosenblatt 使用数学符号描述了不在基本感知中的电路,如那时无法被神经网络处理的异或电路。

1959年,Nobel laureateHubelWiesel在初级视皮层发现了两种类型的细胞:简单细胞(simple cell)和复杂细胞(complex cell),并基于他们的发现提出了一个生物学模型,

第一个有多层的功能网络由Ivakhnenko和Lapa在1965年发表,它成为了数据处理的组方法

在发现了两个执行神经网络的计算机器关键问题的MinskyPapert研究的[1]后,神经网络的研究停滞了。第一个是基本感知机不能处理异或电路。第二个是计算机没有足够的处理能力来有效地处理大型神经网络需要的任务。神经网络研究减慢知道计算机达到了远远更好的处理能力。

更多的人工智能专注于算法执行的高层面(符号的)模型,以知识体现在如果-那么规则中的专家系统为特征。直到19世纪80年代末期,研究扩展到低层面(次符号的)[2],以知识体现在一个认知模型的参数中为特征。

反向传播(Backpropagation)

Werbos反向传播算法重新燃起了人们对于神经网络和学习的兴趣,它有效地解决了异或问题并且更普遍地加速了多层网络的训练。反向传播通过修改每个节点的权重,反向分散了贯穿层中的误差项。

在19世纪80年代中期,并行分布处理以联结主义的名义变得受欢迎,RumelhartMcClelland描述了联结主义模拟神经过程的作用。

支持向量机(Support vector machine)和其他更简单的方法如线性分类器在机器学习中的受欢迎程度逐步超过了神经网络。然而,使用神经网络改变了一些领域,例如蛋白质结构的预测。

1992年最大池化被引入帮助最小转移不变性和最大容忍性来变形,有助于3D物体识别。2010年,通过最大池化训练的反向传播训练被GPU加速,显示出超过其他池化变体的性能。

梯度消失问题影响使用反向传播的多层[前馈神经网络https://en.wikipedia.org/wiki/Feedforward_neural_network|前馈神经网络] 和循环神经网络(RNN)。由于误差从一层到另一层传播,它们随着层数指数级缩小,阻碍依赖这些误差的的神经元权重的调整,尤其影响深度网络。

为了解决这个问题,Schmidhuber采用了一种多层网络结构,通过无监督学习每次预训练一级然后使用反向传播很好地调整。Behnke在例如图像重建和人脸定位中只依赖梯度符号。

Hinton提出了使用连续层的二进制或潜变量实数受限玻尔兹曼机来模拟每一层学习一种高级别表征。一旦很多层被充分学习,这种深度结构可能像生成模型一样被使用,通过在下采样(一个古老的方法)模型时从顶层特征激活处复制数据。2012年NgDean创造了一个只通过看YouTube视频中未标记的图像学习识别例如猫这样更高层概念的网络。

在训练深度神经网络中早期的挑战被成功地用无监督预训练等方法处理,与此同时可见的计算性能通过GPU和分布计算的使用提升。神经网络被部署在大规模,尤其是在图像和视觉识别问题上。这被称为“深度学习

基于硬件的设计(Hardware-based designs)

用于生物学模拟和神经形态计算的计算设备在CMOS创建。用于很大规模主成分分析和卷积的纳米元件可能创造一类新的神经计算,因为它们根本上是模拟的而不是数字的(尽管第一个实现使用数字设备)。在Schmidhuber 组的.Ciresan 和 colleagues表明,尽管有梯度消失问题,GPU使反向传播对多层前馈神经网络更可行。

竞赛

在2009~2012年间,循环神经网络Schmidhuber的研究组发展的深度前馈神经网络赢得了八个在模式识别[3]的国际竞赛。例如,Graves的双向和多维长短期记忆(LSTM)在2009文件分析和识别国际会议上的连笔手写识别中赢得了三个比赛,而没有任何关于要学习的那三种语言的先验知识。

Ciresan 和同事赢得了模式识别比赛,包括IJCNN2011交通信号识别比赛,ISBI2012电子显微镜栈中的神经结构分割挑战和其他比赛。他们的神经网络是第一个在基准测试数据集中达到能挑战甚至超过人类表现的模式识别模型。这些基准数据集例如交通信号识别(ijcnn2012)或者MNIST手写数字问题

研究人员演示了深度神经网络接口下的隐式马尔科夫模型,它依赖上下文定义神经网络输出层的状态,可以降低在大量词汇语音识别——例如语音搜索——中的误差。【?】

这种方法基于GPU的实现赢得了很多模式识别竞赛,包括IJCNN2011交通信号识别比赛,ISBI2012电子显微镜栈中的神经结构分割挑战和ImageNet竞赛以及其他比赛。

简单复杂细胞启发的,与新认知机相似的深度的高度非线性神经结构和“标准视觉结构”,被Hinton提出的无监督方法预训练。他实验室的一个团队赢得了一个2012年的竞赛,这个竞赛由Merck资助来设计可以帮助找到能识别新药物分子的软件。

卷积网络(Convolutional networks)

自2011起,深度学习前馈网络的艺术状态在卷积层和最大池化层之间切换,位于几层全连接或稀疏连接层和一层最终分类层之上。学习通常不需要非监督预学习。

这种监督深度学习方法第一次达到在某些任务中能挑战人类表现的水平。

ANN能够保证平移不变形来处理在大型聚类场景中的小和大的自然物体,仅当不变性扩展超过平移,对于所有ANN学习的概念如位置,类型(物体分类标记),大小,亮度等。 这被称为启发式网络 (DNs) 具体实现有哪里-什么网络(Where-What Networks), WWN-1 (2008)到 WWN-7 (2013).

模型

一个“人工神经网络”是一个称为人工神经元的简单元素的网络,它们接收输入,根据输入改变内部状态(“激活”),然后依靠输入和激活产生输出,通过连接某些神经元的输出到其他神经元的输入的“网络”形式构成了一个有向的有权图。权重和计算激活的函数可以被称为“学习”的过程改变,这被学习规则控制。

人工神经网络的组成部分(Components of an artificial neural network)

神经元(Neurons)

一个有标记[math]\displaystyle{ {j} }[/math] 的神经元从前驱神经元接收输入 [math]\displaystyle{ {p_j}(t) }[/math] ,这些前驱由下面的部分组成:

  • 一个激活 [math]\displaystyle{ {{a_j}(t)} }[/math], 取决于一个离散时间参数,
  • 可能有一个阈值 [math]\displaystyle{ \theta_j }[/math], 保持不变除非被学习函数改变,
  • 一个激活函数 [math]\displaystyle{ f }[/math] ,从 [math]\displaystyle{ {{a_j}(t)} }[/math], [math]\displaystyle{ \theta_j }[/math]和网络输入[math]\displaystyle{ {p_j}(t) }[/math] 计算在给定时间[math]\displaystyle{ {t+1} }[/math]新的激活
[math]\displaystyle{ {a_j}(t+1) = f({a_j}(t), {p_j}(t), \theta_j) }[/math],
  • 和一个 输出函数 [math]\displaystyle{ f_{out} }[/math] 计算从激活的输出
[math]\displaystyle{ {o_j}(t) = f_{out}({a_j}(t)) }[/math].

通常输出函数只是简单的恒等函数

一个“输入神经元”没有前驱,但作为整个网络的输入接口。同样地,一个“输出神经元”没有后继而作为整个网络的输出接口。

连接和权重(Connections and weights)

网络由连接组成,每个连接传递一个神经元的输出 [math]\displaystyle{ {i} }[/math] 到一个神经元的输入 [math]\displaystyle{ {j} }[/math]. 从这个角度来说, [math]\displaystyle{ {i} }[/math][math]\displaystyle{ {j} }[/math] 的前驱, [math]\displaystyle{ {j} }[/math][math]\displaystyle{ {i} }[/math] 的后继.每个连接被赋予一个权重 [math]\displaystyle{ {w_{ij}} }[/math].

传播函数(Propagation function)

“传播函数”计算“从前驱神经元的输出[math]\displaystyle{ o_i(t) }[/math]到神经元 [math]\displaystyle{ {j} }[/math]的输入”[math]\displaystyle{ p_j(t) }[/math]通常有这种形式:

[math]\displaystyle{ {p_j}(t) = {\sum_{i}} {o_i}(t) {w_{ij}} }[/math]

学习规则(Learning rule)

“学习规则”是一个改变神经网络参数的规则或算法,以便于对网络给定的输入产生偏好的输出。这个学习过程 改变网络中的变量权重和阈值。

作为函数的神经网络(Neural networks as functions)

神经网络模型可以被看成简单的数学模型,定义为一个函数[math]\displaystyle{ \textstyle f : X \rightarrow Y }[/math] 或者是一个 [math]\displaystyle{ \textstyle X }[/math] 上或 [math]\displaystyle{ \textstyle X }[/math][math]\displaystyle{ \textstyle Y }[/math]上的分布。有时模型与一个特定学习规则紧密联系。短语“ANN模型”的通常使用确实是这种函数的“类”的定义(类的成员被不同参数,连接权重或结构的细节如神经元数量或他们的连接获得) 数学上,一个神经元的网络函数 [math]\displaystyle{ \textstyle f(x) }[/math] 被定义为其他函数[math]\displaystyle{ {{g_i}(x)} }[/math]的组合,它可以之后被分解为其他函数。这可以被方便地用一个网络结构表示,它有箭头描述函数间的依赖关系。一类广泛应用的组合是“非线性加权和”, [math]\displaystyle{ \textstyle f(x) = K \left(\sum_i w_i g_i(x)\right) }[/math], 其中 [math]\displaystyle{ \textstyle K }[/math] (通常称为激活函数) 是某种预定义的函数,如双曲正切双弯曲函数柔性最大值传输函数线性整流函数。激活函数最重要的特点是它随输入值变化提供一个平滑的过渡,例如,在输入中一个小的变化产生输出中一个小的变化 。下面指的是一组函数 [math]\displaystyle{ \textstyle g_i }[/math]作为向量 [math]\displaystyle{ \textstyle g = (g_1, g_2, \ldots, g_n) }[/math].

ANN依赖图

本图描述了 [math]\displaystyle{ {f} }[/math]的带有箭头指示出的变量间依赖的这样一种分解,这些可以用两种方式解释。 第一种视角是功能上的:输入[math]\displaystyle{ \textstyle x }[/math] 转化成一个三维向量[math]\displaystyle{ \textstyle h }[/math], 它接着转化为一个二维向量 [math]\displaystyle{ \textstyle g }[/math],它最终转化成 [math]\displaystyle{ {f} }[/math]. 这种视角在优化中经常遇到。 第二种视角是概率上的:随机变量 [math]\displaystyle{ {F = f(G)} }[/math]取决于随机变量 [math]\displaystyle{ \textstyle G = g(H) }[/math],它取决于 [math]\displaystyle{ \textstyle H=h(X) }[/math], 它取决于随机变量 [math]\displaystyle{ \textstyle X }[/math].。这种视角在图模型中经常遇到。 这两种视角大部分等价。不论哪种情况,对于这种特定的结构,单独层的组成互相独立(例如,[math]\displaystyle{ \textstyle g }[/math] 的组成,给定它们的输入[math]\displaystyle{ \textstyle h }[/math]互相独立) 这自然地使实现中的并行成为可能。

循环ANN依赖图的两个单独描述 前述的网络通常称为前馈神经网络,因为它们的图是有向无环图。带有的网络通常称为循环神经网络。这种网络通常被图片顶部的方式描述,其中 [math]\displaystyle{ {f} }[/math] 依赖它自己,而一个隐含的时间依赖没有显示。

学习

学习的可能性在神经网络吸引了最多的兴趣。给定一个特定的“任务”和一类函数[math]\displaystyle{ \textstyle F }[/math]待解决,学习意味着使用一组观测值寻找[math]\displaystyle{ {f^{*}} \in F }[/math],它以某种最优的道理解决任务。 这引发了定义一个损失函数 [math]\displaystyle{ {C} : {F} \rightarrow {\mathbb{R}} }[/math]使得对于最优解[math]\displaystyle{ {f^{*}} }[/math],[math]\displaystyle{ {C}(f^{*}) \leq C(f) }[/math][math]\displaystyle{ \forall {f} \in {F} }[/math]—— 也就是没有解有比最优解更小的损失。 损失函数[math]\displaystyle{ {C} }[/math]是学习中一个重要的概念,因为它是衡量一个特定的解距离一个解决问题的最优解有多远。学习算法搜索解空间寻找一个有最小可能损失的函数。

对于解依赖数据的应用,损失必须必要地作为观测值的函数,否则模型会数据无关。通常定义为一个只能近似的统计量。一个简单的例子是考虑找到最小化[math]\displaystyle{ {C}=E\left[(f(x) - y)^2\right] }[/math]的模型 [math]\displaystyle{ {f} }[/math],对于数据对[math]\displaystyle{ \textstyle (x,y) }[/math] 来自分布[math]\displaystyle{ \textstyle \mathcal{D} }[/math].。在实际情况下我们可能只有 [math]\displaystyle{ \textstyle N }[/math][math]\displaystyle{ \textstyle \mathcal{D} }[/math]采样,这样,对于上面的例子我们只能最小化 [math]\displaystyle{ \textstyle \hat{C}=\frac{1}{N}\sum_{i=1}^N (f(x_i)-y_i)^2 }[/math]. 因此,损失被在数据的一个样本上而不是在整个分布上最小化。

[math]\displaystyle{ \textstyle N \rightarrow \infty }[/math],必须使用【在线机器学习】的某种形式 ,其中损失随着每次观测到新的样本而减小。尽管通常当[math]\displaystyle{ \textstyle \mathcal{D} }[/math]固定时使用在线机器学习,它在分布随时间缓慢变化时最有用。在神经网络方法中,一些种类的在线机器学习通常被用于无限数据集。

选择一个损失函数

虽然可能定义一个【特别的】损失函数,通常使用一个特定的损失函数,无论因为它有需要的性质(例如【凸性质】)或因为它从问题的一种特定公式中自然产生(例如在概率公式中模型的【后验概率】可以被用作相反损失)。最后,损失函数取决于任务。

反向传播

一个【深度神经网络】可以使用标准反向传播算法判别地训练。反向传播是一种计算关于ANN中权重的【损失函数】(产生与给定状态相联系的损失)【梯度】的方法。

连续反向传播的基础由【Kelley】在1960和【Bryson】在1961使用【动态编程】的原则从【控制论】引出。1962,【Dreyfus】发表了只基于【链式法则】的更简单的衍生。1969,Bryson和【Ho】把它描述成一种多级动态系统优化方法。1970,【Linnainmaa】最终发表了嵌套【可微函数】的离散连接网络【自动差分机】(AD)的通用方法。这对应于反向传播的现代版本,它在网络稀疏时仍有效。1973,Dreyfus使用反向传播适配与误差梯度成比例的控制器【参数】。1974,【Werbos】提出将这个规则应用到ANN上的可能,1982他将LInnainmaa的AD方法以今天广泛使用的方式应用到神经网络上。1933,Wan第一个用反向传播赢得国际模式识别竞赛。 反向传播的权重更新可以通过【随机梯度下降】完成,使用下面的等式:

[math]\displaystyle{ w_{ij}(t + 1) = w_{ij}(t) + \eta\frac{\partial C}{\partial w_{ij}} +\xi(t) }[/math]

其中[math]\displaystyle{ \eta }[/math] 是学习速率, [math]\displaystyle{ {C} }[/math]是损失函数, [math]\displaystyle{ \xi(t) }[/math] 是一个随机项。损失函数的选择由如学习类型(监督,无监督,强化等等)和【激活函数】等因素决定。例如,当在【多类分类】问题上使用监督学习,激活函数和损失函数的通常选择分别是【柔性最大值传输函数】和【交叉熵】函数。柔性最大值传输函数定义为 [math]\displaystyle{ p_j = \frac{\exp(x_j)}{\sum_k \exp(x_k)} }[/math] 其中 [math]\displaystyle{ p_j }[/math] 代表类的概率(单元[math]\displaystyle{ {j} }[/math]的输出), [math]\displaystyle{ x_j }[/math][math]\displaystyle{ x_k }[/math] 分别代表单元[math]\displaystyle{ {j} }[/math][math]\displaystyle{ k }[/math]在相同程度上的总输入。交叉熵定义为 [math]\displaystyle{ {C} = -\sum_j d_j \log(p_j) }[/math] 其中 [math]\displaystyle{ d_j }[/math] 代表输出单元[math]\displaystyle{ {j} }[/math] 的目标概率, [math]\displaystyle{ p_j }[/math] 是应用激活函数后 [math]\displaystyle{ {j} }[/math]的输出概率。 这可以被用于以二元掩码的形式输出目标【包围盒】。它们也可以用于多元回归来增加局部精度。基于DNN的回归除作为一个好的分类器外还可以学习捕获几何信息特征。它们免除了显式模型部分和它们的关系。这有助于扩大可以被学习的目标种类。模型由多层组成,每层有一个【线性整流单元】作为它的非线性变换激活函数。一些层是卷积的,其他层是全连接的。每个卷积层有一个额外的最大池化。这个网络被训练【最小化】【L2 误差】 来预测整个训练集范围的掩码包含代表掩码的包围盒。【?】 反向传播的替代包括【极端学习机】,不使用回溯法训练的“无权重”网络,和【非联结主义神经网络】

学习范式(Learning paradigms)

三种主要学习范式对应于特定学习任务。它们是:【监督学习】,【无监督学习】和【强化学习】


监督学习(Supervised learning)

【监督学习】使用一组例子对[math]\displaystyle{ (x, y), x \in X, y \in Y }[/math] ,目标是在允许的函数类中找到一个函数 [math]\displaystyle{ f : X \rightarrow Y }[/math] 匹配例子。 换言之,我们希望推断数据隐含的映射;损失函数与我们的映射和数据间的不匹配相关,它隐含了关于问题域的先验知识。 通常使用的损失函数是【均方误差】,它对所有的例子对在网络输出 [math]\displaystyle{ f(x) }[/math]和目标值[math]\displaystyle{ y }[/math]之间最小化平均平方误差。最小化损失对一类叫做【多层感知机】(MLP)的一类神经网络使用了【梯度下降】,产生了训练神经网络的【反向传播算法】。 监督学习范式中的任务是【模式识别】(也被称为分类)和【回归】(也被称为函数逼近)。监督学习范式也可适用于序列数据(例如手写,语音和手势识别)。这可以被认为是和“老师”学习,以一个根据迄今为止得到解的质量提供连续反馈的函数形式。

无监督学习(Unsupervised learning)

在【无监督学习】中,给定一些数据 [math]\displaystyle{ \textstyle x }[/math] ,要最小化损失函数 ,损失函数可以是数据[math]\displaystyle{ \textstyle x }[/math]和网络输出[math]\displaystyle{ \textstyle f }[/math]的任何函数。 损失函数依赖任务(模型的域)和任何【先验的】假设(模型的隐含性质,它的参数和观测值) 一个琐碎的例子是,考虑模型[math]\displaystyle{ \textstyle f(x) = a }[/math] 其中 [math]\displaystyle{ \textstyle a }[/math] 是一个常数,损失函数为 [math]\displaystyle{ \textstyle C=E[(x - f(x))^2] }[/math]. 最小化这个损失产生了一个 [math]\displaystyle{ \textstyle a }[/math] 的值,它与数据均值相等。损失函数可以更加复杂。它的形式取决于应用:举个例子,在【压缩】中它可以与[math]\displaystyle{ \textstyle x }[/math][math]\displaystyle{ \textstyle f(x) }[/math]间的【交互信息】有关,在统计建模中,它可以与模型给出数据的【后验概率】有关。(注意在这两个例子中这些量应当被最大化而不是最小化) 无监督学习范式中的任务通常是【估计】问题;应用包括【聚类】,【统计分布】的估计,【压缩】和【滤波】。

强化学习(Reinforcement learning)

在【强化学习】中,数据[math]\displaystyle{ \textstyle x }[/math] 通常不被给出,而是由一个代理人与环境的交互生成。 在每个时间点 [math]\displaystyle{ \textstyle t }[/math],,代理做出一个动作 [math]\displaystyle{ \textstyle y_t }[/math],环境根据某种(通常未知)动力学产生一个观测值 [math]\displaystyle{ \textstyle x_t }[/math] ,和一个瞬时损失[math]\displaystyle{ \textstyle c_t }[/math]。目标是找到一个选择动作的方针,它最小化长期损失的某种衡量。例如,期望积累损失。环境的动力学和每种方针的长期损失通常未知,但可以估计。 更正式地说,环境被建模成【马尔科夫决策过程】 (MDP),具有如下概率分布的状态 [math]\displaystyle{ \textstyle {s_1,...,s_n}\in S }[/math]和动作 [math]\displaystyle{ \textstyle {a_1,...,a_m} \in A }[/math] :瞬时损失分布 [math]\displaystyle{ \textstyle P(c_t|s_t) }[/math],观测分布 [math]\displaystyle{ \textstyle P(x_t|s_t) }[/math] 和转移 [math]\displaystyle{ \textstyle P(s_{t+1}|s_t, a_t) }[/math], 方针被定义为给定观测值的动作上的条件分布。合起来,这二者定义了一个【马尔科夫链】(MC)。目标是找到最小化损失的方针(也就是MC)。

强化学习中,ANN通常被用作整个算法的一部分。【Bertsekas】和【Tsiksiklis】给【动态编程】加上ANN(给出神经动力的编程)并应用到如【车辆路径】和【自然资源管理】或【医药】领域中的多维非线性问题。因为ANN能够减小精度损失,甚至在为数值逼近原始控制问题解而降低离散化网格密度时。 强化学习范式中的任务是控制问题,【游戏】和其他序列决策任务。

收敛递归学习算法(Convergent recursive learning algorithm)

这是一种特别为【小脑模型关节控制器】(CMAC)神经网络设计的学习方法。2014,一种递推最小二乘法被引入在线训练【CMAC】神经网络。这个算法可以一步收敛,然后根据任何新输入的数据在一步内更新所有权重。最初,这个算法有O(N3)的【计算复杂度】。基于【QR分解】,这种递推学习算法被简化为O(N).

学习算法

训练一个神经网络模型本质上意味着从一组允许的模型(或者在一个决定在一组允许的模型上分布的贝叶斯框架)中选择一个最小化损失函数的模型。可以使用多种算法训练神经网络模型;它们中的大多数可以被看成【优化】理论和【统计性估计】的直接应用。 大多采用【梯度下降】的某种形式,使用反向传播计算实际梯度。这通过简单的对网络参数取损失函数梯度然后向【梯度相关】方向改变这些参数完成。 反向传播训练算法有这三类:

  • 【最速下降】(带参数学习速率和【动量】,【弹性反向传播】;
  • 拟牛顿 (Broyden-Fletcher-Goldfarb-Shanno),【单步割线】;
  • 【Levenberg-Marquardt】和【共轭梯度】(Fletcher-Reeves 更新, Polak-Ribiére 更新, Powell-Beale 重启,标度共轭梯度)。

【进化法】,【基因表达式编程】,【模拟退火】,【期望最大化】,【非参数方法】和【粒子群算法】是训练神经网络的其他方法。

变体

数据处理的群方法(Group method of data handling)

数据处理的群方法(GMDH) 突出了全自动结构和参数化模型优化。结点激活函数是允许加法和乘法操作的【Kolmogorov】-Gabor多项式。它使用八层的深度前馈多层感知机,是一个逐层增长的【监督学习】网络,其中每层使用【回归分析】训练。使用验证集检测无用的项,通过【正则化】消除。结果网络的尺寸和深度取决于任务。

卷积神经网络(Convolutional neural networks)

卷积神经网络 (CNN) 是一类深度前馈网络,由一或多层【卷积】层和位于其上的全连接层(与典型ANN中的匹配)组成。它使用相等权重和池化层。特别地,最大池化通常通过Fukushima的卷积结构组织。这种结构允许CNN利用输入数据的2D结构

CNN适合处理视觉和其他二维数据,它们在图像和语音应用中展示出了优秀的结果。它们可以被标准反向传播训练。CNN比其他普通的深度前馈神经网络更容易训练且有更少的需要估计的参数。计算机视觉中应用的例子包括【DeepDream】和【机器人导航】。

长短期记忆( Long short-term memory)

长短期记忆 (LSTM) 网络是避免了【梯度消失问题】。LSTM通常被称为遗忘门的循环门扩展。 LSTM网络避免了反向传播误差的消失或爆炸。误差可以通过在空间展开的LSTM中的无限制的虚层反向回流 。也就是说,LSTM可以学习“非常深的学习”任务,这些任务需要记住上千甚至上百万离散时间步前的事件。问题特殊的LSTM形态的拓扑结构可以成为进化的LSTM,能处理长延迟和混合高低频成分的信号。 大量LSTM RNN使用联结主义时间分类(CTC)训练,给定相应输入序列,可以找到一个最大化训练集中标记序列概率的RNN权重矩阵。CTC达到了校准和识别。 2003,LSTM开始在传统语音识别器中具有竞争力。2007,与CTC的结合在语音数据上达到了第一个良好的结果。2009,一个CTC训练的LSTM成为第一个赢得模式识别比赛的RNN,当它赢得了几个连笔【手写识别】比赛。2014,【百度】使用CTC训练的RNN打破了Switchboard Hub5'00语音识别在基准测试数据集上的表现,而没有使用传统语音处理方法。LSTM也提高了大量词汇语音识别,文本到语音合成,对谷歌安卓和真实图片的传声头像。2015,谷歌的语音识别通过CTC训练的LSTM提高了49%的性能。 LSTM在【自然语言处理】中变得受欢迎。不像之前基于【隐式马尔科夫模型】和相似概念的模型,LSTM可以学习识别【上下文有关语言】。LSTM提高了机器翻译,【语言建模】和多语言语言处理。与CNN结合的LSTM提高了自动图像字幕标记。


深度储蓄池计算(Deep reservoir computing)

深度储蓄池计算和深度回声状态网络 (deepESNs)为高效训练的分层处理时序数据的模型提供了一个框架,同时使RNN的层次化构成的内在作用能够探查。

深度置信网络(Deep belief networks)

【File:Restricted_Boltzmann_machine.svg|thumb|一个带有全连接可见和隐藏单元的【受限玻尔兹曼机】 (RBM) 。注意没有隐藏-隐藏和可见-可见连接。】 一个深度置信网络(DBN)是一个概率的【生成模型】,它由多层隐藏层组成。可以被认为是一个组成每一层的简单学习模块的【组合】。 一个DN可以被用于生成地预训练一个DNN,通过使用学习的DBN权重和初始DNN权重。 反向传播或其他差别算法就可以调整这些权重。当训练数据有限时特别有用,因为很差的初始化的权重可以显著阻碍模型表现。这些预训练的权重在权重空间的范围内,这个权重空间距离最优权重比随机选择的权重更近。这允许既提高模型表现又加快好的调整相位收敛。

大内存和检索神经网络

大内存和检索神经网络(LAMSTAR)是多层快速深度学习神经网络,可以同时使用许多滤波。这些滤波可能非线性,随机,逻辑,【非固定】甚至非解析。它们是生物学动机的并且可以连续学习。 LAMSTAR神经网络可以作为在空间或时间或二者兼具的域内的动力神经网络。它的速度由【赫布(Hebbian)】连接权重提供,它整合多种并且通常不同的滤波(预处理函数)到它的与给定学习任务相关的很多层和函数中。这很大程度模拟了整合多种预处理器(【耳蜗】,【视网膜】等)和皮层(听觉,视觉等)和它们的多个域的生物学习。通过使用抑制,相关,它的深度学习能力大大增强,甚至当在任务中时,处理不完整数据的能力或“丢失的”神经元或层的能力也显著增强。由于它的连接权重,它是完全透明的。这些连接权重允许动态地决定更新和去除,并且帮助任务相关的层,滤波或单独神经元的排列。 LAMSTAR被应用于多个领域,包括医药和金融预测,在未知噪音下嘈杂语音的适应性滤波,静态图像识别,视频图像识别,软件安全和非线性系统的适应性控制。LAMSTAR比基于【ReLU】函数滤波和最大池化的CNN在20个对比研究中有明显更快的学习速度,和稍低的错误率。 这些应用展示了钻入数据藏在浅学习网络和人类感觉下的面貌,如预测【睡眠呼吸中止症】,怀孕早期从放在母亲腹部皮肤表面电极记录的胎儿心电图,金融预测或者嘈杂语音的盲过滤的案例。 LAMSTAR在1996被提议(【US Patent|5920852 A】),然后从1997到2002被Graupe和Kordylewski深入开发。一个更改的版本称为LAMSTAR2,被Schneider 和 Graupe在2008开发。

叠加(去噪)自动编码器(Stacked (de-noising) auto-encoders)

【自动编码器】的想法由“好的”表示的概念启发。例如对于一个【分类器】,一个好的表示可以被定义为一个产生了更好表现的分类器。

【编码器】是一个确定映射 [math]\displaystyle{ f_\theta }[/math] ,它将输入向量 x转化为隐藏表示 y, 其中 [math]\displaystyle{ \theta = \{\boldsymbol{W}, b\} }[/math], [math]\displaystyle{ {\boldsymbol{W}} }[/math]是权重矩阵, b 是一个补偿向量(偏置)。 【解码器】反映射隐藏表示 y到重建的输入 z 通过 [math]\displaystyle{ g_\theta }[/math]。整个自动编码的过程是把这个重建输入与原始的作比较,尽量最小化误差使得重建值和原始尽可能的靠近 。 在叠加去噪编码器中,部分【corrupted】输出被清理(去噪),这个想法在2010由Vincent et al提出,使用特殊的好的表示的方法,一个好的表示是可以从【corrupted】输入【鲁棒地】得到,这对恢复相应清洁的输入有用。这个定义隐含了下面的想法:

  • 更高层的表征相对而言对输入【corruption】稳定和鲁棒;
  • 选出对输入分布表征有用的特征是必要的。

这个算法通过[math]\displaystyle{ q_D(\tilde{\boldsymbol{x}}|\boldsymbol{x}) }[/math][math]\displaystyle{ \boldsymbol{x} }[/math][math]\displaystyle{ \tilde{\boldsymbol{x}} }[/math] 的随机映射开始,这是【corrupting】步。然后【corrupted】输入 [math]\displaystyle{ \tilde{\boldsymbol{x}} }[/math] 传过基本自动编码过程,并被映射到隐含表示[math]\displaystyle{ \boldsymbol{y} = f_\theta(\tilde{\boldsymbol{x}}) = s(\boldsymbol{W}\tilde{\boldsymbol{x}}+b) }[/math]。从这个隐含表示中,我们可以重建[math]\displaystyle{ \boldsymbol{z} = g_\theta(\boldsymbol{y}) }[/math]。在最后一步,一个最小化算法运行以使 z尽可能和【uncorrupted】输入[math]\displaystyle{ \boldsymbol{x} }[/math]近。重建误差[math]\displaystyle{ L_H(\boldsymbol{x},\boldsymbol{z}) }[/math]可以是带有双弯曲仿射解码器的【交叉熵】损失,或者【仿射】解码器的平方误差。 为了做出一个深度结构,自动编码器栈。一旦第一个去噪自动编码器的编码函数[math]\displaystyle{ f_\theta }[/math]被学习并且用于改善输入(差的输入),第二级可以被训练。 一旦叠加自动编码器被训练,它的输出可以被用作【监督学习】算法,如【支持向量机】分类器或一个多分类【逻辑回归】的输入。

深度叠加网络( Deep stacking networks )

深度叠加网络 (DSN)(深度凸网络)是基于多块的简化神经网络模块的层级。在2011被Deng和Dong引入。它用带【闭型解】的【凸优化】表达学习,强调机制与【层叠泛化】的相似。 每个DSN块是一个容易被【监督】式自我训练的简单模块,不需要整个块的反向传播。 每块由一个简化的带单隐层的【多层感知机】(MLP)组成。隐藏层 h 有逻辑【双弯曲的】【单元】,输出层有线性单元。这些层之间的连接用权重矩阵U;表示,输入到隐藏层连接有权重矩阵 W。目标向量t 形成矩阵 T的列, 输入数据向量 x形成矩阵 X. 的列。隐藏单元的矩阵是[math]\displaystyle{ \boldsymbol{H} = \sigma(\boldsymbol{W}^T\boldsymbol{X}) }[/math]. 。模块按顺序训练,因此底层的权重 W 在每一阶段已知。函数执行对应元素的【逻辑双弯曲】操作。每块估计同一个最终标记类 y,这个估计被原始输入X 串级起来,形成下一个块的扩展输入。因此第一块的输入只包含原始输入,而下游的块输入加上了前驱块的输出。然后学习上层权重矩阵 U ,给定网络中其他权重可以被表达为一个凸优化问题:

[math]\displaystyle{ \min_{U^T} f = ||\boldsymbol{U}^T \boldsymbol{H} - \boldsymbol{T}||^2_F, }[/math]

,它有闭型解。 不像其他如DBN的深度结构,它的目标不是找到转化的【特征】表示。这种层级的结构使并行学习更简单了,正如批处理模式优化问题。在完全【判别任务】中,DSN比传统的【深度置信网络】(DBN)表现更好。

张量深度叠加网络(Tensor deep stacking networks)

这个结构是 DSN 的延伸.。它提供了两个重要的改善:使用来自【协方差】统计的更高序的信息,并且将低层【非凸问题】转化为一个更高层的凸子问题。TDSN在【双线性映射】中,通过一个第三序的【张量】,从预测同一层的两个不同隐藏单元集合使用协方差统计。 在传统DNN中,并行性和可扩展性不被认为是严重的。DSN和TDSN中所有的学习使用批处理模式, 允许并行化。并行化允许放大这种设计到更大(更深)的结构和数据集。 基本结构适用于多种任务如【分类】和【回归】。

钉板受限玻尔兹曼机(Spike-and-slab RBMs)

深度学习有带【实值】输入的需要,如在高斯受限玻尔兹曼机中一样,引出了“钉板”【受限玻尔兹曼机】,它模拟带严格【二进制】【潜变量】的连续值输入。与基本【RBM】和它的变体一样,钉板【RBM】是【二分图】,好像GRBM一样,可见单元(输入)是实值的。 区别在隐藏层,每个隐藏单元有二进制的发放值【?】和实值的平滑值【?】。spike是一个离散的在零处的【概率质量】,slab是一个连续域上的【概率密度】,它们的混合形成了【先验】。

ss【RBM】的一个扩展是µ-ss[【RBM】,使用【能量函数】中的附加项提供了额外的建模能力。这些项之一使模型形成了spike值的【条件分布】,通过给定一个观测值【边际化出】slab值。

混合层级深度模型(Compound hierarchical-deep models)

混合层级深度模型构成了带非参数【贝叶斯模型】的深度网络。【特征】可以使用像DBN,深度自动编码器,卷积变体,ssRAM,深度编码网络,带稀疏特征学习的DBN,RNN,条件DBN,去噪自动编码器的深度结构学习 。这提供了更好的表示,允许更快的学习和高维数据下更精确的分类。然而,这些结果在学习带少示例的异常类时表现很差,因为所有的网络单元都参与表示输入(分布式表征)并且必须一起被调整(高【自由度】)。限制自由度减少了要学习的参数数量,使从新的例子中的新的类学习更容易。【层次贝叶斯模型】允许从少量示例中学习,例如计算机视觉,【统计学】 和认知科学。 混合HD结构目的是整合HB和深度网络的特征。混合HDP-DBM结构是一种作为层级模型的【层级狄利克雷过程】与DBM结构合并。这是全【生成模型】,从流经模型层的抽象概念中生成,它可以分析在异常类中看起来“合理的”自然的新例子。所以的层级通过最大化一个共同【对数概率分数】被共同学习。

在有三层隐藏层的DBM中,可见输入[math]\displaystyle{ {\boldsymbol{\nu}} }[/math]的概率是 :

[math]\displaystyle{ p(\boldsymbol{\nu}, {\psi}) = {\frac{1}{Z}}{\sum_h{e^{{\sum_{ij}}{W_{ij}^{(1)}}{\nu_i} {h_j}^1 + {\sum_{jl}}{W_{jl}}^{(2)}{h_j^{1}}{h_l^{2}}+{\sum_{lm}}{W_{lm}^{(3)}}{h_l^{2}}{h_m^{3}}}}}, }[/math]

其中[math]\displaystyle{ \boldsymbol{h} = \{\boldsymbol{h}^{(1)}, \boldsymbol{h}^{(2)}, \boldsymbol{h}^{(3)} \} }[/math] 是隐藏单元的集合,[math]\displaystyle{ \psi = \{\boldsymbol{W}^{(1)}, \boldsymbol{W}^{(2)}, \boldsymbol{W}^{(3)} \} }[/math] 是模型参数, 代表可见-隐藏和隐藏-隐藏对称交互作用项。 一个学习后的DBM模型是一个定义联合分布的无向模型[math]\displaystyle{ P(\nu, h^1, h^2, h^3) }[/math]. 一种表达学到的东西的方式是【条件模型】[math]\displaystyle{ P({\nu}, {h^1}, {h^2}|{h^3}) }[/math]和一个先验项[math]\displaystyle{ P(h^3) }[/math].

这里[math]\displaystyle{ P({\nu}, {h^1}, {h^2}|{h^3}) }[/math]代表一个条件DBM网络,它可以被看成两层DBM,但带有[math]\displaystyle{ h^3 }[/math]状态给出的偏置项 :

[math]\displaystyle{ P(\nu, h^1, h^2|h^3) = \frac{1}{Z(\psi, h^3)}e^{\sum_{ij}W_{ij}^{(1)}\nu_i h_j^1 + \sum_{jl}W_{jl}^{(2)}h_j^{1}h_l^{2}+\sum_{lm}W_{lm}^{(3)}h_l^{2}h_m^{3}}. }[/math]

深度预测编码网络(Deep predictive coding networks)

深度预测编码网络 (DPCN)是一个【预测】编码体系,它使用自顶向下信息,经验为主地调整自底向上【推理】过程需要的先验,通过一个深度局部连接的【生成模型】 。这通过使用线性动态模型,从不同时间的观测值提取稀疏【特征】工作。然后一个池化策略被用于学习不变的特征表示。这些单元组成一种【贪心】按层间【无监督学习】训练的深度结构 。这些层构成一种【马尔科夫链】因而任何层的状态只依赖前面和后面的层。

DPCN通过使用自顶向下方法用顶层的信息和过去状态的空间依赖预测层的表征。 DPCN可以被扩展形成一个【卷积网络】。

【记忆 or 内存?多处。】

带单独记忆结构的网络(Networks with separate memory structures)

使用ANN整合外部记忆可以追溯到关于分布表征和【Kohonen】的【自组织映射】的早期研究。例如, 在【稀疏分布式记忆】或【层级空间记忆】中,神经网络编码的模式被用于【可寻址内容的记忆】的地址,使用“神经元”本质上作为地址 【编码器】和【解码器】。 然而早期这种记忆的控制器不可微。

LSTM相关的可微记忆结构(LSTM-related differentiable memory structures)

除了【长短期记忆】(LSTM), 其他方法也在循环函数中加入可微记忆,例如:

  • 交替记忆网络的可微的推和弹动作,称为神经栈机器
  • 控制网络的外部可微存储在其他网络的快速幂中的记忆网络。
  • LSTM遗忘门
  • 带用于寻址和在可微样式(内部存储)快速操作RNN自身权重的特殊输出单元的自我参照的RNN。
  • 学习带无界记忆的转换。
神经图灵机(Neural Turing machines)

神经图灵机将LSTM网络与外部记忆资源结合,这样他们可以通过注意过程相互影响。这种组合系统和【图灵机】相似但是端到端可微,允许使用【梯度下降】有效训练 。初步结果表明神经图灵机可以推断简单算法,如复制,排序和从输入输出例子的联想回忆。 【可微神经计算机】(DNC)是一个NTM的延伸。他们在序列处理任务中表现超过神经图灵机,【长短期记忆】系统和记忆网络。

语义哈希(Semantic hashing )

直接代表过去经验,【使用相同经验形成局部模型】的方法通常称为【最近邻】或【k最近邻】方法。深度学习在语义哈希中十分有用,其中一个深度【图模型】建模由一个大的文档集中获取的字数向量。文档映射到内存地址,这样语义相似的文档位于临近的地址。与查询文档相似的文档可以通过访问所有仅来自查询文档地址的几位不同的地址找到。不像在1000位地址上操作的【稀疏分布记忆】,语义哈希在常见计算机结构的32或64位地址上工作。

记忆网络(Memory networks)

记忆网络是神经网络结合【长期记忆】的另一个扩展。长期记忆可以可以被读写,目的是用来预测。这些模型用于【问题回答】,其中长期记忆有效地作为(动态)知识基础,输出是文本回应。一个来自UCLA萨穆埃利工程学院的电子和计算机工程师团队做出了一种物理人工神经网络。它可以在实际光速下分析大量数据并识别物体。

指针网络(Pointer networks)

深度神经网络可能通过在维持可训练性的同时,加深和减少参数改进。当训练十分深(例如一百万层)神经网络可能不可行,类【CPU】结构如指针网络和神经随机访问机器通过使用外部【随机访问内存】和其他属于【计算机组成】的组件,如【寄存器】,【ALU】和【指针】解决了这个限制。这种系统在储存在记忆单元和寄存器中的【概率分布】向量上操作。这样,模型是全可微并且端到端训练的。这些模型的关键特点是它们的深度,它们短期记忆的大小和参数的数量可以独立切换——不像类似LSTM的模型,它们的参数数量随内存大小二次增长。

编码解码网络(Encoder–decoder networks )

编码解码框架是基于从高度【结构化】输入到高度结构化输出的映射的神经网络。这种方法在【机器翻译】的背景下被提出,它的输入和输出是使用两种自然语言写成的句子。在这个工作中,LSTM RNN或CNN被用作编码机,来总结源语句,这个总结被条件RNN【语言模型】解码来产生翻译。这些系统共享建立的模块:门限RNN,CNN,和训练的注意机制。

多层核机器(Multilayer kernel machine)

多层核机器 (MKM) 是通过迭代应用弱非线性核学习高度非线性函数的方法。它们使用【核主成分分析】 (KPCA),作为一种【无监督】贪心的逐层预训练步深度学习方法。 学到前面层 [math]\displaystyle{ {l} }[/math]的特征, 提取在核产生特征域的投影层 [math]\displaystyle{ {l} }[/math][math]\displaystyle{ n_l }[/math]【主成分】(PC) 。为了寻找每层更新表征的【降维】,【监督策略】从KPCA提取的特征中选择最佳有益特征。过程是:

  • 排序 [math]\displaystyle{ n_l }[/math] 特征,根据它们带类标签的【交互信息】;
  • K[math]\displaystyle{ m_l \in\{1, \ldots, n_l\} }[/math]的不同值,计算【k最近邻】(K-NN)分类器的分类错误率,在【验证集】中只使用 [math]\displaystyle{ m_l }[/math]最有益特征;
  • 使分类器达到最低错误率的[math]\displaystyle{ m_l }[/math] 的值决定保持特征的数量。

KPCA方法的一些缺点是MKM的建立单元。 使用用于深度学习的核机器一个更直接的方法被发展,用于口语理解。主旨是使用核机器近似有无限隐藏单元的浅神经网络,然后使用【叠加】结合核机器的输出和核机器的建立下一个更高级的原始输入。深度凸网络的级数是整个系统的超参数,使用交叉验证确定。

神经结构搜索(Neural architecture search)

神经结构搜索 (NAS)使用机器学习自动化ANN的设计。多种NAS的方法设计出了与手工设计系统很好媲美的网络。基本搜索算法是提议候选模型,使用数据集评价它并使用结果作为反馈教给NAS网络。

使用

使用ANN需要理解它们的特征。

  • 模型的选择: 这取决于数据的表示和应用。过复杂的模型减慢学习。
  • 学习算法: 学习算法之间存在多种交易。在特定数据集上训练时,只要有正确的【超参数】,几乎任何算法都会有效。但是,在不可见的数据上训练时,选择和调整算法需要许多试验。
  • 鲁棒性: 如果适当地选择了模型,损失函数和学习算法,产生的ANN会是鲁棒的。

在以下宽泛的类别中,ANN的能力下降:

  • 【函数逼近】或【回归分析】,包括【时间序列预测】,【适当逼近】和建模
  • 【分类】,包括【模式】和序列识别,【异常检测】和序列决策。
  • 【数据处理】, 包括滤波,聚类,【盲源分离】和压缩i
  • 【机器人】,包括指导操纵器和【假体】
  • 【控制】,包括【计算机数控】

应用

由于他们重现和模拟非线性过程的能力,人工神经网络在广泛的领域建立了很多应用。

应用领域包括【系统识别】和控制(车辆控制,弹道预测,【过程控制】,【自然资源管理】),量子化学,玩游戏和【决策】(西洋双陆棋,国际象棋,扑克),【模式识别】(雷达系统,【人脸识别】,信号分类,物体识别和其他),序列识别(姿态,语音,手写和印刷文本),【医疗诊断】,金融(例如【自动交易系统】),【数据挖掘】,可视化,【机器翻译】,社交网络滤波和【垃圾邮件】滤波。

ANN被用于诊断癌症,包括【肺癌】,【前列腺癌】,【结肠直肠癌】和只使用细胞形状信息区分高度浸润性癌细胞系和较少浸润性系。 ANN被用于加速基础设施遭受自然灾害的可靠性分析。 ANN也被用于在【地球科学】中建立黑箱模型,【水文学】,海洋建模和【海岸工程】只是其中很少的几个例子。

模型的类型

许多类型的模型被使用,在不同级定义的抽象概念并建模神经系统的不同方面。他们包括从【个体神经元】短期行为的模型,神经环路动力学如何从个体神经元交互中产生的模型,到行为如何从代表完整子系统的抽象神经模块中产生的模型。这些包括神经系统和它们与从个体神经元到系统层面学习、记忆的关系的长期,短期可塑性模型。


理论性质(Theoretical properties)

计算能力(Computational power)

【多层感知机】是一个通用函数逼近器, 被【通用逼近理论】证明。然而,考虑到所需神经元的数量,网络拓扑,权重和学习参数,证明是没有建设性的。

一种特殊的带有理值权(与全精度【实数】值权相对)的循环结构具有一个【通用图灵机】的完整能力,通过使用有限数量的神经元和标准线性连接。另外,无理值权导致机器带有【超图灵】能力。

能力(Capacity)

模型的 "能力" 性质大概对应于它们建模任意给定函数的能力。这与能被储存在网络的信息量和复杂性的概念相关。

收敛(Convergence)

模型可能不一致收敛于一个单独解,首先由于可能存在许多局部最小值,取决于损失函数和模型。其次,当从距离任何局部最小值较远处开始时,使用的优化方法可能不保证收敛。再次,对于足够大的数据或参数,一些方法变得不可行。然而,对于【CMAC】神经网络,引入递推最小二乘算法训练它,这个算法可以保证一步收敛。

泛化和统计(Generalization and statistics)

目的是建立对未见例子泛化较好系统的应用,面临过度训练的可能。这当网络能力显著超过所需的自由参数时,在复杂的或过特殊的系统出现。有两种处理过度训练的方法。第一种是使用【交叉验证】和相似的技术检查过度训练的存在并最佳选择超参数最小化泛化误差。第二种是使用某种形式的【正则化】。这个概念在概率的(贝叶斯)框架中产生,其中正则化可以通过选择更大的对更简单模型的先验概率实现;但是在统计学习理论中,目标是最小化两个数量:‘经验风险’和‘结构风险’,它们大概对应于训练集上的误差和在未见数据中由于过拟合的预测误差。

【File:Synapse deployment.jpg|thumb|right|一个神经网络的置信度分析】 使用【均方误差】(MSE)损失函数的监督神经网络可以使用正式的统计方法来确定训练好的模型的置信度。在验证集上的MSE可以被用作方差的估计。这个值接着可以被用于计算网络输出的【置信区间】,假定【正态分布】的情况下。这样的置信度分析只要输出【概率分布】保持相同,网络没有被改变,就是统计学有效的。

通过将一个【柔性最大值传输激活函数】,一个【逻辑函数】的泛化,分配给用于绝对目标值的神经网络的输出层(或在基于组件神经网络的柔性最大值传输函数组件),输出可以被理解为后验概率。这在分类中十分有用,因为它在分类中给出了确定的测量。 柔性最大值传输函数的激活函数是:

[math]\displaystyle{ y_i=\frac{e^{x_i}}{\sum_{j=1}^c e^{x_j}} }[/math]

批评

训练问题(Training issues)

一个对神经网络通常的批评,特别是在机器人领域,是它们需要太多训练才能在真实世界中操作。潜在的解决方法包括随机混排训练例子,在根据一个例子改变网络连接时,通过使用不走过大步的数值优化算法和分组例子成微型批次。提高训练效率和收敛能力一直是神经网络前进的研究领域。例如通过在【CMAC】神经网络中引入递推最小二乘算法, 训练过程只需要一步收敛。

理论问题(Theoretical issues)

没有神经网络解决了计算困难的问题例如【八皇后】问题,【旅行商问题】或【整数因子分解】对于大整数的问题。 一个根本的缺点是它们不反映真实神经元如何运行。反向传播是多数人工神经网络的一个批评部分,尽管生物神经网络中没有这种机制存在。真实神经元是如何编码信息是未知的。带有感觉激活的【感觉神经元】发放【动作电位】更频繁,【肌细胞】相关联的【运动神经元】接收动作电位更频繁时,它们也牵拉更强烈。不同于从感觉神经元到运动神经元的信息传播,对于信息如何被生物神经网络处理的原则几乎毫无了解。 ANN背后的动机不必要严格复制神经功能,但是使用生物神经网络是一种启发。ANN的一个主要要求是体现一些新的、强大的处理信息的通用原则。不幸的是,这些通用原则是被不好定义的。通常声称它们是从网络自身【突现】的。这允许简单统计关联(人工神经网络的基本函数被描述为学习或识别)。结果【Alexander Dewdney】评论道,人工神经网络有一种“不劳而获的利益特性,它给予特殊的懒惰气氛,区别缺少关于这些计算系统多么好的好奇。没有人类的手(或思维)干涉;解好像通过魔法一样得到;看起来没有人学到了任何东西”

正如大脑解剖记录的那样,生物的大脑使用浅的和深的环路,显示出广泛的不变性。Weng 反驳说大脑自己的线路主要根据信号统计,因此连续串联不能捕获所有主要统计依赖。

硬件问题(Hardware issues)

大而有效的神经网络需要相当大的计算资源。大脑有为信号处理任务定制的硬件,通过神经元的【图】,在【冯诺依曼结构】中模拟简化的神经元可能迫使神经网络设计者填充数百万的【数据库】行为了它的连接——它可以消耗大量【内存】和存储。另外,设计者通常需要在许多这种连接和它们相关的神经元间传输信号——这必须总是与巨大的【CPU】处理能力和时间相匹配。

【Schmidhuber】表示二十一世纪神经网络的再起主要由于硬件的进步:从1991到2015,计算能力,特别是由【GPGPU】(在GPU上)递送,增长了大约一百万倍,使得标准反向传播算法对于训练比从前深几层的网络可行。并行GPU的使用可以将训练时间从几个月到几天。

【神经形态工程】通过构造非冯诺依曼芯片直接用电路实现神经网络,来直接强调硬件的困难。另一个处理神经网络的优化芯片称为【张量处理单元】或TPU。

对批评的实际反例

反驳 Dewdney观点的争论是神经网络成功地用于解决许多复杂且多变的任务,范围从自动飞行飞机到检测信用卡诈骗到掌握【Go】游戏。 科技作者Roger Bridgman评论道:

神经网络,举个例子,成为众矢之的不仅因为它们被炒作到了天上, (什么没有?) 但也因为你可以创造一个成功的网络而不需要理解它如何工作: 捕获了它行为的一串数字可能完全是 "一个透明的,难以理解的表格...作为科技资源毫无价值"。

尽管他着重声明科学不是技术, Dewdney看起来【pillory?】神经网络作为坏的科学,当多数发明它们的人只是尽力成为好的工程师。一个有用的机器可以阅读的难以理解的表格可能仍然值得拥有。

尽管分析一个人工神经网络学到了什么很困难,这样做比分析一个生物的神经网络容易的多。此外,参与探索神经网络学习算法的研究者正渐渐找出使学习机器成功的通用准则。例如局部还是非局部学习,浅还是深度结构。

混合方法(Hybrid approaches)

混合模型(结合了神经网络和符号化方法)的拥护者声称这种混合可以更好地捕获人类大脑的机制

类型(Types)

人工神经网络有很多类型。最简单的静态类型有一个或多个静态部分,包括一些单元,一些层,单元权重和【拓扑学】。动态类型允许这些中的一个或多个在学习过程中变化。后者更复杂,但是可以缩短学习时长并且产生更好的结果。一些类型允许/需要被操作“监督”,而另一些操作独立。一些类型的操作完全在硬件层面,而其他的完全在软件而且在通用计算机上运行。

图片

相关wiki


引用

参考书目

外部链接

[[Category:]]

本词条内容翻译自 en.wikipedia.org,遵守 CC3.0协议