Artificial Neural Network 简明教程

Artificial Neural Network - Quick Guide

Artificial Neural Network - Basic Concepts

神经网络是并行计算设备,它基本上是尝试建立大脑的计算机模型。主要目标是开发一个系统,以比传统系统更快地执行各种计算任务。这些任务包括模式识别和分类、逼近、优化和数据聚类。

What is Artificial Neural Network?

人造神经网络 (ANN) 是一个有效的计算系统,其中心思想借鉴了生物神经网络的类比。ANN 也被称为“人造神经系统”或“平行分布式处理系统”或“连接主义系统”。ANN 拥有大量单元的集合,这些单元以某种模式相互连接,以允许单元之间进行通信。这些单元,也称为节点或神经元,是并行工作的简单处理器。

每个神经元都通过连接链路与其他神经元连接。每个连接链路都与一个权重相关,该权重包含输入信号的信息。这是神经元解决特定问题最有用的信息,因为权重通常会激发或抑制正在传达的信号。每个神经元都有一个内部状态,称为激活信号。在组合输入信号和激活规则后产生的输出信号可以发送到其他单元。

A Brief History of ANN

ANN 的历史可以分为以下三个时代 −

ANN during 1940s to 1960s

这个时代的一些关键发展如下 −

  1. 1943 − 假设神经网络的概念始于生理学家沃伦·麦卡洛克和数学家沃尔特·皮茨,1943 年他们使用电路对一个简单神经网络建模,以描述大脑中的神经元如何工作。

  2. 1949 − 唐纳德·赫布的著作《行为的组织》提出了这样一个事实:一个神经元重复激活另一个神经元会增加它们每次使用的强度。

  3. 1956 − 泰勒提出了一个联想记忆网络。

  4. 1958 − 罗森布拉特发明了名为感知器的 McCulloch 和 Pitts 神经元模型的学习方法。

  5. 1960 − 伯纳德·维德罗和马西恩·霍夫开发了称为“ADALINE”和“MADALINE”的模型。

ANN during 1960s to 1980s

这个时代的一些关键发展如下 −

  1. 1961 − 罗森布拉特做出了不成功的尝试,但他提出了多层网络的“反向传播”方案。

  2. 1964 − 泰勒构建了一个输出单元之间带有抑制功能的 winner-take-all 电路。

  3. 1969 − 明斯基和帕佩特发明了多层感知器 (MLP)。

  4. 1971 − 科霍宁开发了联想存储器。

  5. 1976 − 斯蒂芬·格罗斯伯格和盖尔·卡彭特提出了适应共振理论。

ANN from 1980s till Present

这个时代的一些关键发展如下 −

  1. 1982 − 霍普菲尔德的能量方法是主要的发展成果。

  2. 1985 − 玻尔兹曼机是由阿克利、 Hinton 和塞扬诺夫斯基开发的。

  3. 1986 − 鲁梅尔哈特、Hinton 和威廉姆斯提出了广义三角法则。

  4. 1988 − 科斯科开发了二进制关联存储器 (BAM),还提出了人工神经网络中的模糊逻辑概念。

历史回顾表明,该领域已取得了重大进展。基于神经网络的芯片正在出现,并且正在开发对复杂问题的应用。当然,今天是神经网络技术转型期。

Biological Neuron

神经细胞(神经元)是一种特殊的生物细胞,可以处理信息。据估计,有大量的,大约1011个神经元以及大量的相互连接,大约1015个。

Schematic Diagram

schematic diagram

Working of a Biological Neuron

如图所示,一个典型的神经元由以下四个部分组成,借助这四个部分我们可以解释它的工作原理 −

  1. Dendrites − 它们是树状分支,负责接收来自连接到它的其他神经元的信息。从另一个意义上,我们可以说它们就像神经元的耳朵。

  2. Soma − 它是神经元的细胞体,负责处理从树突中接收的信息。

  3. Axon − 它就像神经元用来发送信息的一根电缆。

  4. Synapses − 它是轴突和其它神经元树突之间的连接。

ANN versus BNN

在查看人工神经网络 (ANN) 和生物神经网络 (BNN) 之间的差异之前,让我们来看看这两个网络在术语方面的相似之处。

Biological Neural Network (BNN)

Artificial Neural Network (ANN)

Soma

Node

Dendrites

Input

Synapse

Weights or Interconnections

Axon

Output

下表显示了根据一些所述标准对 ANN 和 BNN 之间的比较。

Criteria

BNN

ANN

Processing

大量并行,速度慢但优于 ANN

大量并行,速度快但不如 BNN

Size

1011 个神经元和 1015 个互连

102 到 104 个节点(主要取决于应用程序和网络设计者的类型)

Learning

They can tolerate ambiguity

需要非常精准、结构化且格式化的数据来容忍歧义

Fault tolerance

即使部分损坏,性能也会下降

它具有强大的性能能力,因此具有容错的潜力

Storage capacity

将信息存储在突触中

将信息存储在连续的存储器位置中

Model of Artificial Neural Network

下图表示 ANN 的通用模型,后面紧跟着其处理过程。

model

对于人工神经网络的上述通用模型,净输入可以计算如下 -

y_in:x_1.w_1 :x_2.w_2 :x_3.w_3 :x_m.w_m

即净输入y_in:∑_i^m:x_i . w_i

输出可以通过对净输入应用激活函数来计算。

Y:F(y_in)

输出 = 函数(计算出的净输入)

Artificial Neural Network - Building Blocks

ANN 的处理取决于以下三个组成部分 -

  1. Network Topology

  2. 权重或学习的调整

  3. Activation Functions

在本章中,我们将详细讨论人工神经网络的这三个组成部分

Network Topology

网络拓扑是网络及其节点和连接线的排列。根据拓扑结构,人工神经网络可分类为以下几种:

Feedforward Network

它是一个非循环网络,在各层具有处理单元/节点,并且一层中的所有节点都与前一层的节点连接。连接具有不同的权重。没有反馈回路意味着信号只能从输入到输出单向流动。它可以分为以下两种类型:

  1. Single layer feedforward network − 该概念是对仅具有一个加权层的馈送前向人工神经网络。换句话说,我们可以说输入层与输出层完全连接。

single layer feedforward network
  1. Multilayer feedforward network − 该概念是对具有多个加权层的馈送前向人工神经网络。由于此网络在输入层和输出层之间具有一个或多个层,因此称为隐藏层。

multilayer feedforward network

Feedback Network

顾名思义,反馈网络具有反馈路径,这意味着信号可以使用环路双向流动。这使其成为一个非线性动态系统,不断变化,直到达到平衡状态。它可以分为以下类型:

  1. Recurrent networks − 它们是有闭合环路的反馈网络。以下是两种类型的循环网络。

  2. Fully recurrent network − 它是神经网络架构中最简单的,因为所有节点都连接到所有其他节点,并且每个节点都同时作为输入和输出。

fully recurrent network
  1. Jordan network − 它是一个闭环网络,其中,如以下图表所示,输出将再次作为反馈发送到输入。

jordan network

Adjustments of Weights or Learning

在人工神经网络中学习是修改指定网络中神经元之间连接权重的方法。人工神经网络学习可以分为三大类,即监督学习、无监督学习和强化学习。

Supervised Learning

顾名思义,此类学习是在老师的监督下进行的。这一学习过程是依赖的。

在有监督学习下的人工神经网络训练期间,输入向量将呈现给网络,这将产生一个输出向量。该输出向量将与期望输出向量进行比较。如果实际输出和期望输出向量之间有差异,则会生成一个误差信号。在此误差信号的基础上,将调整权重,直到实际输出与期望输出匹配。

supervised learning

Unsupervised Learning

顾名思义,此类学习是在不经老师监督的情况下进行的。这一学习过程是独立的。

在无监督学习下的人工神经网络训练期间,将类似类型的输入向量组合在一起以形成集群。当应用新的输入模式时,神经网络将产生输出响应,指示输入模式所属的类别。

该过程中没有来自环境的反馈,表明什么应该是期望输出以及该输出是否正确或不正确。因此,在该类型的学习中,网络本身必须从输入数据中发现模式和特征,以及输入数据与输出之间的关系。

unsupervised learning

Reinforcement Learning

顾名思义,此类学习用于加强或增强网络中一些批判性信息。这一学习过程类似于监督式学习,不过我们可能了解的信息非常少。

在强化学习下网络训练期间,网络从环境中收到一些反馈。这使其在某种程度上类似于监督式学习。然而,在此处获得的反馈是评价性的,而不是指导性的,这意味着没有监督式学习中的老师。收到反馈后,网络将调整权重以在将来获取更佳的批判性信息。

reinforcement learning

Activation Functions

可以将它定义为施加在输入上的额外力或努力,以获得精确的输出。在人工神经网络中,我们还可以在输入上应用激活函数以获得精确的输出。以下是一些有趣的激活函数:

Linear Activation Function

它也被称为恒等函数,因为它不执行输入编辑。它可以定义为-

F(x)\:=\:x

Sigmoid Activation Function

它有两种类型,如下所示 -

  1. Binary sigmoidal function - 此激活函数执行 0 和 1 之间的输入编辑。它本质上是正面的。它总是受限制的,这意味着它的输出不可能小于 0,且不可能大于 1。它的本质也严格递增,这意味着输入越大输出就越高。它可以定义为 F(x)\:=\:sigm(x)\:=\:\frac{1}{1\:+\:exp(-x)}

  2. Bipolar sigmoidal function - 此激活函数执行 -1 和 1 之间的输入编辑。它本质上可以为正或为负。它总是受限制的,这意味着它的输出不可能小于 -1,且不可能大于 1。它的本质也严格递增,如同 sigmoid 函数。它可以定义为 F(x)\:=\:sigm(x)\:=\:\frac{2}{1\:+\:exp(-x)}\:-\:1\:=\:\frac{1\:-\:exp(x)}{1\:+\:exp(x)}

Learning and Adaptation

如前所述,人工神经网络完全受到生物神经系统(即人脑工作方式)的启发。人脑最令人印象深刻的特点是学习,因此人工神经网络也获取了相同的特征。

What Is Learning in ANN?

从本质上说,学习意味着根据环境的变化进行调整和适应。人工神经网络是一个复杂的系统,更准确地说,我们可以说它是一个复杂的适应系统,它可以根据通过它的信息来改变其内部结构。

Why Is It important?

作为一种复杂的适应系统,人工神经网络中的学习意味着处理单元能够由于环境的变化而改变其输入/输出行为。当构建特定网络时,人工神经网络中学习的重要性会增加,因为激活函数是固定的,并且输入/输出向量也是固定的。现在要改变输入/输出行为,我们需要调整权重。

