Hopfield 网络(上)

讲的什么

这部分主要对 Hopfield 网络作一大概的介绍。写了其模型结构、能量函数和网络的动作方式。主要参考了网上搜到的一些相关 PPT。


概述

早在 1982 年,Hopfield 发表的文章:【Neural networks and physical systems with emergent collective computational abilities】 中就提出了一种基于能量的模型(Energy Based Model,EBM)——可用作联想存储的互连网络,这算是现在人工神经网络的早期雏形,我们称该模型为 Hopfield 网络。
 

反馈网络

Hopfield 网络被认为是一种最典型的全反馈网络,可以看作一种非线性的动力学系统。反馈网络能够表现出非线性动力学系统的动态特性。它所具有的主要特性为以下两点:

  • 网络系统具有若干个稳定状态。当网络从某一初始状态开始运动,网络系统总可以收敛到某一个稳定的平衡状态
  • 系统稳定的平衡状态可以通过设计网络的权值而被存储到网络中

基于能量的模型

基于能量的模型是一种具有普适意义的模型,统计力学的结论表明,任何概率分布都可以转变成基于能量的模型。EBM 通过对变量的配置施加一个有范围限制的能量,即对每一个变量建立一个能量公式,来捕获这些变量之间的依赖关系。EBM 有两个主要的任务,

  • 推断(Inference),它主要是在给定观察变量的情况,找到使能量值最小的那些隐变量的配置
  • 学习(Learning),它主要是寻找一个恰当的能量函数,使得观察变量的能量比隐变量的能量低
     

Hopfield 网络功能

Hopfield 神经网络的提出就是与其实际应用密切相关。其主要功能在以下两个方面。

  • 离散 Hopfield 网络主要用于联想记忆。输入-输出模式的各元素之间,并不存在一对一的映射关系,输入-输出模式的维数也不要求相同:联想记忆时,只给出输入模式部分信息,就能联想出完整的输出模式。即具有容错性
  • 连续Hopfield 网络主要用于优化计算功能。优化计算在实际问题中有广泛的应用。如经典的 TSP 问题,工业生产和交通运输中的调度问题等。
     

模型结构

根据其激活函数的不同,Hopfield 神经网络有两种:离散 Hopfield 网络(Discrete Hopfield Neural Network,DHNN)和连续Hopfield 网络(Continues Hopfield Neural Network,CHNN)。
 

离散 Hopfield 网络

离散的 Hopfield 网络是二值神经网络,该模型的处理单元由神经元构成,每个神经元由两种状态:激活或者抑制状态,分别用 1 和 0 表示。神经元之间通过赋有权值的有向线段连接,通过求取全局状态的最小能量来训练模型。

以一个较简单的网络说明,如下图

图 1: 三神经元构成的 Hopfield 网络

它由三个神经元构成,图中的第 0 层仅仅是作为网络的输入,所以不把它当作实际的神经元,无计算功能,第 1 层是实际的神经元。设 (y_i) 表示第 (i) 个神经元的取值,(x_i) 表示第 (i) 个神经元的外部输入,可以理解为额外施加在神经元 (i) 上的固定偏置,功能相当于第 (i) 个神经元的阈值(threshold),(W_{i,j}) 表示第 (j) 个神经元到第 (i) 个神经元的连接权重。该简单模型的计算方式如下
egin{align}
egin{matrix}
y_i ightarrow 1\
y_i ightarrow 0
end{matrix} quad ext{if} quad sum_{j eq i}W_{ij}y_j+x_i quad
egin{matrix}
> 0 \
< 0
end{matrix}
end{align}
其激活函数可以看成符号函数,即 (g=mathrm{sgn}).

对于一个离散的 Hopfield 网络,其网络状态是输出神经元信息的集合。对于一个输出层是 (n) 个神经元的网络,则其 (t) 时刻的状态为一个 (n) 维向量:
egin{align}
Y(t)=[y_1(t),y_2(t),cdots,y_n(t)]^T
end{align}
因为每个神经元有两个取值 1 或 0,故而网络共有 (2^n) 个状态。对于图 1 的 Hopfield 网络,它的输出层就是三位二进制数;每一个三位二进制数就是一种网络状态,从而共有 8 个网络状态。这些网络状态如图 2 所示。在图中,立方体的每一个顶角表示一种网络状态。

图 2:三神经元 Hopfield 网络输出状态

如果 Hopfield 网络是一个稳定网络,那么在网络的输入端加入一个输入向量,则网络的状态会产生变化,也就是从超立方体的一个顶角转移向另一个顶角,并且最终稳定于一个特定的顶角。

