离散霍普菲尔德网络(Discrete Hopfield Neural Networks, DHNN)

离散霍普菲尔德网络(Discrete Hopfield Neural Networks, DHNN)

本文为记录韩力群老师公开课笔记。

1、引言

根据神经网络运行中的信息流向,可分为前馈型和反馈型神经网络。前馈神经网络输出仅和当前输入向量和权重矩阵有关,与网络之前的输入状态无关,如目前最常用的BP神经网络。美国加州理工大学物理学家J. J. Hopfield教授于1982年提出一种单层反馈型神经网络,后人将其称为Hopfield网络。Hopfield网络分为连续Hopfield网络(Continues Hopfield Neutral Network,CHNN)和离散Hopfield网络(Discrete Hopfield Neutral Network,DHNN)两种,这里主要讨论DHNN。


2、 DHNN结构和工作方式

图1展示了有 n 个神经元的DHNN网络拓扑结构,其中每个神经元功能都相同且两两之间相互连接,取值为二元离散值,一般取 0/1-1/1 ,DHNN可以理解为单层或者没有层概念的神经网络。每个神经元第 k+1 时刻的输入与第 k 时刻的输出有关。所有神经元第 k 时刻的输出都反馈回去,再通过加权求和、减去阈值的方式,再加上激活函数,是个符号函数 sgn()

2.1 DHNN状态

具体来说, x_i 被认为是DHNN神经元的状态,DHNN中所有神经元状态的集合被称为DHNN的状态,用列向量 X 表示:

X=[x_1,x_2,...,x_i,...x_n]^T

那么,在 k 时刻,网络状态被描述为(注:初始值为 k=0 ):

X^{(k)}=[x_1^{(k)},x_2^{(k)},...,x_i^{(k)},...x_n^{(k)}]^T

DHNN在外界输入的激发下,开始进行演化,演化过程。

x_i^{(k+1)} 表示第 i 个神经元的第 k+1 时刻的输出,其表达式可列为:

x_i^{(k+1)} =sgn \left( \sum_{j=1}^n w_{ij}x_{j}^{(k)}-T_i \right)

其中, T_i 类似于BP神经网络中的偏置量, x_{j}^{(k)} 表示第 j 个神经元的第 k 次迭代的输出值,一共有 n 个神经元。权重值有如下规定:

