Artificial Neural Network 简明教程
Artificial Neural Network - Basic Concepts
神经网络是并行计算设备,它基本上是尝试建立大脑的计算机模型。主要目标是开发一个系统,以比传统系统更快地执行各种计算任务。这些任务包括模式识别和分类、逼近、优化和数据聚类。
What is Artificial Neural Network?
人造神经网络 (ANN) 是一个有效的计算系统,其中心思想借鉴了生物神经网络的类比。ANN 也被称为“人造神经系统”或“平行分布式处理系统”或“连接主义系统”。ANN 拥有大量单元的集合,这些单元以某种模式相互连接,以允许单元之间进行通信。这些单元,也称为节点或神经元,是并行工作的简单处理器。
每个神经元都通过连接链路与其他神经元连接。每个连接链路都与一个权重相关,该权重包含输入信号的信息。这是神经元解决特定问题最有用的信息,因为权重通常会激发或抑制正在传达的信号。每个神经元都有一个内部状态,称为激活信号。在组合输入信号和激活规则后产生的输出信号可以发送到其他单元。
A Brief History of ANN
ANN 的历史可以分为以下三个时代 −
ANN during 1940s to 1960s
这个时代的一些关键发展如下 −
-
1943 − 假设神经网络的概念始于生理学家沃伦·麦卡洛克和数学家沃尔特·皮茨,1943 年他们使用电路对一个简单神经网络建模,以描述大脑中的神经元如何工作。
-
1949 − 唐纳德·赫布的著作《行为的组织》提出了这样一个事实:一个神经元重复激活另一个神经元会增加它们每次使用的强度。
-
1956 − 泰勒提出了一个联想记忆网络。
-
1958 − 罗森布拉特发明了名为感知器的 McCulloch 和 Pitts 神经元模型的学习方法。
-
1960 − 伯纳德·维德罗和马西恩·霍夫开发了称为“ADALINE”和“MADALINE”的模型。
Biological Neuron
神经细胞(神经元)是一种特殊的生物细胞,可以处理信息。据估计,有大量的,大约1011个神经元以及大量的相互连接,大约1015个。
Working of a Biological Neuron
如图所示,一个典型的神经元由以下四个部分组成,借助这四个部分我们可以解释它的工作原理 −
-
Dendrites − 它们是树状分支,负责接收来自连接到它的其他神经元的信息。从另一个意义上,我们可以说它们就像神经元的耳朵。
-
Soma − 它是神经元的细胞体,负责处理从树突中接收的信息。
-
Axon − 它就像神经元用来发送信息的一根电缆。
-
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 |
将信息存储在突触中 |
将信息存储在连续的存储器位置中 |
Artificial Neural Network - Building Blocks
ANN 的处理取决于以下三个组成部分 -
-
Network Topology
-
权重或学习的调整
-
Activation Functions
在本章中,我们将详细讨论人工神经网络的这三个组成部分
Network Topology
网络拓扑是网络及其节点和连接线的排列。根据拓扑结构,人工神经网络可分类为以下几种:
Adjustments of Weights or Learning
在人工神经网络中学习是修改指定网络中神经元之间连接权重的方法。人工神经网络学习可以分为三大类,即监督学习、无监督学习和强化学习。
Supervised Learning
顾名思义,此类学习是在老师的监督下进行的。这一学习过程是依赖的。
在有监督学习下的人工神经网络训练期间,输入向量将呈现给网络,这将产生一个输出向量。该输出向量将与期望输出向量进行比较。如果实际输出和期望输出向量之间有差异,则会生成一个误差信号。在此误差信号的基础上,将调整权重,直到实际输出与期望输出匹配。
Activation Functions
可以将它定义为施加在输入上的额外力或努力,以获得精确的输出。在人工神经网络中,我们还可以在输入上应用激活函数以获得精确的输出。以下是一些有趣的激活函数:
Sigmoid Activation Function
它有两种类型,如下所示 -
-
Binary sigmoidal function - 此激活函数执行 0 和 1 之间的输入编辑。它本质上是正面的。它总是受限制的,这意味着它的输出不可能小于 0,且不可能大于 1。它的本质也严格递增,这意味着输入越大输出就越高。它可以定义为 F(x)\:=\:sigm(x)\:=\:\frac{1}{1\:+\:exp(-x)}
-
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 − 此网络就像一个带有输出之间反馈连接的单层前馈网络。输出之间的连接是抑制类型,用虚线表示,这意味着竞争者从不自我支持。
Basic Concept of Competitive Learning Rule − 如前所述,输出节点之间会存在竞争。因此,训练中的主要概念是,对于给定的输入模式,激活程度最高的输出单元将被宣布为获胜者。此规则也称为优胜者全得,因为只有获胜的神经元会更新,其余神经元保持不变。
Mathematical formulation − 以下是在这个学习规则中重要的三个数学表述因素 −
-
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}$,必须在网络中所有其他神经元中最大。
-
Condition of sum total of weight − 对竞争性学习规则的另一个约束是,特定输出神经元的权重之和将为 1。例如,如果我们考虑神经元 k ,那么 − \displaystyle\sum\limits_{j}w_{kj}\:=\:1\:\:\:\:\:\:\:\:\:对于\:所有\:k
-
Change of weight for winner − 如果神经元不对输入模式做出响应,那么神经元就不会学习。但是,如果特定神经元获胜,那么相应的权重将调整如下 \Delta w_{kj}\:=\:\begin{cases}-\alpha(x_{j}\:-\:w_{kj}), & 如果\:神经元\:k\:获胜\\0, & 如果\:神经元\:k\:失败\end{cases}
这里 $\alpha$ 是学习率。
这清楚地表明,我们通过调整权重来支持获胜的神经元,如果神经元失败,我们就不必费事重新调整其权重了。
Supervised Learning
顾名思义,{s0} 在教师的监督下进行。此学习过程是相依的。在受监督学习中训练 ANN 期间,将输入向量提供给网络,该网络会产生一个输出向量。将该输出向量与所需/目标输出向量进行比较。如果实际输出和所需的/目标输出向量之间存在差异,则会生成一个误差信号。在该误差信号的基础上,将调整权重,直到实际输出与所需的输出匹配。
Perceptron
由 Frank Rosenblatt 使用 McCulloch 和 Pitts 模型开发的感知器是人工神经网络的基本操作单元。它使用受监督的学习规则,并且能够将数据分类为两个类。
感知器的操作特征:它包含一个神经元,该神经元具有任意数量的输入和可调整权重,但神经元的输出根据阈值确定为 1 或 0。它还包含一个偏差,其权重始终为 1。下图给出了感知器的示意图表示。
因此,感知器具有以下三个基本元素 −
-
Links − 它有一组连接链接,其携带一个权重,其中偏置始终具有权重 1。
-
Adder − 它在将输入与各自的权重相乘后对其进行相加。
-
Activation function − 它限制神经元的输出。最基本的激活函数是 Heaviside 阶跃函数,它有两个可能的输出。如果输入为正,则该函数返回 1,如果任何负输入,则返回 0。
Training Algorithm for Single Output Unit
Step 1 − 初始化以下内容以启动训练 −
-
Weights
-
Bias
-
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
以下图表为多输出类别的感知器的架构。
Step 1 − 初始化以下内容以启动训练 −
-
Weights
-
Bias
-
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 n 和 j = 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 的一些重要事项如下 -
-
它使用双极激活函数。
-
它使用 delta 规则进行训练来最小化实际输出和期望/目标输出之间的均方误差 (MSE)。
-
权值和偏差是可调的。
Training Algorithm
Step 1 − 初始化以下内容以启动训练 −
-
Weights
-
Bias
-
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 的一些重要要点:
-
它就像一个多层感知器,其中 Adaline 神经元会在输入层与 Madaline 层之间充当隐藏单元。
-
如我们在 Adaline 架构中所看到的,输入层与 Adaline 层之间的权重和偏差是可以调节的。
-
Adaline 层和 Madaline 层具有固定的权重和偏差,均为 1。
-
训练可以通过 Delta 规则完成。
Architecture
Madaline 的架构包含 “n” 个输入层神经元、 “m” 个 Adaline 层神经元和 1 个 Madaline 层神经元。由于 Adaline 层位于输入层和输出层(即 Madaline 层)之间,因此可以将其视为一个隐藏层。
Training Algorithm
目前我们已经知道,只有输入层与 Adaline 层之间的权重和偏差需要调节,而 Adaline 层与 Madaline 层之间的权重和偏差是固定的。
Step 1 − 初始化以下内容以启动训练 −
-
Weights
-
Bias
-
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 ≠ t 和 t = 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 ≠ t 和 t = -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 的工作分为两个阶段。一个阶段将信号从输入层传送到输出层,另一个阶段将误差从输出层反向传播到输入层。
Training Algorithm
对于训练,BPN 将使用二进制 S 形激活函数。BPN 的训练将具有如下三个阶段。
-
Phase 1 − 前馈阶段
-
Phase 2 − 误差的反向传播
-
Phase 3 − 权重的更新
所有这些步骤将在算法中按如下所示总结
Step 1 − 初始化以下内容以启动训练 −
-
Weights
-
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
这些类型的网络基于竞争学习规则,并且会使用以下策略:它选择具有最大总输入量的神经元作为获胜者。输出神经元之间的连接展示了它们之间的竞争,其中一个会“开启”,这意味着它会是获胜者,其他会“关闭”。
以下是使用非监督学习基于此简单概念的一些网络。
Basic Concept of Competitive Learning Rule
如前所述,输出节点之间存在竞争,因此主要概念是:在训练期间,对给定输入模式具有最高激活度的输出单元将被宣布为获胜者。此规则也称为赢家通吃,因为只有获胜的神经元会被更新,而其余神经元保持不变。
Mathematical Formulation
以下是此学习规则的数学公式的三个重要因素:
-
成为赢家条件假设一个神经元 yk 希望成为赢家,那么会出现以下条件:y_{k}\:=\:\begin{cases}1 & if\:v_{k} > v_{j}\:for\:all\:\:j,\:j\:\neq\:k\\0 & otherwise\end{cases}这意味着,如果说神经元 yk 想获胜,那么其感应局部场(求和单元的输出),例如 vk ,必须在网络中的所有其他神经元之间最大。
-
权重总和条件对竞争性学习规则的另一个约束是针对特定输出神经元的权重总和将为 1。例如,如果我们考虑神经元 k ,那么\displaystyle\sum\limits_{k} w_{kj}\:=\:1\:\:\:\:for\:all\:\:k
-
获胜者的重量改变如果神经元没有对输入模式做出反应,则该神经元中不进行任何学习。不过,如果一个特定的神经元获胜,则调整相应的权重如下 −\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} ,更新原型 wj 为 Cj 中当前所有样本的质心,以便:
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
它是一个层次网络,包含许多层,并且在这些层中局部有连接模式。
正如我们在上图中看到的,新认知网络被划分为不同的连接层,并且每层有两个细胞。以下是对这些细胞的解释 −
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}
Learning Vector Quantization
学习向量量化 (LVQ) 不同于矢量量化 (VQ) 和科霍宁自组织映射 (KSOM),它本质上是一种竞争性网络,使用监督学习。我们可以将其定义为一个对模式进行分类的过程,其中每个输出单元代表一个类别。由于它使用监督学习,因此将会给网络提供一组具有已知分类的训练模式,以及输出类别的一个初始分布。在完成训练过程后,LVQ 将通过将输入向量分配到与输出单元相同的类别,对该向量进行分类。
Parameters Used
以下是 LVQ 训练过程中以及流程图中使用的参数:
-
x = 训练向量 (x1,…,xi,…,xn)
-
T = 训练向量 x 的类别
-
wj = jth 输出单元的权重向量
-
Cj = 与 jth 输出单元关联的类别
Training Algorithm
Step 1 - 初始化参考向量,如下操作:
-
Step 1(a) - 从给定的训练向量集中,取前“ m ”(集群数)个训练向量,并将它们用作权重向量。其余向量可用于训练。
-
Step 1(b) - 随机分配初始权重和分类。
-
Step 1(c) - 应用 K 均值聚类方法。
Step 2 - 初始化参考向量α
Step 3 - 如果未达到该算法的停止条件,则继续步骤 4-9。
Step 4 - 对每个训练输入向量 x 按照步骤 5-6 操作。
Step 5 - 计算 j = 1 to m 和 i = 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 - 对停止条件进行测试。可能如下所示:
-
达到最大迭代次数。
-
学习速率降低到一个可以忽略不计的值。
LVQ2
如上所述,LVQ 其他变体的概念,LVQ2 的条件由窗口形成。此窗口将基于以下参数:
-
x - 当前输入向量
-
yc - 最接近 x 的参考向量
-
yr - 另一个参考向量,它最接近 x
-
dc - x 到 yc 的距离
-
dr - x 到 yr 的距离如果
输入向量 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 中,我们将取两个最接近的向量 yc1 和 yc2 ,窗口的条件如下:
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 中,我们将采用两个最接近的向量,即 yc1 和 yc2 ,窗口的条件如下 −
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 分类的主要操作可分为以下阶段 −
-
Recognition phase − 将输入向量与输出层中每个节点处的分类进行比较。如果神经元与应用的分类最匹配,则其输出变为“1”,否则变为“0”。
-
Comparison phase − 在此阶段,将输入向量与比较层向量进行比较。重置的条件是相似度低于警惕性参数。
-
Search phase − 在此阶段,网络将搜索重置以及在上述阶段中完成的匹配。因此,如果没有重置且匹配相当好,则分类结束。否则,这个过程将被重复,并且必须发送其他存储的模式以找到正确的匹配。
ART1
它是一种 ART,被设计为对二进制向量进行聚类。我们可以通过其架构来理解这一点。
Architecture of ART1
它由以下两个单元组成 −
Computational Unit − 它由以下内容组成 −
-
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) 层。
-
Cluster Unit (F2 layer) − 这是一个竞争层。选择具有最大净输入的单元来学习输入模式。所有其他集群单元的激活都设为 0。
-
Reset Mechanism − 此机制的工作基于自上而下权重和输入向量之间的相似性。现在,如果相似程度低于警惕性参数,则不允许集群学习模式,并且将发生重置。
Supplement Unit − 重置机制的问题实际上在于,第 F2 层必须在某些条件下受到抑制,并且在发生某些学习时也必须可用。这就是加 gain control units 两个补充单元即 G1 和 G2 以及重置单元 R 的原因。这些单元接收并向网络中存在的其他单元发送信号。 ‘+’ 指示激励信号,而 ‘−’ 指示抑制信号。
Parameters Used
以下参数使用 −
-
n − 输入矢量中分量的数量
-
m − 可以形成的最大簇数
-
bij − F1(b) 到 F2 层的权重,即自底向上的权重
-
tji − F2 到 F1(b) 层的权重,即自顶向下的权重
-
ρ − Vigilance parameter
-
||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 - 找在所有节点 j 中 yJ ≥ yj 的 J
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 - 必须检查算法的停止条件,它可能如下 -
-
无权重变化。
-
不对单元进行重置。
-
达到最大迭代次数。
Kohonen Self-Organizing Feature Maps
假设我们有一些任意维度的模式,但是我们需要一维或二维的模式。然后,特征映射的过程对于将宽模式空间转换到典型特征空间非常有用。现在,问题出现了为什么需要自组织特征图?原因在于,除了将任意维度转换为 1-D 或 2-D 的能力外,它还必须具有保持邻域拓扑的能力。
Neighbor Topologies in Kohonen SOM
可以有各种拓扑,但以下两种拓扑使用最多 -
Rectangular Grid Topology
此拓扑在距离 2 格中有 24 个节点,在距离 1 格中有 16 个节点,在距离 0 格中有 8 个节点,这意味着每个矩形格之间的差为 8 个节点。胜利单元用 # 表示。
Hexagonal Grid Topology
此拓扑在距离 2 格中有 18 个节点,在距离 1 格中有 12 个节点,在距离 0 格中有 6 个节点,这意味着每个矩形格之间的差为 6 个节点。胜利单元用 # 表示。
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
以下是我们可以观察到的两种类型的联想式内存 −
这是一个单层神经网络,其中输入训练向量和输出目标向量是相同的。权重被确定下来,以便网络存储一组模式。
-
Auto Associative Memory
-
Hetero Associative memory
Auto Associative Memory
如下图所示,自动联想式内存网络的结构具有 ‘n’ 个输入训练向量和类似的 ‘n’ 个输出目标向量。
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
类似于自动关联记忆网络,这也是一个单层神经网络。然而,在这个网络中,输入训练向量和输出目标向量并不相同。权重被确定下来,以使网络存储一组模式。异质关联网络本质上是静态的,因此不会有非线性和延迟操作。
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 = wji 和 wii = 0 。
Architecture
以下是一些需要牢记关于离散霍普菲尔德网络的重要要点 −
-
此模型由一个反相输出和一个同相输出的神经元组成。
-
每个神经元的输出应为其他神经元的输入,但不是自我的输入。
-
权重/连接强度由 wij 表示。
-
连接可以是激发性的,也可以是抑制性的。如果神经元的输出与输入相同,则它是激发性的;否则为抑制性的。
-
权重应是对称的,即 wij = wji
从 Y1 传输到 Y2 、 Yi 和 Yn 的输出分别具有权重 w12 、 w1i 和 w1n 。同样,其他弧线上也有权重。
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 机的一些重要要点 −
-
They use recurrent structure.
-
它们由随机神经元组成,随机神经元具有两种可能的状态,1 或 0。
-
部分神经元在此属于自适应(自由态),而另一些则固定(冻结态)。
-
如果将模拟退火应用于离散霍普菲尔德网络,那么它将变成玻尔兹曼机。
Objective of Boltzmann Machine
玻尔兹曼机的主要目的是优化问题的解决方案。玻尔兹曼机的任务就是优化与该特定问题相关的权重和数量。
Architecture
下图显示了玻尔兹曼机的结构。从图中可以清楚地看到,它是一个二维的单元阵列。这里,单位之间互联的权重为 –p ,其中 p > 0 。自连接的权重由 b 给出,其中 b > 0 。
Training Algorithm
众所周知,玻尔兹曼机具有固定权重,因此不会有训练算法,因为我们不需要更新网络中的权重。但是,为了测试网络,我们必须设置权重以及找到一致函数 (CF)。
玻尔兹曼机具有一组单元 Ui 和 Uj ,并且在其上具有双向连接。
-
我们正在考虑固定权重说 wij 。
-
wij ≠ 0 如果 Ui 和 Uj 是连接的。
-
加权互连中也存在对称性,即 wij = wji 。
-
wii 也存在,即单元之间会有自连接。
-
对于任何单位 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})
这里 ui 是 Ui 的当前状态。
系数 ( 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 − 初始化以下内容以启动训练 −
-
表示问题约束的权重
-
Control Parameter T
Step 2 − 在停止条件不为真时,继续步骤 3-8。
Step 3 − 执行步骤 4-7。
Step 4 − 假设某一状态已更改权重,并选择整数 I, J 作为 1 和 n 之间的随机值。
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 − 测试可能如下所示的停止条件 −
-
温度达到指定值
-
多次迭代后状态未发生变化
Brain-State-in-a-Box Network
脑状态神经网络 (BSB) 是一种非线性自关联神经网络,可以扩展到具有两层或更多层的异关联。它也类似于霍普菲尔德网络。它是由 J.A. 安德森、J.W. 西尔弗斯坦、S.A. 里茨和 R.S. 琼斯于 1977 年提出的。
关于 BSB 网络需要注意的一些要点 -
-
这是一个完全连接的网络,其节点的最大数量取决于输入空间的维度 n 。
-
所有神经元同时更新。
-
神经元值介于 -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 网络进行优化时需要记住的重点 −
-
网络的能量函数必须最小。
-
它将找到令人满意的解决方案,而不是在存储模式中选择一个。
-
Hopfield 网络找到的解决方案的质量很大程度上取决于网络的初始状态。
Travelling Salesman Problem
寻找推销员行进的最短路线是其中一个计算问题,可以通过使用霍普菲尔德神经网络来优化它。
Solution by Hopfield Network
在考虑 Hopfield 网络的 TSP 解决方案时,网络中的每个节点对应于矩阵中的一个元素。
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 。以下是在计算成本函数时的一些参数 −
-
Cx, y − 成本矩阵的元素表示从城市 x 到 y 出行的成本。
-
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
我们可以在以下步骤的帮助下理解梯度下降的主要工作思路 −
-
首先,从一个初始的解猜测开始。
-
然后,取该点处函数的梯度。
-
稍后,通过使解沿梯度负方向移动来重复该过程。
通过执行上述步骤,该算法最终将在梯度为零时收敛。
Artificial Neural Network - Genetic Algorithm
自然一直都是全人类的伟大灵感来源。遗传算法(GA)是基于自然选择和遗传学概念的搜索算法。GA 是一个更大计算分支的子集,该分支称为 Evolutionary Computation 。
GA 是约翰·霍兰及其学生和密歇根大学的同事们(最著名的是戴维·E·戈德堡)开发的,并且此后已经在各种优化问题上取得了高度成功。
在 GA 中,我们有一个给定问题的候选解池或人群。这些解然后经过重组和变异(如同自然遗传学),生成新的孩子,并在这个过程中重复各种世代。每个个体(或候选解)都分配一个适应值(基于其目标函数值),并且适应性强的个体有较高的交配机会,并产生更多“适应性更强”的个体。这与达尔文的“适者生存”理论是一致的。
通过这种方式,我们不断“进化”出更好的个体或解决方案,直至达到停止准则。
遗传算法在本质上是充分随机化的,但它们比随机局部搜索(我们仅尝试各种随机解决方案,同时跟踪迄今为止最好的解决方案)表现得更好,因为它们也利用历史信息。
Advantages of GAs
GA 具有各种优势,使它们非常受欢迎。这些包括−
-
不需要任何导数信息(这在许多现实问题上可能不可用)。
-
与传统方法相比,速度更快、效率更高。
-
具有极强的并行能力。
-
优化连续和离散函数以及多目标问题。
-
提供“良好”解决方案的列表,而不仅仅是一个解决方案。
-
总能为问题找到答案,并且答案会随着时间而变得更好。
-
在搜索空间非常大且涉及大量参数时很有用。
Limitations of GAs
与任何技术一样,遗传算法也有几个局限性。这些包括 −
-
遗传算法并不适用于所有问题,尤其是简单问题和可获得导数信息的问题。
-
适应值被重复计算,对于某些问题而言这可能在计算上很昂贵。
-
由于是随机的,所以不能保证解决方案的最佳性或质量。
-
如果没有正确实施,遗传算法可能无法收敛到最佳解决方案。
GA – Motivation
遗传算法有能力“足够快”地提供“足够好”的解决方案。这使得遗传算法在解决优化问题中很有吸引力。需要遗传算法的原因如下 −
Solving Difficult Problems
在计算机科学中,有很多问题是 NP-Hard 。这基本上意味着,即使是最强大的计算系统也要花很长时间(甚至数年!)才能解决该问题。在这种情况下,遗传算法被证明是一种有效工具,可以在短时间内提供 usable near-optimal solutions 。
Applications of Neural Networks
在研究神经网络已广泛使用的领域之前,我们需要了解为什么神经网络将成为首选应用程序。
Why Artificial Neural Networks?
我们需要通过人的例子来理解上述问题的答案。作为一个孩子,我们曾经在长辈的帮助下学习事物,其中包括父母或老师。然后,通过自学或实践,我们在整个生命中不断学习。科学家和研究人员也像人类一样,让机器变得智能,而神经网络由于以下原因,在其中扮演着非常重要的角色:
-
借助神经网络,我们可以找到算法方法昂贵或不存在的问题的解决方案。
-
神经网络可以通过示例学习,因此,我们不需要在很大程度上对其进行编程。
-
与传统速度相比,神经网络具有更高的准确性和速度。
Areas of Application
以下是神经网络使用的一些领域。它表明神经网络在其开发和应用中采用跨学科的方法。
Speech Recognition
语言在人际交往中占有突出地位。因此,人们自然会期望与计算机进行语音交互。在当前时代,为了与机器进行通信,人类仍然需要复杂的语言,这些语言难以学习和使用。为了消除这种交流障碍,一种简单的解决方案可能是以机器能够理解的口语进行交流。
在这一领域已经取得了很大进展,然而,此类系统仍然面临词汇或语法有限的问题,以及针对不同条件的不同说话人对系统进行再培训的问题。神经网络在这个领域发挥着重要作用。下列神经网络用于语音识别:
-
Multilayer networks
-
具有递归连接的多层网络
-
Kohonen self-organizing feature map
最适合这种网络的是 Kohonen 自组织特征映射,它的输入是语音波形的短片段。它会将同类音素映射到输出阵列中,称为特征提取技术。在提取特征之后,借助一些作为后端处理的声学模型,它将识别出说话内容。
Character Recognition
这是一个属于模式识别一般领域的有趣问题。许多神经网络已被开发用于自动识别手写字符,无论是字母还是数字。以下是用于字符识别的某些 ANN −
-
多层神经网络,如反向传播神经网络。
-
Neocognitron
虽然反向传播神经网络有几个隐藏层,但从一层到下一层的连接模式是局部化的。类似地,新认知网络也拥有几个隐藏层,并且它针对此类应用分层进行训练。