这里我们分析离散型的HopField网络。HopFiled网络由循环相连的二值神经元组成,如下图:
一般来说,这种循环神经网络是比较难以分析的,它们的行为一般会分为三类:
但是John Hopfield发现,对于网络的每一个组态都有一个对应的能量值,每个神经元遵循一定的状态更新规则,可以使网络的能量降到最低。
例如,我们可以这样来定义网络的能量:
在这个能量定义下,我们可以计算每个神经元在在两个不同状态下网络整体能量的差异:
为了使网络的能量降到最低,我们设计这样一个更新规则:
实际上,HopField网络在我们设计的状态更新规则下,总是会朝着能量降低的方向变化,最终收敛到一个稳定的组态(configuration),不再变化,这个组态也是能量的最低点。这个组态称为HopField网络的吸引子。事实上,一个HopField网络可能有多个吸引子,取决于网络中连接的权重和神经元的偏移值;最终收敛到哪一个吸引子,则取决于网络初始的组态。
那么,HopField的这个特征有什么应用呢?
1982年,HopField提出可以利用网络能量最低点的网络组态来存储数据。这个说法有点抽象,具体来说也就是,我们可以通过一定非方式调整网络的结构和网络中权重的取值,使网络的吸引子恰好是我们想要存储的数据。
举个例子,比如我们想要存储数字1和2的图片:
我们可以设计这样一个hopfield网络,图片的每个像素对应网络中一个神经元,然后我们通过一定非方式方式(其实就是后面将要介绍的HopField网络的学习算法),调整网络中权重值,使得网络有两个吸引子,分别对应这两张图片。也就是说,我们的网络就”学习并记住了”这两张图片。
那么,上面训练完的HopField网络又有什么用处呢?
实际上我们可以用这个HopField网络来做图像识别。在实际的图像识别任务中,我们采集到的待识别的数据可能是不完整的,模糊不清晰的,例如:
将这些损坏的数据作为上面训练完的HopField网络的初始组态,然后按照HopField网络的状态更新规则,最终我们的网络会收敛到与初始状态最接近的吸引子状态,这个吸引子状态就是真实的数据。
HopField网络的训练过程实际上就是使一些组态称为网络能量的最低点,也就是在核定状态s的情况下,最小化能量函数:
根据Hebian学习规则,如果神经元的状态值取1或-1,则参数的更新规则:
如果神经元的状态值取0或1,则参数的更新规则:
另外,在网络规模较小的情况下,也可以直接使用联立不等式的方式求解,因为网络中神经元的状态取决于 Energy gap E n e r g y g a p ,所以比如需要一个特定的神经元取状态值1,则得到不等式 Energy gap>0 E n e r g y g a p > 0 , 取值为0,则得到不等式 Energy gap<0 E n e r g y g a p < 0 ,这样就可以通过求解这些不等式来求得网络的参数。
HopField网络除了可以用于存储数据以外,还可以用与”解释”数据:
但是,这个”解释模型”存在两个问题:
进一步的分析将引入的下一章的主题:玻尔兹曼机。