Classification

可以将其定义为通过发现同一类别的样本之间的共同特征,对样本数据进行区分的学习过程。例如,要执行人工神经网络的训练,我们有一些具有唯一特征的训练样本,并且要执行其测试,我们有一些具有其他唯一特征的测试样本。分类是监督学习的一个示例。

Neural Network Learning Rules

我们知道,在人工神经网络学习期间,要改变输入/输出行为,我们需要调整权重。因此,需要使用一种方法,借助这种方法可以改变权重。这些方法称为学习规则,它们只是算法或方程。以下是一些神经网络的学习规则 -

Hebbian Learning Rule

这条规则是最古老、最简单的规则之一,是由唐纳德·赫布在 1949 年出版的《行为的组织》一书中提出的。它是一种前馈、无监督学习。

Basic Concept - 此规则基于赫布提出的建议,他写道-

"如果细胞 A 的轴突足够接近于激发细胞 B,并且反复或持续地参与激发细胞 B,那么在其中一个或两个细胞中就会发生某种生长过程或代谢变化,使得 A 作为激发 B 的细胞之一的效率会提高。"

从以上假设可以得出结论,如果神经元同时激发,那么两个神经元之间的连接可能会加强,如果它们在不同时间激发,那么可能会减弱。

Mathematical Formulation - 根据赫布学习规则,以下是用于在每个时间步长时增加连接权重的公式。

\Delta w_{ji}(t)\:=\:\alpha x_{i}(t).y_{j}(t)

这里,$\Delta w_{ji}(t)$ ⁡= 时间步长 t 时连接权重增加的增量

$\alpha$ = 正的常数学习率

$x_{i}(t)$ = 时间步长 t 时来自突触前神经元的输入值

$y_i(t)$= 同一时间步长的突触前神经元输出 t

Perceptron Learning Rule

此规则是 Rosenblatt 引入的具有线性激活函数的单层前馈网络监督学习算法的纠错。

Basic Concept − 由于其本质上是监督性的,因此,要计算误差,必须比较期望/目标输出与实际输出。如果发现有任何差异,则必须更改连接的权重。

Mathematical Formulation − 为了解释其数学公式,假设我们有 “n” 个有限输入向量 x(n) 及其期望/目标输出向量 t(n),其中 n = 1 至 N。

现在,可以基于净输入计算输出 “y”,如前文所述,表示为净输入上应用的激活函数,如下所示 −

y\:= f(y_{in})\:= \begin{cases}1, &y_{in}> \theta \\\0, &y_{in} \leqslant \theta\end{cases}

其中 θ 是阈值。

可以在以下两种情况下更新权重 −

Case I − 当 t ≠ y 时,

w(new)\:= w(old)+tx

Case II − 当 t = y 时,

不更改权重

Delta Learning Rule (Widrow-Hoff Rule)

由 Bernard Widrow 和 Marcian Hoff 引入,也称为最小均方 (LMS) 方法,以最大限度地减少所有训练模式上的误差。这是一种带有连续激活函数的监督学习算法。

Basic Concept − 此规则的基础是梯度下降法,该方法会一直持续下去。Delta 规则更新突触权重,以最大程度地减少输出单元的净输入和目标值。

Mathematical Formulation − 要更新突触权重,Delta 规则由以下内容给出

\Delta w_{i}\:= \alpha.x_{i}.e_{j}

其中 $\Delta w_{i}$ = 第 i ⁡ 个模式的权重变化;

$\alpha$ = 正的常量学习率;

$x_{i}$ = 突触前神经元的输入值;

$e_{j}$ = $(t\:-\:y_{in})$,理想/目标输出与实际输出 ⁡$y_{in}$ 之间的差值

上述 delta 规则仅适用于单输出单元。

可以在以下两种情况下更新权重 −

Case-I − 当 t ≠ y 时,则

w(new)\:=\:w(old)\:+\:\Delta w

Case-II − 当 t = y 时,则

不更改权重

Competitive Learning Rule (Winner-takes-all)

它涉及无监督训练,其中输出节点试图彼此竞争以表示输入模式。要理解此学习规则,我们必须理解竞争网络,如下所示 −

Basic Concept of Competitive Network − 此网络就像一个带有输出之间反馈连接的单层前馈网络。输出之间的连接是抑制类型,用虚线表示,这意味着竞争者从不自我支持。

competitive network

Basic Concept of Competitive Learning Rule − 如前所述,输出节点之间会存在竞争。因此,训练中的主要概念是,对于给定的输入模式,激活程度最高的输出单元将被宣布为获胜者。此规则也称为优胜者全得,因为只有获胜的神经元会更新,其余神经元保持不变。

Mathematical formulation − 以下是在这个学习规则中重要的三个数学表述因素 −

  1. Condition to be a winner − 假设如果神经元 $y_{k}$⁡ ⁡想成为胜者,那么就会有以下条件 − y_{k}\:=\:\begin{cases}1 & 如果\:v_{k}\:>\:v_{j}\:对于\:所有\:j,\:j\:\neq\:k\\0 & 其他情况\end{cases}

这意味着如果某个神经元,比如说 $y_{k}$⁡ ,想获胜,那么它的局部感应场(求和单元的输出),比如说 $v_{k}$,必须在网络中所有其他神经元中最大。

  1. Condition of sum total of weight − 对竞争性学习规则的另一个约束是,特定输出神经元的权重之和将为 1。例如,如果我们考虑神经元 k ,那么 − \displaystyle\sum\limits_{j}w_{kj}\:=\:1\:\:\:\:\:\:\:\:\:对于\:所有\:k

  2. Change of weight for winner − 如果神经元不对输入模式做出响应,那么神经元就不会学习。但是,如果特定神经元获胜,那么相应的权重将调整如下 \Delta w_{kj}\:=\:\begin{cases}-\alpha(x_{j}\:-\:w_{kj}), & 如果\:神经元\:k\:获胜\\0, & 如果\:神经元\:k\:失败\end{cases}

这里 $\alpha$ 是学习率。

这清楚地表明,我们通过调整权重来支持获胜的神经元,如果神经元失败,我们就不必费事重新调整其权重了。

Outstar Learning Rule

格罗斯伯格引入的这一规则与监督式学习有关,因为已知期望输出。它也被称为格罗斯伯格学习。

Basic Concept − 该规则应用于按层排列的神经元。它经过特别设计,可产生 p 神经元的 d 层的期望输出。

Mathematical Formulation − 可以在这一规则中计算权重调整,如下所示

\Delta w_{j}\:=\:\alpha\:(d\:-\:w_{j})

此处 d 是期望的神经元输出,$\alpha$ 是学习率。

Supervised Learning

顾名思义,{s0} 在教师的监督下进行。此学习过程是相依的。在受监督学习中训练 ANN 期间,将输入向量提供给网络,该网络会产生一个输出向量。将该输出向量与所需/目标输出向量进行比较。如果实际输出和所需的/目标输出向量之间存在差异,则会生成一个误差信号。在该误差信号的基础上,将调整权重,直到实际输出与所需的输出匹配。

Perceptron

由 Frank Rosenblatt 使用 McCulloch 和 Pitts 模型开发的感知器是人工神经网络的基本操作单元。它使用受监督的学习规则,并且能够将数据分类为两个类。

感知器的操作特征:它包含一个神经元,该神经元具有任意数量的输入和可调整权重,但神经元的输出根据阈值确定为 1 或 0。它还包含一个偏差,其权重始终为 1。下图给出了感知器的示意图表示。

perceptron

因此,感知器具有以下三个基本元素 −

  1. Links − 它有一组连接链接,其携带一个权重,其中偏置始终具有权重 1。

  2. Adder − 它在将输入与各自的权重相乘后对其进行相加。

  3. Activation function − 它限制神经元的输出。最基本的激活函数是 Heaviside 阶跃函数,它有两个可能的输出。如果输入为正,则该函数返回 1,如果任何负输入,则返回 0。

Training Algorithm

感知器网络可以针对单输出单元以及多个输出单元进行训练。

Training Algorithm for Single Output Unit

Step 1 − 初始化以下内容以启动训练 −

  1. Weights

  2. Bias

  3. Learning rate $\alpha$

为了便于计算和简化,权重和偏差必须设置为 0,而学习率必须设置为 1。

Step 2 − 当停止条件不成立时,继续执行步骤 3-8。

Step 3 − 对每个训练向量 x 继续执行步骤 4-6。

Step 4 − 如下激活每个输入单元 −

x_{i}\:=\:s_{i}\:(i\:=\:1\:to\:n)

Step 5 − 现在,使用以下关系获取净输入 −

y_{in}\:=\:b\:+\:\displaystyle\sum\limits_{i}^n x_{i}.\:w_{i}

其中 ‘b’ 为偏差, ‘n’ 为输入神经元的总数。

Step 6 − 应用以下激活函数获取最终输出。

f(y_{in})\:=\:\begin{cases}1 & if\:y_{in}\:>\:\theta\\0 & if \: -\theta\:\leqslant\:y_{in}\:\leqslant\:\theta\\-1 & if\:y_{in}\:<\:-\theta \end{cases}

Step 7 − 如下调整权重和偏差 −

Case 1 − 如果 y ≠ t ,那么

w_{i}(new)\:=\:w_{i}(old)\:+\:\alpha\:tx_{i}

b(new)\:=\:b(old)\:+\:\alpha t

Case 2 − 如果 y = t ,那么

w_{i}(new)\:=\:w_{i}(old)

b(new)\:=\:b(old)

其中 ‘y’ 为实际输出, ‘t’ 为期望/目标输出。

Step 8 − 测试停止条件,即当权重无变化时发生。

Training Algorithm for Multiple Output Units

以下图表为多输出类别的感知器的架构。

training algorithm

Step 1 − 初始化以下内容以启动训练 −

  1. Weights

  2. Bias

  3. Learning rate $\alpha$

为了便于计算和简化,权重和偏差必须设置为 0,而学习率必须设置为 1。

Step 2 − 当停止条件不成立时,继续执行步骤 3-8。

Step 3 − 对每个训练向量 x 继续执行步骤 4-6。

Step 4 − 如下激活每个输入单元 −

x_{i}\:=\:s_{i}\:(i\:=\:1\:to\:n)

Step 5 - 使用以下关系来获得净输入 -

y_{in}\:=\:b\:+\:\displaystyle\sum\limits_{i}^n x_{i}\:w_{ij}

其中 ‘b’ 为偏差, ‘n’ 为输入神经元的总数。

Step 6 - 应用以下激活函数来获取每个输出单元的最终输出 j = 1 to m -

