📜  人工神经网络-Hopfield网络

📅  最后修改于: 2020-11-26 08:37:35             🧑  作者: Mango


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] \:\: \:\:\:for \: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)] \:\:\:\:\:for \ :i \:\ neq \:j $$

测试算法

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

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

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

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

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

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

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

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

步骤7-在网络输入上应用以下激活,以计算输出-

$$ y_ {i} \:= \开始{cases} 1&if \:y_ {ini} \:> \:\ theta_ {i} \\ y_ {i}&if \:y_ {ini} \:= \:\ theta_ {i} \\ 0和if \:y_ {ini} \:

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

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

步骤9-测试网络的结合。

能量功能评估

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

能量函数E˚F⁡,⁡also称为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网络相比,连续网络具有时间作为连续变量。它还用于自动关联和优化问题,例如旅行商问题。

模型-可以通过添加诸如放大器之类的电气组件来构建模型或体系结构,这些组件可以通过S型激活函数将输入电压映射到输出电压。

能量功能评估

$$ 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是输入电导。