跳转到内容

人工神经网络/神经网络基础

来自维基教科书,开放的书籍,面向开放的世界

人工神经网络

[编辑 | 编辑源代码]

人工神经网络,也称为“人工神经网络”、“神经网络”或简称 ANN,是一种计算工具,其模型是人类大脑和其他生物的神经系统中神经元之间的相互连接。生物神经网络 (BNN) 是 ANN 的自然对应物。BNN 和 ANN 都是由称为“神经元”的原子组件构建的网络系统。人工神经网络与生物网络有很大不同,尽管生物系统中的许多概念和特征在人工系统中得到了忠实地再现。人工神经网络是一种非线性处理系统,非常适合各种任务,特别是没有现有算法可以完成任务的任务。ANN 可以通过教学方法和样本数据来训练以解决某些问题。这样,相同结构的 ANN 可以根据接收到的训练执行不同的任务。经过适当训练,ANN 能够进行泛化,即识别不同输入模式之间的相似性,尤其是受噪声影响的模式。

什么是神经网络?

[编辑 | 编辑源代码]

术语“神经网络”指的是生物和人工变体,尽管通常该术语仅用于指代人工系统。在数学上,神经网络是非线性的。每一层代表来自前一层的非线性函数的非线性组合。每个神经元都是一个多输入、多输出 (MIMO) 系统,它接收来自输入的信号,产生一个结果信号,并将该信号传输到所有输出。实际上,ANN 中的神经元排列成层。与环境交互以接收输入的第一层称为输入层。与输出交互以呈现处理数据的最后一层称为输出层。输入层和输出层之间的没有与环境交互的层称为隐藏层。增加 ANN 的复杂性,从而增加其计算能力,需要添加更多隐藏层和每层更多神经元。

生物神经元以非常复杂的网络连接。人脑的某些区域,例如小脑,由非常规则的神经元模式组成。大脑的其他区域,例如大脑,排列不那么规则。典型的生物神经系统拥有数百万甚至数十亿个细胞,每个细胞都与其他神经元有数千个相互连接。目前的人工系统无法达到这种复杂程度,因此无法精确地再现生物系统的行为。

处理元素

[编辑 | 编辑源代码]

在人工神经网络中,神经元可以有多种形式,通常被称为处理元素 (PE) 以区别于生物等效物。PE 连接成特定的网络模式,不同的模式服务于不同的功能目的。与具有化学相互连接的生物神经元不同,人工系统中的 PE 仅是电气化的,可以是模拟的、数字的或混合的。但是,为了再现突触的效果,PE 之间的连接被赋予了乘法权重,这些权重可以校准或“训练”以产生正确的系统输出。

麦卡洛克-皮茨模型

[编辑 | 编辑源代码]

处理元素通常用两个方程来定义,这两个方程代表神经元的麦卡洛克-皮茨模型


[麦卡洛克-皮茨模型]

其中 ζ 是输入的加权和(输入向量和抽头权重向量的内积),σ(ζ) 是加权和的函数。如果我们认识到权重和输入元素构成向量 wx,则 ζ 加权和变为一个简单的点积

这可以称为激活函数(在阈值比较的情况下)或传递函数。右边的图片以图解方式显示了这种关系。神经元中心的虚线代表使用权重向量计算输入总和和使用激活函数计算输出值之间的分界线。在实际的人工神经元中,这种分界线可能不会明确地划分。

网络的输入 x 来自输入空间,系统输出是输出空间的一部分。对于某些网络,输出空间 Y 可能很简单,例如 {0, 1},或者它可能是一个复杂的多维空间。神经网络倾向于在输入空间的每个自由度有一个输入,在输出空间的每个自由度有一个输出。

抽头权重向量在训练期间通过各种算法更新。其中最流行的一种是反向传播算法,我们将在后面更详细地讨论。

为什么要使用神经网络?

[编辑 | 编辑源代码]

人工神经网络具有一些特性,使其成为传统问题解决技术的吸引人替代方案。使用神经网络的两种主要替代方案是开发算法解决方案和使用专家系统。

当有足够的数据和底层理论信息时,就会出现算法方法。通过理解数据和数据之间的理论关系,我们可以直接从问题空间计算未知的解。普通冯·诺依曼计算机可以用来从数值算法中快速有效地计算这些关系。

相反,专家系统用于缺乏足够的数据和理论背景来创建任何可靠问题模型的情况。在这些情况下,人类专家的知识和推理被编入专家系统。专家系统通过收集信息并以定向的方式遍历解决方案空间来模拟人类专家的演绎过程。专家系统通常能够在缺乏准确问题模型和完整数据的情况下表现出色。然而,在有足够的数据或算法解决方案的情况下,专家系统并不是理想的选择。

