Hopfield Network 霍普菲尔德网络入门

简介【Hopfield Network 霍普菲尔德网络入门】Hopfield Network (霍普菲尔德网络) , 是 Hopfield 在1982年提出的一种基于能量的模型 , 发表的文章是 Neural networks and physical systems with emergent collective computational abilities 。 基本结构如下图所示:
Hopfield Network 霍普菲尔德网络入门文章插图
首先我们来看Hopfield Network的一句话定义:
Hopfield Network is a model that can reconstruct data after being fed with corrupt versions of the same data.
也就是说利用Hopfield Network的过程是:
some data → Hopfield Network → full datasome data → Hopfield Network → full data
可以看到Hopfield Network的几个 基本特点 :

  • 只有单层
  • 神经元节点之间是全连接的
  • 只有输入 , 没有输出
主要功能是:
  • 联想记忆 associatIve memory , 例如重新构建图形 。 假设我们在网络中存储了右侧的三张图片 , 如果我们只输入一部分图片 , 例如左侧的六张图片 , 网络可以从记忆中取出完整的图像 。
Energy Function能量函数:Energy Function , 可以看作一种代价函数 。 这个概念最先在热力学中被提出 , 用来描述系统的能量值 。 当能量函数求得的能量值达到最小值的时候 , 整个热力学系统达到稳定状态 。
在深度学习之中 , 引入这个概念也是为了使模型达到稳定的状态 。
Energy Based Models利用了能量函数的模型被称为 Energy Based Models , EBM。
Hopfield Network 霍普菲尔德网络入门文章插图
Energy Function for Images对于有 d 个像素的黑白图像 , 假设每一个图像都有参数 x={xj}1≤j≤dx={xj}1≤j≤d, 那么
Hopfield Network 霍普菲尔德网络入门文章插图
我们可以建立如下形式的能量函数:
Hopfield Network 霍普菲尔德网络入门文章插图
  • 如果我们有 p 个图像 , 我们就能得到基于 E(x)E(x) 的p个极小值 。
  • 当两个像素 xixi 和 xjxj 有相同的颜色的时候 ,wijwij 为正值 。 当两个像素 xixi 和 xjxj 有相反的颜色的时候 ,wijwij 为负值 。
  • 通常情况下 , 对于所有的像素 xixi,wii=0wii=0。 对于所有的像素 xixi 和 xjxj,wij=wjiwij=wji。
Hopfield Network整个网络的使用过程可以总结为 , 我们首先利用一个完整的pattern来训练网络得到所有的权值 , 这样这个网络本身就是我们的output 。 以后当我们只有pattern的一部分数据的时候 , 我们可以把这一部分数据输入到网络中 , 通过达到最小的 E(x)E(x) 来复原完整的pattern 。
假设我们根据上述的Energy Function for Images中的内容来定义一个Hopfield Network 。 这很像一个有权重、有偏差的普通的神经网络 。 但是它又和普通的前馈神经网络有所不同容:
  • 对于离散型Hopfield Network中的神经元 xixi, 只能取到离散值 1/?11/?1。
  • 根据相邻神经元的当前值 , 神经元同步或者异步的迭代更新 。 同步:一次更新所有的神经元的值异步:一次更新一个神经元的值
根据上述的所有定义 , 我们可以发现 , 其实关于神经元的定义 , 权重的定义最终形成的就是一个类似我们最开始看到的神经网络的样子:
Hopfield Network 霍普菲尔德网络入门文章插图
训练模型Hopfield Network训练的核心目标就是求出所有的权重 wijwij。
首先假设我们要存储p个pattern到一个有d个神经元的网络中 , 假设 bi=0bi=0,
Hopfield Network 霍普菲尔德网络入门文章插图
换句话说 ,
Hopfield Network 霍普菲尔德网络入门文章插图
  • c是 x(k)i=x(k)jxi(k)=xj(k) 在所有训练数据中的比例 。
  • 存储的pattern p的数目和Hopfield Network中的神经元数目成正比 。
  • p/d<0.138p/d<0.138, 我们可以认为所有的pattern存储和恢复成功 。
  • 如果我们试图存储比这些更多的模式 , 额外的“虚假”稳定状态可能会出现 。
这个过程就是著名的Hebbian Learning , 类似于大脑中的过程 , 当两个神经元同时或者快速放电的时候 , 它们之间的连接强度会增加 。
一旦所有的pattern都存储完毕 , 对于任意的图像 x=x(l)x=x(l), 有如下的公式:
Hopfield Network 霍普菲尔德网络入门文章插图