人工神经网络 - Hopfield 网络

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

离散 Hopfield 网络

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

架构

以下是有关离散 Hopfield 网络 − 的一些重要注意事项

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

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

  • 权重/连接强度用 wij 表示。

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

  • 权重应该是对称的,即 wij = wji

Hopfield

Y1Y2YiYn 的输出分别具有 w12w1iw1n 的权重。类似地,其他弧上也有权重。

训练算法

在离散 Hopfield 网络训练期间,权重将被更新。我们知道,我们可以有二进制输入向量以及双极输入向量。因此,在这两种情况下,权重更新都可以通过以下关系进行

情况 1 −二进制输入模式

对于一组二进制模式 s(p), p = 1 到 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]\:\:\:\:for\:i\: eq\:j$$

情况 2 −双极输入模式

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

这里,s(p) = s1(p), s2(p),..., si(p),..., sn(p)

权重矩阵由以下公式给出

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

测试算法

步骤 1 −使用赫布原理初始化从训练算法中获得的权重。

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

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

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

$$y_{i}\:=\:x_{i}\:\:\:for\:i\:=\:1\:to\:n$$

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

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

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

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

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

这里 $ heta_{i}$ 是阈值。

步骤 8 − 将此输出 yi 广播到所有其他单元。

步骤 9 −测试网络是否连接。

能量函数评估

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

能量函数Ef⁡,⁡也称为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 heta_{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}\:-\: heta_{i}\end{array} ight)(y_i^{(k+1)}\:-\:y_i^{(k)})$$

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

这里 $\Delta y_{i}\:=\:y_i^{(k\:+\:1)}\:-\:y_i^{(k)}$

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

连续 Hopfield 网络

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

模型 −可以通过添加电子元件(例如放大器)来构建模型或架构,这些电子元件可以通过 S 型激活函数将输入电压映射到输出电压。

能量函数评估

$$E_f = \frac{1}{2}\displaystyle\sum\limits_{i=1}^n\sum_{\substack{j = 1\ j e 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 e i}}^n w_{ij} g_{ri} \int_{0}^{y_i} a^{-1}(y) dy$$

这里λ 为增益参数,gri 为输入电导。