再提一下网络的稳定性。给定一个 DHNN 的目前状态 (Y(t)), 如果对于任何 (Delta t), 当神经网络从 (t=0) 开始,有初始状态 (Y(0)). 经过有限时刻 (t), 有 (Y(t+Delta t)=Y(t)), 则称网络是稳定的。 Coben 和 Grossberg 在 1983 年给出了关于 Hopfield 网络稳定的充分条件,他们指出:无自反馈的权重系数对称 Hopfield 网络是稳定的,即如果 Hopfield 网络的权系数矩阵 (W)是一个对称矩阵,并且,对角线元素为 0((W_{i,i}=0)).则这个网络是稳定的。需要注意的是这只是一个充分条件。
 

连续 Hopfield 网络

连续 Hopfield 网络(CHNN)拓扑结构和 DHNN 结构相同,不同之处在于其激活函数 (g) 不是阶跃函数,而是 S 形的连续函数,一般取 sigmoid 函数,即
egin{align}
g(u)=frac{1}{1+e^{-u}}
end{align}

具体地暂时不讲了。


能量函数

关于能量函数怎么来的,我也解释不清楚,参考知乎:神经网络中的能量函数是如何定义的?

对 Hopfield 网络引入一个李亚普诺夫(Lyapunov) 函数,即所谓能量函数。Hopfield 在论文中给了一个特例的能量函数形式,即 (W_{i,j}=W_{j,i}), 节点阈值 (U_i=0), 则能量函数表达式为
egin{align}
E=-frac 12 {sumsum}_{i eq j} W_{i,j}y_i y_j
end{align}
该函数为可能有很多极小点的复杂图像。由于 (Delta y_i) 引起的能量的变化 (Delta E)
egin{align}
Delta E=- frac 12Delta y_i sum_{j eq i}W_{i,j}y_j
end{align}
由于节点的二值性,(Delta y_i=pm 1) 时,(Delta E) 才可能不为零,如果 (sum_{i eq j}W_{i,j}y_j>0), 则 (Delta y_i=1),如果 (sum_{i eq j}W_{i,j}y_j<0), 则 (Delta y_i=-1), 可见始终成立 (Delta E leqslant 0), 即网络的能量函数是减函数。

这时假设了对称性,实际上式 (4) 的能量变化就不再是式 (5) 的形式了,它可以被拆分为两项
egin{align}
Delta E=- frac 12 Delta y_i sum_{j eq i}W_{i,j}y_j-frac12 Delta y_i sum_{j eq i}W_{j,i}y_j
end{align}
注意此时 (W) 的下标不同。其中第一项仍是和对称时相同,即恒为负的,如果 (W_{i.j}=W_{j,i}),另一项等同于第一项,否则的话,就是“随机的”,取决于 (W) 初始化的方式。


Hopfield 网络运作方式

反馈网络有两种基本的工作方式:串行异步和并行同步方式。

  • 串行异步方式:在某一时刻只有一个神经元调整其状态,其余输出不变。由随机或预定顺序来选择该神经元
    egin{align}
    y_i(t+1)=egin{cases}
    g(net_i(t)) ,quad i=j \
    y_i(t),quad i eq j
    end{cases}
    end{align}
    其中 (g) 表示激活函数,(net_i) 表示第 (i) 个神经元的输入。每次神经元调整其状态时,根据其当前的输入值的大小决定下一时刻的状态,因此其状态可能发生改变,也可能保持原状。下次调整其他神经元状态时,本次的调整结果即在下一个神经元的输入中发挥作用
  • 并行同步方式:部分或者所有神经元同时调整其状态。即
    egin{align}
    y_i(t+1)= g(net_i(t))
    end{align}
    和异步工作方式相同,每次神经元在调整状态时,根据其当前的输入值的大小决定下一时刻的状态。下次调整其它神经元状态时,本次的调整结果即在下一个神经元的输入中发挥作用。网络稳定时,每个神经元的状态都不再改变,此时的稳定状态就是网络的输出。

不管采取什么工作方式,基本运行步骤是类似的,以串行工作方式为例:

  • 第一步:对网络进行初始化
  • 第二步:从网络中随机选取一个神经元
  • 第三步:求出该神经元 (i) 的输出
  • 第四步:求出该神经元经激活函数处理后的输出,此时网络中的其他神经元的输出保持不变
  • 第五步:判断网络是否达到稳定状态,若达到稳定状态或满足给定条件则结束;否则转到第二步继续运行

然后呢

下一部分讲学习规则,然后举个计算的例子。

原文地址:https://www.cnblogs.com/zhoukui/p/7737048.html