人工神经网络对于数据丰富但理论基础薄弱的情况非常有用。这些数据通常通过大量实验获得,可能是非线性的、非平稳的或混沌的,因此难以建模。输入-输出空间可能非常复杂,以至于使用专家系统进行合理的遍历不是一个令人满意的选择。重要的是,神经网络不需要对问题空间进行任何先验假设,甚至不需要关于统计分布的信息。虽然不需要这样的假设,但人们发现,添加诸如输入空间的统计分布之类的先验信息有助于加快训练速度。许多数学问题模型倾向于假设数据位于标准分布模式中,例如高斯分布或麦克斯韦-玻尔兹曼分布。神经网络不需要这样的假设。在训练过程中,神经网络执行必要的分析工作,如果使用其他方法,则分析人员需要付出非凡的努力。

学习是智能系统的一个基本组成部分,尽管很难对学习做出精确的定义。就人工神经网络而言,学习通常发生在特定的训练阶段。一旦网络训练完毕,它就会进入生产阶段,在此阶段它会独立生成结果。训练可以采用许多不同的形式,使用学习范式、学习规则和学习算法的组合。具有明显学习和生产阶段的系统称为静态网络。能够在生产过程中继续学习的网络被称为动力系统。

学习范式是监督的、无监督的或两者的混合,反映了训练数据向神经网络呈现的方式。将监督学习和无监督学习结合在一起的方法被称为混合方法。学习规则是用于训练系统的各种方法模型,也是对要产生的结果类型目标。学习算法是用于在每次训练迭代期间更新神经元间突触权重的特定数学方法。在每个学习规则下,可以使用各种可能的学习算法。大多数算法只能与单个学习规则一起使用。学习规则和学习算法通常可以与监督学习或无监督学习范式一起使用,但是,它们将产生不同的效果。

过度训练是当提供太多训练示例时出现的问题,系统变得无法进行有用的泛化。当网络中的神经元过多,计算能力超过输入空间的维数时,也会发生这种情况。在训练过程中,必须注意不要提供太多输入示例,不同的训练示例数量会导致网络质量和鲁棒性的结果大不相同。

网络参数

[编辑 | 编辑源代码]

在设计神经网络时,必须确定许多不同的参数。这些参数包括层数、每层的神经元数量、训练迭代次数等等。就训练和网络容量而言,一些更重要的参数是隐藏神经元数量、学习率和动量参数。


隐藏层中的神经元数量

[编辑 | 编辑源代码]

隐藏神经元是既不在输入层也不在输出层的神经元。这些神经元本质上是隐藏的,它们的数量和组织通常可以被视为与系统交互的人员的“黑箱”。使用额外的隐藏神经元层可以增强处理能力和系统灵活性。这种额外的灵活性是以训练算法的额外复杂性为代价的。隐藏神经元过多类似于方程组的方程式数量大于自由变量的数量:系统过度指定,无法进行泛化。相反,隐藏神经元太少会阻止系统正确拟合输入数据,并降低系统的鲁棒性。

数据类型:整数域: [1, ∞) 典型值: 8

含义:隐藏层中的神经元数量(除了输入层和输出层以外的附加层,不连接到外部)。

学习率

[编辑 | 编辑源代码]

数据类型:实数域: [0, 1] 典型值: 0.3

含义:学习率。训练参数,控制学习算法中权重和偏差变化的大小。

数据类型:实数域: [0, 1] 典型值: 0.9

含义:动量只是将前一个权重更新的一小部分 m 添加到当前权重更新中。动量参数用于防止系统收敛到局部最小值或鞍点。较高的动量参数还有助于提高系统收敛速度。但是,将动量参数设置得太高可能会造成越过最小值的风险,这会导致系统变得不稳定。动量系数过低无法可靠地避免局部最小值,也会减缓系统的训练速度。

训练类型

[编辑 | 编辑源代码]

数据类型:整数域: [0, 1] 典型值: 1

含义: 0 = 按周期训练,1 = 按最小误差训练

数据类型:整数域: [1, ∞) 典型值: 5000000

含义:当迭代次数超过周期时,确定训练何时停止。当按最小误差训练时,这代表最大迭代次数。

最小误差

[编辑 | 编辑源代码]

数据类型:实数域: [0, 0.5] 典型值: 0.01

含义:周期的最小均方误差。网络目标与实际输出之间平方差的平方和除以模式数量的平方根(仅适用于按最小误差训练)。

示例和实现

[编辑 | 编辑源代码]
  1. 存储库 在 GitHub 上。
华夏公益教科书