f(y_{in})\:=\:\begin{cases}1 & if\:y_{inj}\:>\:\theta\\0 & if \: -\theta\:\leqslant\:y_{inj}\:\leqslant\:\theta\\-1 & if\:y_{inj}\:<\:-\theta \end{cases}

Step 7 - 如下方式为 x = 1 to nj = 1 to m 调整权值和偏差 -

Case 1 - 如果 yj ≠ tj 则,

w_{ij}(new)\:=\:w_{ij}(old)\:+\:\alpha\:t_{j}x_{i}

b_{j}(new)\:=\:b_{j}(old)\:+\:\alpha t_{j}

Case 2 - 如果 yj = tj 则,

w_{ij}(new)\:=\:w_{ij}(old)

b_{j}(new)\:=\:b_{j}(old)

其中 ‘y’ 为实际输出, ‘t’ 为期望/目标输出。

Step 8 - 当权值没有改变时,测试终止条件。

Adaptive Linear Neuron (Adaline)

Adaline 的全称为自适应线性神经元,是一个具有单个线性单元的神经网络。它是由 Widrow 和 Hoff 在 1960 年开发的。关于 Adaline 的一些重要事项如下 -

  1. 它使用双极激活函数。

  2. 它使用 delta 规则进行训练来最小化实际输出和期望/目标输出之间的均方误差 (MSE)。

  3. 权值和偏差是可调的。

Architecture

Adaline 的基本结构类似于感知器,具有一个额外的反馈回路,可借助它将实际输出与期望/目标输出进行比较。在基于训练算法进行比较后,权值和偏差将被更新。

architecture adaptive linear

Training Algorithm

Step 1 − 初始化以下内容以启动训练 −

  1. Weights

  2. Bias

  3. Learning rate $\alpha$

为了便于计算和简化,权重和偏差必须设置为 0,而学习率必须设置为 1。

Step 2 − 当停止条件不成立时,继续执行步骤 3-8。

Step 3 - 对每个双极训练对继续进行步骤 4-6 s:t

Step 4 − 如下激活每个输入单元 −

x_{i}\:=\:s_{i}\:(i\:=\:1\:to\:n)

Step 5 - 使用以下关系来获得净输入 -

y_{in}\:=\:b\:+\:\displaystyle\sum\limits_{i}^n x_{i}\:w_{i}

其中 ‘b’ 为偏差, ‘n’ 为输入神经元的总数。

Step 6 − 使用以下激活函数获得最终输出 −

f(y_{in})\:=\:\begin{cases}1 & 若 y_{in}\:\geqslant\:0 \\-1 & 若 y_{in}\:<\:0 \end{cases}

Step 7 − 如下调整权重和偏差 −

Case 1 − 如果 y ≠ t ,那么

w_{i}(new)\:=\:w_{i}(old)\:+\: \alpha(t\:-\:y_{in})x_{i}

b(new)\:=\:b(old)\:+\: \alpha(t\:-\:y_{in})

Case 2 − 如果 y = t ,那么

w_{i}(new)\:=\:w_{i}(old)

b(new)\:=\:b(old)

其中 ‘y’ 为实际输出, ‘t’ 为期望/目标输出。

$(t\:-\;y_{in})$ 为计算所得的误差。

Step 8 − 测试停止条件,当权重没有变化或训练过程中的最高权重变化小于指定容差时会发生。

Multiple Adaptive Linear Neuron (Madaline)

Madaline 即多级自适应线性神经元,是一个由多个以并行方式连接的 Adaline 神经元组成的网络。它将只有一个输出单元。以下为关于 Madaline 的一些重要要点:

  1. 它就像一个多层感知器,其中 Adaline 神经元会在输入层与 Madaline 层之间充当隐藏单元。

  2. 如我们在 Adaline 架构中所看到的,输入层与 Adaline 层之间的权重和偏差是可以调节的。

  3. Adaline 层和 Madaline 层具有固定的权重和偏差,均为 1。

  4. 训练可以通过 Delta 规则完成。

Architecture

Madaline 的架构包含 “n” 个输入层神经元、 “m” 个 Adaline 层神经元和 1 个 Madaline 层神经元。由于 Adaline 层位于输入层和输出层(即 Madaline 层)之间,因此可以将其视为一个隐藏层。

adaline

Training Algorithm

目前我们已经知道,只有输入层与 Adaline 层之间的权重和偏差需要调节,而 Adaline 层与 Madaline 层之间的权重和偏差是固定的。

Step 1 − 初始化以下内容以启动训练 −

  1. Weights

  2. Bias

  3. Learning rate $\alpha$

为了便于计算和简化,权重和偏差必须设置为 0,而学习率必须设置为 1。

Step 2 − 当停止条件不成立时,继续执行步骤 3-8。

Step 3 − 针对每对双极训练数据执行步骤 4-7 s:t

Step 4 − 如下激活每个输入单元 −

x_{i}\:=\:s_{i}\:(i\:=\:1\:to\:n)

Step 5 − 使用以下关系获取每个隐藏层(即 Adaline 层)的净输入:

Q_{inj}\:=\:b_{j}\:+\:\displaystyle\sum\limits_{i}^n x_{i}\:w_{ij}\:\:\:j\:=\:1\:to\:m

其中 ‘b’ 为偏差, ‘n’ 为输入神经元的总数。

Step 6 − 使用以下激活函数获取 Adaline 层和 Madaline 层的最终输出:

f(x)\:=\:\begin{cases}1 & 若 x\:\geqslant\:0 \\-1 & 若 x\:<\:0 \end{cases}

隐层(Adaline)输出单元的输出

Q_{j}\:=\:f(Q_{inj})

网络最终输出

y\:=\:f(y_{in})

i.e. $\:\:y_{inj}\:=\:b_{0}\:+\:\sum_{j = 1}^m\:Q_{j}\:v_{j}$

Step 7 − 按如下方式计算误差并调整权重 −

Case 1 − 如果 y ≠ tt = 1 则,

w_{ij}(new)\:=\:w_{ij}(old)\:+\: \alpha(1\:-\:Q_{inj})x_{i}

b_{j}(new)\:=\:b_{j}(old)\:+\: \alpha(1\:-\:Q_{inj})

在这种情况下,权重将会在 Qj 处更新,因为 t = 1 ,净输入接近 0。

Case 2 − 如果 y ≠ tt = -1 则,

w_{ik}(new)\:=\:w_{ik}(old)\:+\: \alpha(-1\:-\:Q_{ink})x_{i}

b_{k}(new)\:=\:b_{k}(old)\:+\: \alpha(-1\:-\:Q_{ink})

在这种情况下,权重将会在 Qk 处更新,因为 t = -1 ,净输入为正。

其中 ‘y’ 为实际输出, ‘t’ 为期望/目标输出。

Case 3 − 如果 y = t 则,

权重不会发生任何变化。

Step 8 − 测试停止条件,当权重没有变化或训练过程中的最高权重变化小于指定容差时会发生。

Back Propagation Neural Networks

反向传播神经(BPN)是一个多层次神经网络,包含输入层、至少一个隐层和输出层。如同它的名称所暗示的,这种网络会发生反向传播。在输出层计算的误差,通过比较目标输出和实际输出,将会反向传播到输入层。

Architecture

如该图表所示,BPN 的架构具有三个相互连接的层,在这些层上具有权重。隐层和输出层也具有偏置,其权重始终为 1。显然,BPN 的工作分为两个阶段。一个阶段将信号从输入层传送到输出层,另一个阶段将误差从输出层反向传播到输入层。

back propogation

Training Algorithm

对于训练,BPN 将使用二进制 S 形激活函数。BPN 的训练将具有如下三个阶段。

  1. Phase 1 − 前馈阶段

  2. Phase 2 − 误差的反向传播

  3. Phase 3 − 权重的更新

所有这些步骤将在算法中按如下所示总结

Step 1 − 初始化以下内容以启动训练 −

  1. Weights

  2. Learning rate $\alpha$

为方便计算和简便起见,采用一些较小的随机值。

Step 2 − 当停止条件不成立时,继续执行步骤 3-11。

Step 3 − 对于每个训练对,继续执行步骤 4-10。

Phase 1

Step 4 − 每个输入单元接收输入信号 xi 并将其发送给所有 i = 1 to n 的隐藏单元

Step 5 − 使用以下关系计算隐藏单元上的净输入 −

Q_{inj}\:=\:b_{0j}\:+\:\sum_{i=1}^n x_{i}v_{ij}\:\:\:\:j\:=\:1\:to\:p

其中 b0j 是隐藏单元上的偏差, vij 是来自输入层的 i 单元的隐藏层 j 单元上的权重。

现在通过应用以下激活函数来计算净输出

Q_{j}\:=\:f(Q_{inj})

将隐藏层单元的这些输出信号发送到输出层单元。

Step 6 − 使用以下关系计算输出层单元上的净输入 −

y_{ink}\:=\:b_{0k}\:+\:\sum_{j = 1}^p\:Q_{j}\:w_{jk}\:\:k\:=\:1\:to\:m

其中 b0k 是输出单元上的偏差, wjk 是来自隐藏层的 j 单元的输出层 k 单元上的权重。

通过应用以下激活函数计算净输出

y_{k}\:=\:f(y_{ink})

Phase 2

Step 7 − 根据在每个输出单元接收到的目标模式,计算误差校正项,如下所示 −