w_{ij}=\left \{\begin{matrix} w_{ij}=w_{ji}  \\ w_{ii}=0  \end{matrix} \right.

换言之, i \neq j 。因此,得到的权重矩阵应该是一个对角线为0的对称阵。

符号函数 sgn() 的定义为

sgn(x)=\left\{\begin{matrix}1 & x \geq 0 \\0 &x < 0 \end{matrix} \right.sgn(x)=\left\{\begin{matrix}1 & x \geq 0 \\-1 &x < 0 \end{matrix} \right.

当DHNN中所有神经元状态不再随着迭代而发生改变,那么则称该DHNN达到稳态,此时的网络状态即为DHNN的输出结果,即:

X^{ (k+1)}-X^{ (k) }⁡=0

注意,上式右边的0为一个长度为 n 的列向量。

图1:DHNN拓扑结构图

2.2 DHNN的工作方式

DHNN的工作方式分为异步和同步两种方式。所谓异步(又叫串行)工作方式是指网络在一个时刻只更新一个神经元状态,其他神经元均不发生改变的状态;同步(又叫并行)工作方式是指网络在一个时刻更新网络中所有神经元状态。

异步工作方式可表达为:

x_{i}^{(k+1)}=\left\{\begin{matrix} sgn \left( \sum_{j=1}^nw_{ij}  x_j^{(k)}-T_i \right) & i=c \\ x_{i}^{(k)} & i \neq c \end{matrix} \right.

其中 c 是指需要调整的神经元索引。

同步工作方式可表达为:

x_i^{(k+1)}=\begin{matrix} sgn \left( \sum_{j=1}^nw_{ij}  x_j^{(k)}-T_i \right) & i=1,2,...n \end{matrix}


3、DHNN的稳定性

DHNN本质是一个离散的非线性动力学系统。网络从 X^{(0)} 开始演化,若能经过有限次递归后,其状态不再发生变化,即 X^{ (k+1) }-X^{ (k) }⁡=0 ,则称该DHNN是稳定的。如果网络不稳定,由于DHNN的神经元只有两种取值,网络不可能出现无限发散的情况,而是会出现有限幅度的震荡如果网络是稳定的,那么它可以从任意一个初始状态 X^{(0)} 收敛到稳态,因此该稳态 X 又被称为吸引子,定义如下:

若网络状态X满足

X=sgn(WX-T)

则称 X 为该DHNN的吸引子。

如果把问题的解编码为网络的吸引子,从初态向吸引子演化的问题的过程便叫DHNN求解的过程。这种性质被称为DHNN的“联想记忆”,输入向量与吸引子部分相似的初态向量,DHNN可以演化到吸引子,即DHNN可以将输入的部分信息联想回忆出全部信息。

3.1 稳定性证明

DHNN稳定性在1983年,科恩(Cohen)、葛劳斯伯格(S. Grossberg)证明:

要求异步网络要求权重矩阵 W 为对称阵;同步网络要求权重矩阵为 W 非负定对称阵,则对于任意初态,DHNN都可以收敛到一个吸引子。

(1) 对异步网络的稳定性证明:

首先定义网络能量函数:

E^{ (k) }= -\frac{1}{2}(X^{ (k) })^T WX^{ (k) }+(X^{ (k) })^T T

注意,上标 T 表示矩阵的转置,DHNN的能量函数类似于BP神经网络的loss function。我们调整DHNN网络,使得能量 E 尽可能减少。

令网络能量的改变量 \Delta E 为:

\Delta E= E^{ (k+1) } - E^{ (k) }

\Delta E =\left[ -\frac{1}{2}(X^{(k)}+\Delta X^{(k)} ) ^TW(X^{(k)}+\Delta X^{(k)} ) + (X^{(k)}+\Delta X^{(k)} )^T T \right] - \left[  -\frac{1}{2} (X^{(k)} ) ^TWX^{(k)} + (X^{(k)} )^T T \right]

化简得:

\Delta E=-(X^{(k)} ) ^T(WX^{(k)}-T) - \frac{1}{2} (\Delta X^{(k)} ) ^T W \Delta X^{(k)}

由于DHNN按照异步方式更新,因此 \Delta X^{(k)} 只有一项不为0,令 \Delta X^{(k)} 为:

\Delta X^{(k)}=[0,...,0,\Delta x_i^{(k)},0,...,0]

其中 \Delta x_i^{(k)} 为该时刻异步更新的神经元状态。将 \Delta X^{(k)} 带入计算 \Delta E 的表达式,并考虑 W 为一个对称阵,这样就将矩阵和向量的运算,转变为数值的运算。

\Delta E=-\Delta x_i^{(k)} \left[  \left(\sum_{j=1} ^n w_{ij} x_j^{k} \right)-T_i \right]  -\frac{1}{2}  (\Delta x_i ^{(k)})^2 w_{ii}

根据前面对权重矩阵的定义可知第二项为0,因此我们主要关注第一项。

\Delta x_i^{(k)} 的取值是根据  x_i^{(k+1)}x_i^{(k)} 得到的,由于其取值为 -1/1 ,故有如下四种情况。

情况1:若 x_i^{(k+1)}=1x_i^{(k)}=-1 ,那么由于 x_i^{(k+1)}=sgn\left[ \left( \sum_{j=1}^n w_{ij} x_j^{(k)} \right) -T_i \right] ,故 \left( \sum_{j=1}^n w_{ij} x_j^{(k)} \right) -T_i  \geq 0 ; \Delta x_i^{(k)}= x_i^{(k+1)}- x_i^{(k)} >0 ,所以 \Delta E \leq 0

情况2:若 x_i^{(k+1)}=-1x_i^{(k)}=1 ,那么 \left( \sum_{j=1}^n w_{ij} x_j^{(k)} \right) -T_i  < 0 , \Delta x_i^{(k)}= x_i^{(k+1)}- x_i^{(k)} < 0 ,所以 \Delta E < 0

情况3:若 x_i^{(k+1)}=1x_i^{(k)}=1 ,那么 \left( \sum_{j=1}^n w_{ij} x_j^{(k)} \right) -T_i  \geq 0 , \Delta x_i^{(k)}= x_i^{(k+1)}- x_i^{(k)} = 0 ,所以 \Delta E = 0

情况4:若 x_i^{(k+1)}=-1x_i^{(k)}=-1 ,那么 \left( \sum_{j=1}^n w_{ij} x_j^{(k)} \right) -T_i  < 0 , \Delta x_i^{(k)}= x_i^{(k+1)}- x_i^{(k)} = 0 ,所以 \Delta E = 0

结论:无论神经元在k时刻和k+1时刻处于何种状态,均有 \Delta E \leq 0

由于各神经元状态只能为 1/-1 ,故能量函数存在下界,因此网络能量函数最终将收敛于一个常数,即DHNN最终将收敛到吸引子的状态。

(2)对同步网络的稳定性证明:

令网络能量的改变量 \Delta E 为:

\Delta E= E^{ (k+1) } - E^{ (k) }= -(\Delta X^{(k)})^T (WX^{(k)}-T)  -\frac{1}{2} (∆X^{(k)})^T W \Delta X^{(k)}

在异步工作的DHNN稳定性中,我们已经证明 -\Delta x_i^{(k)} \left[  \left(\sum_{j=1} ^n w_{ij} x_j^{k} \right)-T_i \right] \leq 0 ,故上式第一项一定小于等于0 。

这里对非负定矩阵进行简单介绍:

非负定对称阵(或叫半正定矩阵)定义:设 An 阶方阵,如果对任何非零向量 X ,都有 X^TAX≥0 ,则称A为半正定矩阵。

由于 W 是非负定矩阵,存在  (∆X^{(k)})^T W \Delta X^{(k)} \geq0 ,所以仍然有 \Delta E \leq 0


4、DHNN的吸引子设计

以上分析表明,DHNN网络在演化过程中,能量函数不断减少,网络状态趋近于吸引子的过程,即一个吸引子对应了能量函数的一个极小值。在一个DHNN网络中往往存在多个吸引子,不同初态会落入不同的吸引子中。

4.1 吸引子的性质

性质1:若 X 是DHNN的一个吸引子,且阈值 T=0 ,激活函数定义如下:

x_i^{(k+1)}=sgn(WX)= \left\{ \begin{matrix} 1 & WX>0 \\ x_i^{(k)} & WX=0 \\ -1 & WX<0 \end{matrix}\right.

-X 一定也是该网络的吸引子。

证明:

\because X 吸引子,即 X=sgn(WX) ,从而有:

-X=sgn[W(-X)]=sgn(-WX)=-sgn(WX)

\therefore -X 也一定是吸引子。


性质2:若状态A是DHNN的一个吸引子,若B与A的海明距离(Hamming Distance)为1,那么B一定不是该DHNN的吸引子。

证明:

不妨设 A_i \neq B_i 且其余值都相等,即 A_j=B_j   \quad \{j|j=1,2,…n \quad\& \quad j \neq i\}

\because w_{ii}=0 ,由吸引子定义有:

\begin{matrix} A_i = sgn \left( \sum_{j=1 \& j \neq i}^nw_{ij}  a_j-T_i \right)  = sgn \left( \sum_{j=1 \& j \neq i }^n w_{ij}  b_j-T_i \right)=B_i  \end{matrix}

和已知假设矛盾

\therefore 和A海明距离为1的B一定不是该DHNN的吸引子。

4.2 吸引域

定义:能够使DHNN稳定到某一吸引子的所有初态的集合被称为该吸引子的吸引域。

对于异步DHNN来说,调整神经元更新顺序可能导致有些初态演化到不同的吸引子状态,而有些初态无论如何调整神经元更新顺序,都会演化到相同的吸引子状态,那么我们称前者为初态处于该吸引子的弱吸引域上,称后者为初态处于该吸引子的强吸引域上。


5、DHNN的权重设计

DHNN与BP神经网络不同,权重矩阵不是通过训练得到的,而是通过某种计算方式得到的,一旦得到权重矩阵,那么相对应的吸引子也就确定了。下面重点介绍权重矩阵的设计方式。

为了使所设计的权重矩阵满足要求,权重矩阵应该符合以下要求:

(1) 保证异步DHNN能够收敛,即 W 必须为对称阵;保证同步DHNN能够收敛,即 W 必须为非负定对称阵

(2) 保证给定的标准样本是网络的吸引子,并且有一定的吸引域

5.1 连立方程法求解权重矩阵和阈值

假设要求设计以 A=[0,1,0]^TB=[1,1,1]^T 为吸引子,试求权值和阈值的取值范围。

对于状态A有:

\left\{ \begin{matrix}  w_{12}×1+w_{13}×0-T_1<0 \\ w_{21}×0+w_{23}×0-T_2≥0 \\ w_{31}×0+w_{32}×1-T_3<0 \end{matrix} \right.

即,只要权重矩阵满足上面三个不等式,当DHNN到达状态A时,继续迭代,网络状态不会发生改变。类似的,对于状态B有:

\left\{ \begin{matrix}  w_{12}×1+w_{13}×1-T_1 \geq0 \\ w_{21}×1+w_{23}×1-T_2 \geq 0 \\ w_{31}×1+w_{32}×1-T_3 \geq 0 \end{matrix} \right.

联立上面六个不等式,就可以得到3个权重值和3个阈值的取值范围。更多的吸引子和神经元个数将会导致更多的不等式求解,为了方便计算机求解,我们可以尝试使用拉格朗日乘子法,将限制转移到能量函数上,即

使得能量函数最小(能量函数最小时达到稳态)。

\min_{W,T} = -\frac{1}{2} X^TWX+X^TT

经过计算,得到的权重矩阵和阈值就使得该DHNN能够从任意初态收敛到这两个吸引子上面。

5.2 外积和法求解权重矩阵和阈值

设给定了 P 个标准样本 X(p)(p=1,2,…,P且x∈\{-1,1\}^n,n>P) ,欲使其都成为DHNN的吸引子。若给定的P个标准样本满足两两正交,则权重矩阵为记忆样本的外积和。

W=\sum_{p=1}^P(X(p) X^T (p)-I)

其中 I 为对应维度的单位阵,目的是保证 w_{ii}=0 ,令阈值为0。

两两正交的定义为:

\begin{matrix} X(p)^T X (q)=0 & p \neq q \\ X(p)^T X (q)=n & p = q \\ \end{matrix}

接着检验标准样本是否成为了吸引子。若满足 X(p)=sgn(WX(p)) ,则该标准样本为DHNN的吸引子。

接着证明 P 个标准样本的外积和得到的权重值 W 一定使其称为该DHNN的吸引子。

证明:

WX(q)=\left[ \sum_{p=1}^P(X(p) X^T (p)-I)  \right]X(q)

WX(q)=\left( \sum_{p=1}^PX(p) X^T (p)X(q)  \right)-PX(q)

p \neq q 时,由于标准样本两两正交,故 X^T (p)X(q)=0 ,因此求和号中只剩一项即:

WX(q)=nX(q)-PX(q)=(n-P)X(q)

由于 n>p ,因此加上符号函数后 X(q) 不变,即:

X(q)=sgn[(n-P)X(q)]

证毕!


6、DHNN网络的信息存储容量

若DHNN网络的规模为 n ,且权重矩阵主对角线的元素值为0,则该网络的存储信息上界为 n ,即最多存储 n 个吸引子。具体来说,当吸引子两两之间相互正交,按照外积和来设计权重矩阵,则 n 个神经元的DHNN最多可以存在 n 个吸引子。但在实际问题中,往往做不到不同标准样本之间两两正交,这样一来DHNN存储吸引子的数量将会大打折扣。经验公式指出非两两正交向量在DHNN中存储数量最多为 0.15n ,若非两两正交向量的 P 个标准样本使用外积和的放水构建权值矩阵 W ,则DHNN将会出现权值移动和交叉干扰。

但是若是一个有解的线性规划问题,我认为使用联立不等式法,仍然可以得到满足条件的权重矩阵和阈值向量。因为外积和法强制将阈值设为了0,而联立不等式法会有更高维的求解空间。

因此,当网络规模为n时,要求记忆模式数量越多,联想出错的可能性越大,反之要求错误率越低,则记忆模式数量越少。错误结果可能对应的是能量函数的某个局部最小值,或称为伪吸引子。

提高网络存储容量有两种方式:

(1) 改进网络拓扑结构

(2) 改进权值设计方法


7、一个简单的例子

例如我们这里有两个样本:正例的标准向量为 x(1)=[1,0,1,0]^T ;反例的标准向量为 x(2)=[0,1,0,1]^T 。正反例均量化为维度为4的向量,首先确定DHNN的神经元个数为4。接着将标准样本作为稳定点计算权重矩阵。

图3:两两神经元之间的连接权重示意图

神经元连接权重公式:

w_{ij}=\left\{\begin{matrix}  \sum_{l=1}^2 (2x_i(l)-1)(2x_j(l)-1) & i \neq j \\ 0 & i=j \end{matrix} \right.

其中, l 表示标准样本的个数, i,j 表示样本向量中的分量,偏置量 T_i=0 ,这里取值是 \{1,2,3,4\}

通过这种方式,我们就计算出了权重矩阵 W

W=\left[ \begin{matrix} 0 & -2 & 2 &-2 \\ -2 & 0 & -2& 2 \\ 2 & -2 & 0 & -2\\ -2 & 2 & -2 & 0\\ \end{matrix}\right]

假设现有待判别的案例 x=[1,1,1,1]^T ,DHNN采用异步更新方式,即每次只更新一个神经元,更新顺序为 3\rightarrow1\rightarrow2\rightarrow4

先调整第3个神经元

x_3^{(1)}=sgn \left( \sum_{j=1}^4 w_{3j}x_j^{(0)} \right) =sgn(2×1+(-2)×1+0×1+(-2)×1)=0

其余神经元先不变

x_1^{(1)}=x_1^{(0)}

x_2^{(1)}=x_2^{(0)}

x_4^{(1)}=x_4^{(0)}

接着调整第1个神经元

x_1^{(2)}=sgn \left( \sum_{j=1}^4 w_{1j}x_j^{(1)} \right) =sgn(0×1+(-2)×1+2×0+(-2)×1)=0

其余神经元不变

接着调整第2个神经元

x_2^{(3)}=sgn \left( \sum_{j=1}^4 w_{2j}x_j^{(2)} \right) =sgn((-2)×0+0×1+(-2)×0+2×1)=1

其余神经元不变

接着调整第4个神经元

x_4^{(4)}=sgn \left( \sum_{j=1}^4 w_{4j}x_j^{(3)} \right) =sgn((-2)×0+2×1+(-2)×0+0×1)=1

经过4次迭代后,我们得到的新的向量 x^{(4)}=[0,1,0,1]^T ,继续往下迭代,该向量不发生变化,因此我们说DHNN达到了稳态,此时可以看出待判别向量被判定为了反例。


8、讨论

DHNN网络可以用于模式识别和降噪的任务中。

存在的疑问:

(1)从例子来看,DHNN在完成模式识别和降噪任务时过程是否和海明距离的纠错码类似,DHNN的演化结果是否也是将初态向量演化到与其海明距离最近的吸引子上?

(2)由于权重值和阈值为取值范围,在DHNN的权重值和阈值去具体的值时,各吸引子的吸引域会有何变化?

编辑于 06-02