人工神经网络 - Hopfield Networks


Hopfield 神经网络由 John J. Hopfield 博士于 1982 年发明。它由单层组成,其中包含一个或多个完全连接的循环神经元。Hopfield 网络通常用于自动关联和优化任务。

离散Hopfield网络

Hopfield 网络以离散线方式运行,或者换句话说,可以说输入和输出模式是离散向量,本质上可以是二进制 (0,1) 或双极 (+1, -1)。该网络具有对称权重,没有自连接,即w ij = w jiw ii = 0

建筑学

以下是有关离散 Hopfield 网络需要牢记的一些要点 -

  • 该模型由具有一个反相输出和一个非反相输出的神经元组成。

  • 每个神经元的输出应该是其他神经元的输入,而不是自身的输入。

  • 权重/连接强度由w ij表示。

  • 连接可以是兴奋性的,也可以是抑制性的。如果神经元的输出与输入相同,则为兴奋性,否则为抑制性。

  • 权重应该是对称的,即w ij = w ji

霍普菲尔德

从Y 1Y 2Y iY n的输出分别具有权重w 12w 1iw 1n 。同样,其他弧也有权重。

训练算法

在离散 Hopfield 网络的训练过程中,权重将会更新。众所周知,我们可以拥有二进制输入向量以及双极输入向量。因此,在这两种情况下,权重更新可以通过以下关系来完成

情况 1 - 二进制输入模式

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

这里,s(p) = s 1 (p), s 2 (p),..., s i (p),..., s n (p)

权重矩阵由下式给出

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

情况 2 - 双极输入模式

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

这里,s(p) = s 1 (p), s 2 (p),..., s i (p),..., s n (p)

权重矩阵由下式给出

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

测试算法

步骤 1 - 初始化权重,这些权重是使用赫布原理从训练算法获得的。

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

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

步骤 4 - 使网络的初始激活等于外部输入向量X,如下 -

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

步骤 5 - 对于每个单元Y i,执行步骤 6-9。

步骤 6 - 计算网络的净输入如下 -

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

步骤 7 - 对净输入应用如下激活以计算输出 -

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

这里 $\theta_{i}$ 是阈值。

步骤 8 - 将此输出y i广播到所有其他单元。

步骤 9 - 测试网络连接。

能量函数评估

能量函数被定义为系统状态的键合函数和非增函数。

能量函数E f ⁡, ⁡也称为Lyapunov 函数,决定离散 Hopfield 网络的稳定性,其特征如下 -

$$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}$$

条件- 在稳定的网络中,每当节点状态发生变化时,上述能量函数就会减小。

假设当节点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)}$

能量的变化取决于这样一个事实:一次只有一个单元可以更新其激活。

连续霍普菲尔德网络

与离散Hopfield网络相比,连续网络将时间作为连续变量。它还用于汽车关联和优化问题,例如旅行商问题。

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

能量函数评估

$$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$$

这里λ是增益参数,g ri输入电导。