\delta_{k}\:=\:(t_{k}\:-\:y_{k})f^{'}(y_{ink})

在此基础上,按如下所述更新权重和偏差 −

\Delta v_{jk}\:=\:\alpha \delta_{k}\:Q_{ij}

\Delta b_{0k}\:=\:\alpha \delta_{k}

然后,将 $\delta_{k}$ 传回隐藏层。

Step 8 − 现在,每个隐藏单元将为其从输出单元的增量输入的总和。

\delta_{inj}\:=\:\displaystyle\sum\limits_{k=1}^m \delta_{k}\:w_{jk}

误差项可按如下方式计算 −

\delta_{j}\:=\:\delta_{inj}f^{'}(Q_{inj})

在此基础上,按如下所述更新权重和偏差 −

\Delta w_{ij}\:=\:\alpha\delta_{j}x_{i}

\Delta b_{0j}\:=\:\alpha\delta_{j}

Phase 3

Step 9 − 每个输出单元 (ykk = 1 to m) 按照如下方式更新权重和偏差 −

v_{jk}(new)\:=\:v_{jk}(old)\:+\:\Delta v_{jk}

b_{0k}(new)\:=\:b_{0k}(old)\:+\:\Delta b_{0k}

Step 10 − 每个输出单元 (zjj = 1 to p) 按照如下方式更新权重和偏差 −

w_{ij}(new)\:=\:w_{ij}(old)\:+\:\Delta w_{ij}

b_{0j}(new)\:=\:b_{0j}(old)\:+\:\Delta b_{0j}

Step 11 − 检查停止条件,该条件可能是达到时期数或目标输出与实际输出匹配。

Generalized Delta Learning Rule

Delta 规则仅适用于输出层。另一方面,广义 Delta 规则,也称为 back-propagation 规则,是一种创建隐藏层期望值的方法。

Mathematical Formulation

对于激活函数 $y_{k}\:=\:f(y_{ink})$,隐藏层以及输出层净输入的导数可以给出为

y_{ink}\:=\:\displaystyle\sum\limits_i\:z_{i}w_{jk}

且 $\:\:y_{inj}\:=\:\sum_i x_{i}v_{ij}$

现在要最小化的误差为

E\:=\:\frac{1}{2}\displaystyle\sum\limits_{k}\:[t_{k}\:-\:y_{k}]^2

使用链式法则,我们得到

\frac{\partial E}{\partial w_{jk}}\:=\:\frac{\partial }{\partial w_{jk}}(\frac{1}{2}\displaystyle\sum\limits_{k}\:[t_{k}\:-\:y_{k}]^2)

=\:\frac{\partial }{\partial w_{jk}}\lgroup\frac{1}{2}[t_{k}\:-\:t(y_{ink})]^2\rgroup

=\:-[t_{k}\:-\:y_{k}]\frac{\partial }{\partial w_{jk}}f(y_{ink})

=\:-[t_{k}\:-\:y_{k}]f(y_{ink})\frac{\partial }{\partial w_{jk}}(y_{ink})

=\:-[t_{k}\:-\:y_{k}]f^{'}(y_{ink})z_{j}

现在让我们称 $\delta_{k}\:=\:-[t_{k}\:-\:y_{k}]f^{'}(y_{ink})$

连接到隐藏单元 zj 上的权重可给出为 −

\frac{\partial E}{\partial v_{ij}}\:=\:- \displaystyle\sum\limits_{k} \delta_{k}\frac{\partial }{\partial v_{ij}}\:(y_{ink})

代入 $y_{ink}$ 的值将得到以下结果

\delta_{j}\:=\:-\displaystyle\sum\limits_{k}\delta_{k}w_{jk}f^{'}(z_{inj})

权重更新可以如下进行 −

对于输出单元 −

\Delta w_{jk}\:=\:-\alpha\frac{\partial E}{\partial w_{jk}}

对于隐藏单元 −

\Delta v_{ij}\:=\:-\alpha\frac{\partial E}{\partial v_{ij}}

=\:\alpha\:\delta_{j}\:x_{i}

这类神经网络基于模式关联,这意味着它们能够存储不同的模式,并且在给出输出时,它们可以通过与给定的输入模式进行匹配来生成一个存储的模式。这类内存也称为 Content-Addressable Memory (CAM)。联想式内存将存储的模式作为数据文件进行并行搜索。

Unsupervised Learning

顾名思义,这种类型的学习是在没有老师指导的情况下进行的。这种学习过程是独立的。在非监督学习下训练人工神经网络期间,类似类型的输入向量结合形成簇。当应用一个新的输入模式时,神经网络给出输出响应来指示输入模式所属的类别。在此过程中,不会有来自环境的反馈,说明期望的输出应是什么,以及它是否正确或不正确。因此,在这种类型的学习中,网络本身必须从输入数据中发现模式、特性,以及输入数据与输出之间的关系。

Winner-Takes-All Networks

这些类型的网络基于竞争学习规则,并且会使用以下策略:它选择具有最大总输入量的神经元作为获胜者。输出神经元之间的连接展示了它们之间的竞争,其中一个会“开启”,这意味着它会是获胜者,其他会“关闭”。

以下是使用非监督学习基于此简单概念的一些网络。

Hamming Network

在使用非监督学习的大多数神经网络中,计算距离并执行比较至关重要。这种类型的网络是汉明网络,对于给定的每个输入向量,它会将其聚类到不同的组中。以下是汉明网络的一些重要特性:

  1. Lippmann 于 1987 年开始研究汉明网络。

  2. 它是一个单层网络。

  3. 输入可以是 {0, 1} 二进制或 {-1, 1} 双极输入。

  4. 网络的权重由示例向量计算。

  5. 它是一个固定权重网络,这意味着权重即使在训练过程中也会保持不变。

Max Net

这也是一个固定权重网络,它充当一个子网络,用于选择具有最高输入的节点。所有节点都完全互连,并且在所有这些加权互连中都存在对称权重。

Architecture

max net

它使用机制,这是一个迭代过程,每个节点通过连接接收来自所有其他节点的抑制性输入。值最大的单个节点将处于活动状态或获胜状态,所有其他节点的激活将处于非活动状态。Max Net 使用恒等激活函数,其为 f(x)\:=\:\begin{cases}x & if\:x > 0\\0 & if\:x \leq 0\end{cases}

该网络的任务由 +1 自激发权重和相互抑制幅度完成,其设置为 [0 < ɛ < $\frac{1}{m}$],其中 “m” 是节点总数。

Competitive Learning in ANN

它与非监督训练有关,其中输出节点尝试相互竞争以表示输入模式。为了理解这个学习规则,我们必须了解竞争网络,其解释如下:

Basic Concept of Competitive Network

该网络就像一个单层前馈网络,在输出之间具有反馈连接。输出之间的连接是抑制型的,由虚线表示,这意味着竞争者永远不会支持自己。

basic concept

Basic Concept of Competitive Learning Rule

如前所述,输出节点之间存在竞争,因此主要概念是:在训练期间,对给定输入模式具有最高激活度的输出单元将被宣布为获胜者。此规则也称为赢家通吃,因为只有获胜的神经元会被更新,而其余神经元保持不变。

Mathematical Formulation

以下是此学习规则的数学公式的三个重要因素:

  1. 成为赢家条件假设一个神经元 yk 希望成为赢家,那么会出现以下条件:y_{k}\:=\:\begin{cases}1 & if\:v_{k} > v_{j}\:for\:all\:\:j,\:j\:\neq\:k\\0 & otherwise\end{cases}这意味着,如果说神经元 yk 想获胜,那么其感应局部场(求和单元的输出),例如 vk ,必须在网络中的所有其他神经元之间最大。

  2. 权重总和条件对竞争性学习规则的另一个约束是针对特定输出神经元的权重总和将为 1。例如,如果我们考虑神经元 k ,那么\displaystyle\sum\limits_{k} w_{kj}\:=\:1\:\:\:\:for\:all\:\:k

  3. 获胜者的重量改变如果神经元没有对输入模式做出反应,则该神经元中不进行任何学习。不过,如果一个特定的神经元获胜,则调整相应的权重如下 −\Delta w_{kj}\:=\:\begin{cases}-\alpha(x_{j}\:-\:w_{kj}), & if\:neuron\:k\:wins\\0 & if\:neuron\:k\:losses\end{cases}其中,$\alpha$是学习率。这清楚地表明,我们通过调整权重来支持获胜的神经元,如果一个神经元输了,那么我们不必费心重新调整它的权重。

K-means Clustering Algorithm

K-means 是最流行的群集算法之一,其中我们使用分区程序的概念。我们从初始分区开始,并反复将模式从一个群集移动到另一个群集,直到获得满意结果。

Algorithm

Step 1 − 选择 k 个点作为初始质心。初始化 k 个原型 (w1,…,wk) ,例如,我们可以用随机选择的输入向量识别它们 −

W_{j}\:=\:i_{p},\:\:\: where\:j\:\in \lbrace1,…​.,k\rbrace\:and\:p\:\in \lbrace1,…​.,n\rbrace

每个群集 Cj 都与原型 wj 相关。

Step 2 − 重复步骤 3-5,直到 E 不再减小,或群集成员资格不再改变。

Step 3 − 对于每个输入向量 ip ,其中 p ∈ {1,…,n} ,将 ip 放在与最近的原型 wj 具有以下关系的群集 Cj 中:

|i_{p}\:-\:w_{j*}|\:\leq\:|i_{p}\:-\:w_{j}|,\:j\:\in \lbrace1,…​.,k\rbrace

Step 4 − 对于每个群集 Cj ,其中 j ∈ { 1,…,k} ,更新原型 wjCj 中当前所有样本的质心,以便:

w_{j}\:=\:\sum_{i_{p}\in C_{j}}\frac{i_{p}}{|C_{j}|}

Step 5 − 计算总量化误差如下 −

E\:=\:\sum_{j=1}^k\sum_{i_{p}\in w_{j}}|i_{p}\:-\:w_{j}|^2

Neocognitron

它是一个多层前馈网络,由福岛于 20 世纪 80 年代开发。该模型基于监督学习,用于视觉模式识别,主要是手写字符。它基本上是福岛于 1975 年开发的 Cognitron 网络的扩展。

Architecture

它是一个层次网络,包含许多层,并且在这些层中局部有连接模式。

neocognitron

正如我们在上图中看到的,新认知网络被划分为不同的连接层,并且每层有两个细胞。以下是对这些细胞的解释 −

S-Cell − 它被称为一个简单细胞,经过训练,可以对特定的模式或一组模式做出反应。

C-Cell − 它被称为复杂细胞,它将来自 S 细胞的输出结合起来,同时减少了每个阵列中的单元数量。从另一个意义上讲,C 细胞取代了 S 细胞的结果。

Training Algorithm

发现新认知网络的训练逐层进行。训练从输入层到第一层的权重并冻结它们。然后,训练从第一层到第二层的权重,以此类推。S 细胞和 C 细胞之间的内部计算取决于来自前一层的权重。因此,我们可以说训练算法取决于 S 细胞和 C 细胞的计算。

Calculations in S-cell

S 细胞拥有从前一层接收到的兴奋信号并拥有在同一层内获得的抑制信号。

\theta=\:\sqrt{\sum\sum t_{i} c_{i}^2}

这里, ti 是固定权重, ci 是 C 单元格的输出。

S 单元格的缩放输入可用下述方式计算:

x\:=\:\frac{1\:+\:e}{1\:+\:vw_{0}}\:-\:1

这里,$e\:=\:\sum_i c_{i}w_{i}$

wi 是从 C 单元格到 S 单元格调整的权重。

w0 是输入与 S 单元格之间可调整的权重。

v 是从 C 单元格的激励性输入。

输出信号的激活为:

s\:=\:\begin{cases}x, & if\:x \geq 0\\0, & if\:x < 0\end{cases}

Calculations in C-cell

C 层的净输入是:

C\:=\:\displaystyle\sum\limits_i s_{i}x_{i}

这里, si 是 S 单元格的输出, xi 是从 S 单元格到 C 单元格的固定权重。

最终输出如下:

C_{out}\:=\:\begin{cases}\frac{C}{a+C}, & if\:C > 0\\0, & otherwise\end{cases}

这里 ‘a’ 是取决于网络性能的参数。

Learning Vector Quantization

学习向量量化 (LVQ) 不同于矢量量化 (VQ) 和科霍宁自组织映射 (KSOM),它本质上是一种竞争性网络,使用监督学习。我们可以将其定义为一个对模式进行分类的过程,其中每个输出单元代表一个类别。由于它使用监督学习,因此将会给网络提供一组具有已知分类的训练模式,以及输出类别的一个初始分布。在完成训练过程后,LVQ 将通过将输入向量分配到与输出单元相同的类别,对该向量进行分类。

Architecture

下图展示了 LVQ 的架构,该架构与 KSOM 的架构相当相似。正如我们所见,有 “n” 个输入单元和 “m” 个输出单元。这些层完全互联,并在其上设置权重。

layers

Parameters Used

以下是 LVQ 训练过程中以及流程图中使用的参数:

  1. x = 训练向量 (x1,…​,xi,…​,xn)

  2. T = 训练向量 x 的类别

  3. wj = jth 输出单元的权重向量

  4. Cj = 与 jth 输出单元关联的类别

Training Algorithm

Step 1 - 初始化参考向量,如下操作:

  1. Step 1(a) - 从给定的训练向量集中,取前“ m ”(集群数)个训练向量,并将它们用作权重向量。其余向量可用于训练。

  2. Step 1(b) - 随机分配初始权重和分类。

  3. Step 1(c) - 应用 K 均值聚类方法。

Step 2 - 初始化参考向量α

Step 3 - 如果未达到该算法的停止条件,则继续步骤 4-9。

Step 4 - 对每个训练输入向量 x 按照步骤 5-6 操作。

Step 5 - 计算 j = 1 to mi = 1 to n 的欧氏距离平方

D(j)\:=\:\displaystyle\sum\limits_{i=1} n\displaystyle\sum\limits_{j=1} m (x_{i}\:-\:w_{ij})^2

Step 6 - 获得 D(j) 最小的获胜单元 J

Step 7 - 通过以下关系计算获胜单元的新权重:

如果 T = Cj 则 $w_{j}(new)\:=\:w_{j}(old)\:+\:\alpha[x\:-\:w_{j}(old)]$

如果 T ≠ Cj 则 $w_{j}(new)\:=\:w_{j}(old)\:-\:\alpha[x\:-\:w_{j}(old)]$

Step 8 - 降低学习率 α。

Step 9 - 对停止条件进行测试。可能如下所示:

  1. 达到最大迭代次数。

  2. 学习速率降低到一个可以忽略不计的值。

Flowchart

flowchart

Variants

科霍宁开发了另外三种变体,即 LVQ2、LVQ2.1 和 LVQ3。在这三种变体中,由于获胜单元和亚军单元都会学习,因此复杂性比 LVQ 更高。

LVQ2

如上所述,LVQ 其他变体的概念,LVQ2 的条件由窗口形成。此窗口将基于以下参数:

  1. x - 当前输入向量

  2. yc - 最接近 x 的参考向量

  3. yr - 另一个参考向量,它最接近 x

  4. dc - xyc 的距离

  5. dr - xyr 的距离如果

输入向量 x 落入窗口中,则

\frac{d_{c}}{d_{r}}\:>\:1\:-\:\theta\:\:and\:\:\frac{d_{r}}{d_{c}}\:>\:1\:+\:\theta

此处,$\theta$ 是训练样本的数量。

使用以下公式可以进行更新:

$y_{c}(t\:+\:1)\:=\:y_{c}(t)\:+\:\alpha(t)[x(t)\:-\:y_{c}(t)]$ (belongs to different class)

$y_{r}(t\:+\:1)\:=\:y_{r}(t)\:+\:\alpha(t)[x(t)\:-\:y_{r}(t)]$ (belongs to same class)

这里 $\alpha$ 是学习率。

LVQ2.1

在 LVQ2.1 中,我们将取两个最接近的向量 yc1yc2 ,窗口的条件如下:

Min\begin{bmatrix}\frac{d_{c1}}{d_{c2}},\frac{d_{c2}}{d_{c1}}\end{bmatrix}\:>\:(1\:-\:\theta)

Max\begin{bmatrix}\frac{d_{c1}}{d_{c2}},\frac{d_{c2}}{d_{c1}}\end{bmatrix}\:<\:(1\:+\:\theta)

使用以下公式可以进行更新:

$y_{c1}(t\:+\:1)\:=\:y_{c1}(t)\:+\:\alpha(t)[x(t)\:-\:y_{c1}(t)]$ (belongs to different class)

$y_{c2}(t\:+\:1)\:=\:y_{c2}(t)\:+\:\alpha(t)[x(t)\:-\:y_{c2}(t)]$ (belongs to same class)

这里,$\alpha$ 是学习速率。

LVQ3

在 LVQ3 中,我们将采用两个最接近的向量,即 yc1yc2 ,窗口的条件如下 −

Min\begin{bmatrix}\frac{d_{c1}}{d_{c2}},\frac{d_{c2}}{d_{c1}}\end{bmatrix}\:>\:(1\:-\:\theta)(1\:+\:\theta)

这里 $\theta\approx 0.2$

使用以下公式可以进行更新:

$y_{c1}(t\:+\:1)\:=\:y_{c1}(t)\:+\:\beta(t)[x(t)\:-\:y_{c1}(t)]$ (belongs to different class)

$y_{c2}(t\:+\:1)\:=\:y_{c2}(t)\:+\:\beta(t)[x(t)\:-\:y_{c2}(t)]$ (belongs to same class)

这里 $\beta$ 是学习速率 $\alpha$ 的倍数,对于每个 0.1 < m < 0.5

Adaptive Resonance Theory

此网络由 Stephen Grossberg 和 Gail Carpenter 于 1987 年开发。它基于竞争,并使用无监督学习模型。自适应共振理论 (ART) 网络,顾名思义,始终对新事物保持开放(适应)而不会丢失旧模式(共振)。基本上,ART 网络是一个向量分类器,它接受一个输入向量并根据它与哪个存储模式最相似将其分类到某个类别中。

Operating Principal

ART 分类的主要操作可分为以下阶段 −

  1. Recognition phase − 将输入向量与输出层中每个节点处的分类进行比较。如果神经元与应用的分类最匹配,则其输出变为“1”,否则变为“0”。

  2. Comparison phase − 在此阶段,将输入向量与比较层向量进行比较。重置的条件是相似度低于警惕性参数。

  3. Search phase − 在此阶段,网络将搜索重置以及在上述阶段中完成的匹配。因此,如果没有重置且匹配相当好,则分类结束。否则,这个过程将被重复,并且必须发送其他存储的模式以找到正确的匹配。

ART1

它是一种 ART,被设计为对二进制向量进行聚类。我们可以通过其架构来理解这一点。

Architecture of ART1

它由以下两个单元组成 −

Computational Unit − 它由以下内容组成 −

  1. Input unit (F1 layer) − 它进一步拥有以下两个部分 − F1(a) layer (Input portion) − 在 ART1 中,除了仅具有输入向量之外,这部分将不会进行任何处理。连接至 F1(b) 层(接口部分)。 F1(b) layer (Interface portion) − 此部分将输入部分的信号与 F2 层的信号进行组合。F1(b) 层通过自下而上的权重 bij 连接至 F2 层,并且 F2 层通过自上而下的权重 tji 连接至 F1(b) 层。

  2. Cluster Unit (F2 layer) − 这是一个竞争层。选择具有最大净输入的单元来学习输入模式。所有其他集群单元的激活都设为 0。

  3. Reset Mechanism − 此机制的工作基于自上而下权重和输入向量之间的相似性。现在,如果相似程度低于警惕性参数,则不允许集群学习模式,并且将发生重置。

Supplement Unit − 重置机制的问题实际上在于,第 F2 层必须在某些条件下受到抑制,并且在发生某些学习时也必须可用。这就是加 gain control units 两个补充单元即 G1G2 以及重置单元 R 的原因。这些单元接收并向网络中存在的其他单元发送信号。 ‘+’ 指示激励信号,而 ‘−’ 指示抑制信号。

supplement unit
units

Parameters Used

以下参数使用 −

  1. n − 输入矢量中分量的数量

  2. m − 可以形成的最大簇数

  3. bij − F1(b) 到 F2 层的权重,即自底向上的权重

  4. tji − F2 到 F1(b) 层的权重,即自顶向下的权重

  5. ρ − Vigilance parameter

  6. ||x|| − 矢量 x 的范数

Algorithm

Step 1 − 初始化学习率、警觉性参数和权重如下 −

\alpha\:>\:1\:\:and\:\:0\:<\rho\:\leq\:1

0\:<\:b_{ij}(0)\:<\:\frac{\alpha}{\alpha\:-\:1\:+\:n}\:\:and\:\:t_{ij}(0)\:=\:1

Step 2 − 当停止条件为假时,继续执行步骤 3-9。

Step 3 − 为每个训练输入继续执行步骤 4-6。

Step 4 − 将所有 F1(a) 和 F1 单元的激活设置如下

F2 = 0 and F1(a) = input vectors

Step 5 − 从 F1(a) 到 F1(b) 层的输入信号必须像

s_{i}\:=\:x_{i}

Step 6 − 对于每个抑制的 F2 节点

$y_{j}\:=\:\sum_ib_{ij}x_{i}$ 条件为 yj ≠ -1

Step 7 − 当重置为真时,执行步骤 8-10。

Step 8 - 找在所有节点 jyJ ≥ yjJ

Step 9 - 再按如下方式计算F1(b)上的激活

x_{i}\:=\:sitJi

Step 10 - 在计算出矢量 x 的范数和矢量 s 的范数后,需要按如下方式检查重置条件 -

如果 ||x||/ ||s|| < 警觉参数 ρ ,则抑制节点 J 并转到步骤7

否则,如果 ||x||/ ||s|| ≥ 警觉参数 ρ ,则继续。

Step 11 - 节点 J 的权重更新可按如下方式进行 -

b_{ij}(new)\:=\:\frac{\alpha x_{i}}{\alpha\:-\:1\:+\:||x||}

t_{ij}(new)\:=\:x_{i}

Step 12 - 必须检查算法的停止条件,它可能如下 -

  1. 无权重变化。

  2. 不对单元进行重置。

  3. 达到最大迭代次数。

Kohonen Self-Organizing Feature Maps

假设我们有一些任意维度的模式,但是我们需要一维或二维的模式。然后,特征映射的过程对于将宽模式空间转换到典型特征空间非常有用。现在,问题出现了为什么需要自组织特征图?原因在于,除了将任意维度转换为 1-D 或 2-D 的能力外,它还必须具有保持邻域拓扑的能力。

Neighbor Topologies in Kohonen SOM

可以有各种拓扑,但以下两种拓扑使用最多 -

Rectangular Grid Topology

此拓扑在距离 2 格中有 24 个节点,在距离 1 格中有 16 个节点,在距离 0 格中有 8 个节点,这意味着每个矩形格之间的差为 8 个节点。胜利单元用 # 表示。

rectangular

Hexagonal Grid Topology

此拓扑在距离 2 格中有 18 个节点,在距离 1 格中有 12 个节点,在距离 0 格中有 6 个节点,这意味着每个矩形格之间的差为 6 个节点。胜利单元用 # 表示。

hexagonal

Architecture

KSOM 的体系结构类似于竞争网络的体系结构。在前面讨论的邻域方案的帮助下,可以在网络的扩展区域上进行训练。

ksom

Algorithm for training

Step 1 - 初始化权重、学习率 α 和邻域拓扑方案。

Step 2 − 当停止条件为假时,继续执行步骤 3-9。

Step 3 - 对每个输入矢量 x 继续步骤 4-6。

Step 4 − 计算 j = 1 to m 的欧几里得距离的平方

D(j)\:=\:\displaystyle\sum\limits_{i=1}^n \displaystyle\sum\limits_{j=1}^m (x_{i}\:-\:w_{ij})^2

Step 5 − 获取获胜元 J ,其中 D(j) 为最小值。

Step 6 − 利用以下关系计算获胜单元的新权重 −

w_{ij}(new)\:=\:w_{ij}(old)\:+\:\alpha[x_{i}\:-\:w_{ij}(old)]

Step 7 − 利用以下关系更新学习率 α

\alpha(t\:+\:1)\:=\:0.5\alpha t

Step 8 − 减小拓扑模式的半径。

Step 9 − 检查网络的停止条件。

Associate Memory Network

以下是我们可以观察到的两种类型的联想式内存 −

这是一个单层神经网络,其中输入训练向量和输出目标向量是相同的。权重被确定下来,以便网络存储一组模式。

  1. Auto Associative Memory

  2. Hetero Associative memory

Auto Associative Memory

如下图所示,自动联想式内存网络的结构具有 ‘n’ 个输入训练向量和类似的 ‘n’ 个输出目标向量。

Architecture

为了进行训练,该网络正在使用希布尔或德尔塔学习规则。

auto associative memory

Training Algorithm

Step 1 − 将所有权重初始化为零,如 wij = 0 (i = 1 to n, j = 1 to n)

Step 2 − 对每个输入向量执行步骤 3-4。

Step 3 − 激活每个输入单元,如下所示 −

x_{i}\:=\:a_{i}

x_{i}\:=\:s_{i}\:(i\:=\:1\:to\:n)

Step 4 − 激活每个输出单元,如下所示 −

y_{j}\:=\:s_{j}\:(j\:=\:1\:to\:n)

Step 5 − 调整权重,如下所示 −

w_{ij}(new)\:=\:w_{ij}(old)\:+\:x_{i}y_{j}

Testing Algorithm

Step 1 − 为希布尔规则设置在训练期间获得的权重。

Step 2 − 对每个输入向量执行步骤 3-5。

Step 3 − 将输入单元的激活设置为等于输入向量的激活。

Step 4 - 为每个输出单元计算净输入 j = 1 to n

y_{inj}\:=\:\displaystyle\sum\limits_{i=1}^n x_{i}w_{ij}

Step 5 - 应用以下激活函数来计算输出

y_{j}\:=\:f(y_{inj})\:=\:\begin{cases}+1 & if\:y_{inj}\:>\:0\\-1 & if\:y_{inj}\:\leqslant\:0\end{cases}

Hetero Associative memory

类似于自动关联记忆网络,这也是一个单层神经网络。然而,在这个网络中,输入训练向量和输出目标向量并不相同。权重被确定下来,以使网络存储一组模式。异质关联网络本质上是静态的,因此不会有非线性和延迟操作。

Architecture

如下图所示,异质关联存储网络的架构具有 ‘n’ 个输入训练向量和 ‘m’ 个输出目标向量。

hetero associative memory

Training Algorithm

Step 1 − 将所有权重初始化为零,如 wij = 0 (i = 1 to n, j = 1 to n)

Step 1 - 将所有权重初始化为零,即 wij = 0 (i = 1 to n, j = 1 to m)

Step 3 − 激活每个输入单元,如下所示 −

x_{i}\:=\:a_{i}

x_{i}\:=\:s_{i}\:(i\:=\:1\:to\:n)

Step 4 − 激活每个输出单元,如下所示 −

y_{j}\:=\:s_{j}\:(j\:=\:1\:to\:m)

Step 5 − 调整权重,如下所示 −

w_{ij}(new)\:=\:w_{ij}(old)\:+\:x_{i}y_{j}

Testing Algorithm

Step 1 − 为希布尔规则设置在训练期间获得的权重。

Step 2 − 对每个输入向量执行步骤 3-5。

Step 3 − 将输入单元的激活设置为等于输入向量的激活。

Step 4 - 为每个输出单元计算净输入 j = 1 to m;

y_{inj}\:=\:\displaystyle\sum\limits_{i=1}^n x_{i}w_{ij}

Step 5 - 应用以下激活函数来计算输出

y_{j}\:=\:f(y_{inj})\:=\:\begin{cases}+1 & if\:y_{inj}\:>\:0\\0 & if\:y_{inj}\:=\:0\\-1 & if\:y_{inj}\:<\:0\end{cases}

Artificial Neural Network - Hopfield Networks

霍普菲尔德神经网络由约翰·J·霍普菲尔德博士于 1982 年发明。它包括一个层,其包含一个或多个完全连接的递归神经元。霍普菲尔德网络通常用于自动关联和优化任务。

Discrete Hopfield Network

以离散线方式运行的霍普菲尔德网络,或者换句话说,可以认为输入和输出模式是离散矢量,它们在性质上可以是二进制(0,1)或双极(+1,-1)。该网络具有对称的权重,没有自连接,即 wij = wjiwii = 0

Architecture

以下是一些需要牢记关于离散霍普菲尔德网络的重要要点 −

  1. 此模型由一个反相输出和一个同相输出的神经元组成。

  2. 每个神经元的输出应为其他神经元的输入,但不是自我的输入。

  3. 权重/连接强度由 wij 表示。

  4. 连接可以是激发性的,也可以是抑制性的。如果神经元的输出与输入相同,则它是激发性的;否则为抑制性的。

  5. 权重应是对称的,即 wij = wji

hopfield

Y1 传输到 Y2YiYn 的输出分别具有权重 w12w1iw1n 。同样,其他弧线上也有权重。

Training Algorithm

在离散霍普菲尔德网络训练期间,将更新权重。众所周知,我们可以有二进制输入矢量以及双极输入矢量。因此,在这两种情况下,都可以利用以下关系更新权重

Case 1 − 二进制输入模式

对于一组二进制模式 s(p), p = 1 to P

在此, s(p) = s1(p), s2(p),…​, si(p),…​, sn(p)

权重矩阵由以下公式给出:

w_{ij}\:=\:\sum_{p=1}^P[2s_{i}(p)-\:1][2s_{j}(p)-\:1]\:\:\:\:\:对于 i \:\neq\: j

Case 2 − 双极性输入模式

对于一组二进制模式 s(p), p = 1 to P

在此, s(p) = s1(p), s2(p),…​, si(p),…​, sn(p)

权重矩阵由以下公式给出:

w_{ij}\:=\:\sum_{p=1}^P[s_{i}(p)][s_{j}(p)]\:\:\:\:\:对于 i \:\neq\: j

Testing Algorithm

Step 1 − 使用赫布原理从训练算法获得的权重进行初始化。

Step 2 − 如果网络的激活未合并,则执行步骤 3-9。

Step 3 − 对于每个输入向量 X ,执行步骤 4-8。

Step 4 − 按如下方式使网络的初始激活等于外部输入向量 X

y_{i}\:=\:x_{i}\:\:\对于 i\:=\:1\:至\:n

Step 5 − 对于每个单位 Yi ,执行步骤 6-9。

Step 6 − 按如下方式计算网络的净输入 −

y_{ini}\:=\:x_{i}\:+\:\displaystyle\sum\limits_{j}y_{j}w_{ji}

Step 7 − 在净输入上应用激活计算输出 −

y_{i}\:=\begin{cases}1 & 如果\:y_{ini}\:>\:\theta_{i}\\y_{i} & 如果\:y_{ini}\:=\:\theta_{i}\\0 & 如果\:y_{ini}\:<\:\theta_{i}\end{cases}

此处,$\theta_{i}$ 为阈值。

Step 8 − 将此输出 yi 广播至所有其他单位。

Step 9 − 测试连接网络。

Energy Function Evaluation

能量函数被定义为系统状态的绑定且非递增函数。

能量函数 Ef ⁡,也称 Lyapunov function 决定离散霍普菲尔德网络的稳定性,其特征如下 −

E_{f}\ := \:-\frac{1}{2}\displaystyle\sum\limits_{i=1} n\displaystyle\sum\limits_{j=1} n y_{i}y_{j}w_{ij}\:-\:\displaystyle\sum\limits_{i=1}^n x_{i}y_{i}\:+\:\displaystyle\sum\limits_{i=1}^n \theta_{i}y_{i}

Condition − 在稳定网络中,每当节点状态发生变化,上述能量函数会减少。

假设 i 节点状态从 $y_i^{(k)}$ 更改为 $y_i^{(k\:+\:1)}$⁡,那么通过以下关系给出了能量变化 $\Delta E_{f}$

\Delta E_{f}\ := \:E_{f}(y_i {(k+1)})\:-\:E_{f}(y_i {(k)})

=\:-\left(\begin{array}{c}\displaystyle\sum\limits_{j=1}^n w_{ij}y_i {(k)}\:+\:x_{i}\:-\:\theta_{i}\end{array}\right)(y_i {(k+1)}\:-\:y_i^{(k)})

=\:-\:(net_{i})\Delta y_{i}

此处 $\Delta y_{i}\ := \:y_i {(k\:+\:1)}\:-\:y_i {(k)}$

能量变化取决于这样一个事实,即每次只有一个单元能更新其激活。

Continuous Hopfield Network

与离散霍普菲尔德网络相比,连续网络的时间是一个连续变量。它还用于自关联和优化问题,如旅行商问题。

Model − 该模型或架构可以通过添加电气组件(如放大器)构建,放大器可将输入电压映射到输出电压的 sigmoid 激活函数上。

Energy Function Evaluation

E_f = \frac{1}{2}\displaystyle\sum\limits_{i=1}^n\sum_{\substack{j = 1\\ j \ne i}}^n y_i y_j w_{ij} - \displaystyle\sum\limits_{i=1}^n x_i y_i + \frac{1}{\lambda} \displaystyle\sum\limits_{i=1}^n \sum_{\substack{j = 1\\ j \ne i}}^n w_{ij} g_{ri} \int_{0}^{y_i} a^{-1}(y) dy

此处 λ 是增益参数, gri 输入电导。

Boltzmann Machine

这些是具有递归结构的随机学习过程,是 ANN 中早期优化技术的基石。Boltzmann 机是由 Geoffrey Hinton 和 Terry Sejnowski 于 1985 年发明的。在 Hinton 对 Boltzmann 机的解读中可以看到更加清晰的解释。

“此网络一个令人惊讶的特性是它仅使用局部可用的信息。权重的变化仅取决于它连接的两个单​​元的行为,即使该变化优化了全局度量值” - Ackley,Hinton 1985 年。

Boltzmann 机的一些重要要点 −

  1. They use recurrent structure.

  2. 它们由随机神经元组成,随机神经元具有两种可能的状态,1 或 0。

  3. 部分神经元在此属于自适应(自由态),而另一些则固定(冻结态)。

  4. 如果将模拟退火应用于离散霍普菲尔德网络,那么它将变成玻尔兹曼机。

Objective of Boltzmann Machine

玻尔兹曼机的主要目的是优化问题的解决方案。玻尔兹曼机的任务就是优化与该特定问题相关的权重和数量。

Architecture

下图显示了玻尔兹曼机的结构。从图中可以清楚地看到,它是一个二维的单元阵列。这里,单位之间互联的权重为 –p ,其中 p > 0 。自连接的权重由 b 给出,其中 b > 0

boltzmann

Training Algorithm

众所周知,玻尔兹曼机具有固定权重,因此不会有训练算法,因为我们不需要更新网络中的权重。但是,为了测试网络,我们必须设置权重以及找到一致函数 (CF)。

玻尔兹曼机具有一组单元 UiUj ,并且在其上具有双向连接。

  1. 我们正在考虑固定权重说 wij

  2. wij ≠ 0 如果 UiUj 是连接的。

  3. 加权互连中也存在对称性,即 wij = wji

  4. wii 也存在,即单元之间会有自连接。

  5. 对于任何单位 Ui ,其状态 ui 要么为 1,要么为 0。

玻尔兹曼机的主要目标是最大化一致函数 (CF),其可以用以下关系给出

CF\:=\:\displaystyle\sum\limits_{i} \displaystyle\sum\limits_{j\leqslant i} w_{ij}u_{i}u_{j}

现在,当状态从 1 变为 0 或从 0 变为 1 时,一致性的变化可以用以下关系给出 −

\Delta CF\:=\:(1\:-\:2u_{i})(w_{ij}\:+\:\displaystyle\sum\limits_{j\neq i} u_{i} w_{ij})

这里 uiUi 的当前状态。

系数 ( 1 - 2ui ) 的变化由以下关系给出 −

(1\:-\:2u_{i})\:=\:\begin{cases}+1, & U_{i}\:is\:currently\:off\\-1, & U_{i}\:is\:currently\:on\end{cases}

通常,单位 Ui 不会改变其状态,但如果改变,则信息将驻留在该单位的本地。通过这种改变,网络的一致性也会增加。

网络接受单位状态变化的概率由以下关系给出 −

AF(i,T)\:=\:\frac{1}{1\:+\:exp[-\frac{\Delta CF(i)}{T}]}

在此, T 是控制参数。当 CF 达到最高值时,它将减少。

Testing Algorithm

Step 1 − 初始化以下内容以启动训练 −

  1. 表示问题约束的权重

  2. Control Parameter T

Step 2 − 在停止条件不为真时,继续步骤 3-8。

Step 3 − 执行步骤 4-7。

Step 4 − 假设某一状态已更改权重,并选择整数 I, J 作为 1n 之间的随机值。

Step 5 − 如下计算共识度变化 −

\Delta CF\:=\:(1\:-\:2u_{i})(w_{ij}\:+\:\displaystyle\sum\limits_{j\neq i} u_{i} w_{ij})

Step 6 − 计算此网络接受状态变化的概率

AF(i,T)\:=\:\frac{1}{1\:+\:exp[-\frac{\Delta CF(i)}{T}]}

Step 7 − 如下接受或拒绝此更改 −

Case I − 如果 R < AF ,请接受更改。

Case II − 如果 R ≥ AF ,请拒绝更改。

在此, R 是 0 到 1 之間の随机数。

Step 8 − 如下减少控制参数(温度) −

T(new) = ⁡0.95T(old)

Step 9 − 测试可能如下所示的停止条件 −

  1. 温度达到指定值

  2. 多次迭代后状态未发生变化

Brain-State-in-a-Box Network

脑状态神经网络 (BSB) 是一种非线性自关联神经网络,可以扩展到具有两层或更多层的异关联。它也类似于霍普菲尔德网络。它是由 J.A. 安德森、J.W. 西尔弗斯坦、S.A. 里茨和 R.S. 琼斯于 1977 年提出的。

关于 BSB 网络需要注意的一些要点 -

  1. 这是一个完全连接的网络,其节点的最大数量取决于输入空间的维度 n

  2. 所有神经元同时更新。

  3. 神经元值介于 -1 到 +1 之间。

Mathematical Formulations

BSB 网络中使用的节点函数是一个坡道函数,可定义如下 −

f(net)\:=\:min(1,\:max(-1,\:net))

该坡道函数是有界的,且是连续的。

我们知道每个节点都会改变其状态,这可以通过以下数学关系来完成 −

x_{t}(t\:+\:1)\:=\:f\left(\begin{array}{c}\displaystyle\sum\limits_{j=1}^n w_{i,j}x_{j}(t)\end{array}\right)

此处, xi(t)ith 节点在时间 t 的状态。

ith 节点到 jth 节点的权重可以通过以下关系测量 −

w_{ij}\:=\:\frac{1}{P}\displaystyle\sum\limits_{p=1}^P (v_{p,i}\:v_{p,j})

此处, P 是训练模式的数量,它们是双极性的。

Optimization Using Hopfield Network

优化是对设计、情况、资源和系统等进行调整以使其尽可能高效的行动。利用成本函数和能量函数之间的相似性,我们可以使用高度互连的神经元来解决优化问题。这种神经网络是霍普菲尔德网络,它由包含一个或多个完全连接的循环神经元的单层组成。这可用于优化。

使用 Hopfield 网络进行优化时需要记住的重点 −

  1. 网络的能量函数必须最小。

  2. 它将找到令人满意的解决方案,而不是在存储模式中选择一个。

  3. Hopfield 网络找到的解决方案的质量很大程度上取决于网络的初始状态。

Travelling Salesman Problem

寻找推销员行进的最短路线是其中一个计算问题,可以通过使用霍普菲尔德神经网络来优化它。

Basic Concept of TSP

旅行商问题 (TSP) 是一种经典的优化问题,在该问题中,推销员必须游览 n 个城市,这些城市彼此相连,同时保持成本和距离最小。例如,推销员必须游览一组城市 A、B、C、D,目标是找到最短的环形路线 A-B-C–D,以使成本最小化,其中还包括从最后一个城市 D 到第一个城市 A 的出行成本。

travelling salesman problem

Matrix Representation

实际上,n 个城市 TSP 的每个行程都可以表示为 n × n ,其中 ith 行描述 ith 个城市的方位。此矩阵 M ,适用于 4 个城市 A、B、C、D,可以表示为以下形式 −

M = \begin{bmatrix}A: & 1 & 0 & 0 & 0 \\B: & 0 & 1 & 0 & 0 \\C: & 0 & 0 & 1 & 0 \\D: & 0 & 0 & 0 & 1 \end{bmatrix}

Solution by Hopfield Network

在考虑 Hopfield 网络的 TSP 解决方案时,网络中的每个节点对应于矩阵中的一个元素。

Energy Function Calculation

为了成为优化的解决方案,能量函数必须为最小值。在以下约束的基础上,我们可以计算能量函数,如下所示 −

Constraint-I

第一个约束,在此基础上我们计算能量函数,即矩阵 M 中的每个行必须有一个元素等于 1,并且每一行中的其他元素都必须等于 0 ,因为每个城市在 TSP 行程中只能出现在一个位置。此约束在数学上可以写成以下形式 −

\displaystyle\sum\limits_{j=1}^n M_{x,j}\:=\:1\:for \: x\:\in \:\lbrace1,…​,n\rbrace

现在,基于上述约束,要最小化的能量函数将包含一个与以下项成正比的项 −

\displaystyle\sum\limits_{x=1}^n \left(\begin{array}{c}1\:-\:\displaystyle\sum\limits_{j=1}^n M_{x,j}\end{array}\right)^2

Constraint-II

众所周知,在 TSP 中,一个城市可以在行程中的任何位置出现,因此,矩阵 M 中的每一列,必须有一个元素等于 1,而其他元素必须等于 0。此约束在数学上可以写成以下形式 −

\displaystyle\sum\limits_{x=1}^n M_{x,j}\:=\:1\:for \: j\:\in \:\lbrace1,…​,n\rbrace

现在,基于上述约束,要最小化的能量函数将包含一个与以下项成正比的项 −

\displaystyle\sum\limits_{j=1}^n \left(\begin{array}{c}1\:-\:\displaystyle\sum\limits_{x=1}^n M_{x,j}\end{array}\right)^2

Cost Function Calculation

假设一个 n × n 平方矩阵由 C 表示,表示 n 城市 TSP 的成本矩阵,其中 n > 0 。以下是在计算成本函数时的一些参数 −

  1. Cx, y − 成本矩阵的元素表示从城市 xy 出行的成本。

  2. A 和 B 元素的邻接关系可以通过以下关系式表示−

M_{x,i}\:=\:1\:\: 和\:\: M_{y,i\pm 1}\:=\:1

众所周知,在矩阵中,每个节点的输出值可以是 0 或 1,因此对于每对城市 A、B,我们可以为能量函数添加以下项−

\displaystyle\sum\limits_{i=1}^n C_{x,y}M_{x,i}(M_{y,i+1}\:+\:M_{y,i-1})

基于上述成本函数和约束值,最终能量函数 E 可以表示如下−

E\:=\:\frac{1}{2}\displaystyle\sum\limits_{i=1}^n\displaystyle\sum\limits_{x}\displaystyle\sum\limits_{y\neq x}C_{x,y}M_{x,i}(M_{y,i+1}\:+\:M_{y,i-1})\:+

\:\begin{bmatrix}\gamma_{1} \displaystyle\sum\limits_{x} \left(\begin{array}{c}1\:-\:\displaystyle\sum\limits_{i} M_{x,i}\end{array}\right)^2\:+\: \gamma_{2} \displaystyle\sum\limits_{i} \left(\begin{array}{c}1\:-\:\displaystyle\sum\limits_{x} M_{x,i}\end{array}\right)^2 \end{bmatrix}

此处, γ1γ2 是两个加权常量。

Other Optimization Techniques

Iterated Gradient Descent Technique

梯度下降,也称为最速下降,是一种迭代优化算法,用于查找函数的局部最小值。在最小化该函数时,我们关心的是要最小化的代价或误差(请记住旅行商问题)。它广泛用于深度学习中,在各种情况下都很有用。这里要记住的一点是我们关心的是局部优化,而不是全局优化。

Main Working Idea

我们可以在以下步骤的帮助下理解梯度下降的主要工作思路 −

  1. 首先,从一个初始的解猜测开始。

  2. 然后,取该点处函数的梯度。

  3. 稍后,通过使解沿梯度负方向移动来重复该过程。

通过执行上述步骤,该算法最终将在梯度为零时收敛。

optimization

Mathematical Concept

假设我们有一个函数 f(x) ,我们正在尝试找到此函数的最小值。以下是查找 f(x) 的最小值步骤。

  1. 首先,为x赋予某个初始值 $x_{0}\:for\:x$

  2. 现在,取函数的梯度 $\nabla f$,直观上,梯度将给出该 x 处的曲线的斜率,其方向将指向函数的增加,以找出使其最小化的最佳方向。

  3. 现在如下更改 x −x_{n\:+\:1}\:=\:x_{n}\:-\:\theta \nabla f(x_{n})

此处, θ > 0 是训练速率(步长),它迫使算法进行小的跳转。

Estimating Step Size

实际上,错误的步长 θ 可能达不到收敛,因此仔细选择步长非常重要。在选择步长时必须记住以下几点:

  1. 不要选择过大的步长,否则会产生负面影响,即发散而不是收敛。

  2. 不要选择过小的步长,否则会花费太多时间来收敛。

关于选择步长的一些选项 -

  1. 一种选择是选择一个固定的步长。

  2. 另一种选择是为每次迭代选择不同的步长。

Simulated Annealing

模拟退火 (SA)的基本概念源自固体的退火过程。在退火过程中,如果我们加热金属使其超过熔点,然后冷却它,则结构特性将取决于冷却速率。我们还可以说 SA 模拟了退火的冶金过程。

Use in ANN

SA 是一种随机计算方法,受退火类比启发,用于逼近给定函数的全局优化。我们可以使用 SA 来训练前馈神经网络。

Algorithm

Step 1 - 生成一个随机解决方案。

Step 2 - 使用一些成本函数计算其成本。

Step 3 - 生成一个随机邻域解决方案。

Step 4 - 通过相同的成本函数计算新的解决方案成本。

Step 5 - 如下比较新解决方案的成本和旧解决方案的成本 -

如果 CostNew Solution < CostOld Solution ,则移动到新解决方案。

Step 6 - 测试停止条件,可能是达到最大迭代次数或获得可接受的解决方案。

Artificial Neural Network - Genetic Algorithm

自然一直都是全人类的伟大灵感来源。遗传算法(GA)是基于自然选择和遗传学概念的搜索算法。GA 是一个更大计算分支的子集,该分支称为 Evolutionary Computation

GA 是约翰·霍兰及其学生和密歇根大学的同事们(最著名的是戴维·E·戈德堡)开发的,并且此后已经在各种优化问题上取得了高度成功。

在 GA 中,我们有一个给定问题的候选解池或人群。这些解然后经过重组和变异(如同自然遗传学),生成新的孩子,并在这个过程中重复各种世代。每个个体(或候选解)都分配一个适应值(基于其目标函数值),并且适应性强的个体有较高的交配机会,并产生更多“适应性更强”的个体。这与达尔文的“适者生存”理论是一致的。

通过这种方式,我们不断“进化”出更好的个体或解决方案,直至达到停止准则。

遗传算法在本质上是充分随机化的,但它们比随机局部搜索(我们仅尝试各种随机解决方案,同时跟踪迄今为止最好的解决方案)表现得更好,因为它们也利用历史信息。

Advantages of GAs

GA 具有各种优势,使它们非常受欢迎。这些包括−

  1. 不需要任何导数信息(这在许多现实问题上可能不可用)。

  2. 与传统方法相比,速度更快、效率更高。

  3. 具有极强的并行能力。

  4. 优化连续和离散函数以及多目标问题。

  5. 提供“良好”解决方案的列表,而不仅仅是一个解决方案。

  6. 总能为问题找到答案,并且答案会随着时间而变得更好。

  7. 在搜索空间非常大且涉及大量参数时很有用。

Limitations of GAs

与任何技术一样,遗传算法也有几个局限性。这些包括 −

  1. 遗传算法并不适用于所有问题,尤其是简单问题和可获得导数信息的问题。

  2. 适应值被重复计算,对于某些问题而言这可能在计算上很昂贵。

  3. 由于是随机的,所以不能保证解决方案的最佳性或质量。

  4. 如果没有正确实施,遗传算法可能无法收敛到最佳解决方案。

GA – Motivation

遗传算法有能力“足够快”地提供“足够好”的解决方案。这使得遗传算法在解决优化问题中很有吸引力。需要遗传算法的原因如下 −

Solving Difficult Problems

在计算机科学中,有很多问题是 NP-Hard 。这基本上意味着,即使是最强大的计算系统也要花很长时间(甚至数年!)才能解决该问题。在这种情况下,遗传算法被证明是一种有效工具,可以在短时间内提供 usable near-optimal solutions

Failure of Gradient Based Methods

基于传统微积分的方法通过从一个随机点开始并朝梯度方向移动来工作,直到我们到达山顶。这种技术有效,并且非常适合单峰目标函数,例如线性回归中的成本函数。然而,在大多数实际情况下,我们有一个非常复杂的问题,称为景观,由许多山峰和许多山谷组成,这导致此类方法失败,因为它们倾向于停滞在局部最优值,如下图所示。

failure ga

Getting a Good Solution Fast

旅行商问题 (TSP) 等一些困难问题具有实际应用,例如寻路和超大规模集成 (VLSI) 设计。现在想象一下您正在使用 GPS 导航系统,它需要几分钟(甚至几小时)来计算从源到目的地的“最佳”路径。在这样的实际应用中,延迟是不可接受的,因此需要一个“足够好”的解决方案,即“快速”交付的解决方案。

How to Use GA for Optimization Problems?

我们已经知道,优化是为了使设计、情况、资源和系统等尽可能有效。优化过程在以下图表中显示。

how to use

Stages of GA Mechanism for Optimization Process

以下是用于优化问题时 GA 机制的阶段。

  1. 随机生成初始种群。

  2. 选择具有最佳适应值的最优解。

  3. 使用变异和交叉算子重新组合选定的解决方案。

  4. 将后代插入种群中。

  5. 现在,如果满足停止条件,则返回具有最佳适应值的解决方案。否则,转到步骤 2。

Applications of Neural Networks

在研究神经网络已广泛使用的领域之前,我们需要了解为什么神经网络将成为首选应用程序。

Why Artificial Neural Networks?

我们需要通过人的例子来理解上述问题的答案。作为一个孩子,我们曾经在长辈的帮助下学习事物,其中包括父母或老师。然后,通过自学或实践,我们在整个生命中不断学习。科学家和研究人员也像人类一样,让机器变得智能,而神经网络由于以下原因,在其中扮演着非常重要的角色:

  1. 借助神经网络,我们可以找到算法方法昂贵或不存在的问题的解决方案。

  2. 神经网络可以通过示例学习,因此,我们不需要在很大程度上对其进行编程。

  3. 与传统速度相比,神经网络具有更高的准确性和速度。

Areas of Application

以下是神经网络使用的一些领域。它表明神经网络在其开发和应用中采用跨学科的方法。

Speech Recognition

语言在人际交往中占有突出地位。因此,人们自然会期望与计算机进行语音交互。在当前时代,为了与机器进行通信,人类仍然需要复杂的语言,这些语言难以学习和使用。为了消除这种交流障碍,一种简单的解决方案可能是以机器能够理解的口语进行交流。

在这一领域已经取得了很大进展,然而,此类系统仍然面临词汇或语法有限的问题,以及针对不同条件的不同说话人对系统进行再培训的问题。神经网络在这个领域发挥着重要作用。下列神经网络用于语音识别:

  1. Multilayer networks

  2. 具有递归连接的多层网络

  3. Kohonen self-organizing feature map

最适合这种网络的是 Kohonen 自组织特征映射,它的输入是语音波形的短片段。它会将同类音素映射到输出阵列中,称为特征提取技术。在提取特征之后,借助一些作为后端处理的声学模型,它将识别出说话内容。

Character Recognition

这是一个属于模式识别一般领域的有趣问题。许多神经网络已被开发用于自动识别手写字符,无论是字母还是数字。以下是用于字符识别的某些 ANN −

  1. 多层神经网络,如反向传播神经网络。

  2. Neocognitron

虽然反向传播神经网络有几个隐藏层,但从一层到下一层的连接模式是局部化的。类似地,新认知网络也拥有几个隐藏层,并且它针对此类应用分层进行训练。

Signature Verification Application

签名是在法律交易中授权和验证某个人的最有用的方法之一。签名验证技术是一种非视觉技术。

对于此应用,第一种方法是提取特征或代表签名的一组几何特征。利用这些特征集,我们必须使用有效的神经网络算法训练神经网络。此经过训练的神经网络在验证阶段将签名分类为真品或伪造。

Human Face Recognition

这是识别给定人脸的生物识别方法之一。这是典型的任务,因为其表征为“非人脸”图像。但如果神经网络接受了良好的训练,那么它可以根据图像将图像分为两类,即有脸的图像和没有脸的图像。

首先,必须对所有输入图像进行预处理。然后,必须减小该图像的维数。最后,必须使用神经网络训练算法对其进行分类。以下神经网络用于使用经过预处理的图像进行训练目的 −

  1. 使用反向传播算法进行训练的全连接多层前馈神经网络。

  2. 对于降维,使用主成分分析 (PCA)。