Hopfield 神经网络中能量函数的含义及其变化值 ΔE≤0 的证明
Hopfield 神经网络中能量函数的含义及其变化值 \(\Delta E \leq 0\) 的证明
Ciallo~(∠・ω< )⌒★ 我是赤川鹤鸣,本期是学习 Hopfield 神经网络时, 遇到能量函数的相关知识时的思考和总结, 希望有能帮助到你.
Hopfield 神经网络中,能量函数的定义如下
观察能量函数 \(E\),可以发现其由两部分构成,我称其为激活能量和阈值能量, 接下来我们一点点抽丝剥茧.
注意:激活能量和阈值能量这是我为了方便自创的词,并未查询原论文的叫法.
能量函数其实就是所有节点的值(0到1)与其阈值之积,减去不重复的每对节点的值(两个节点)与其连接权重的积的和.
这句话我总结得有点复杂,我们一步一步拆解来看.
首先,\(w_{ij} x_i x_j\) 这一项在结果上,等于任意选取两个节点 \(i\) 和 \(j\),这两个节点的值(0到1)相乘之后,再与这两个节点之间连接权重 \(w_{ij}\) 相乘.
而把所有节点对这样的值 \(w_{ij} x_i x_j\) 都累加起来,我们得到的就是激活能量
Q:式 \((2)\) 前面的 \(\frac{1}{2}\) 是怎么来的?
A:观察 \(w\) 的下标 \(i\) 和 \(j\),你就会发现激活能量会被重复地计算两遍(例如当 \(n=10\),那么 \(i=1, \ j=9\) 和 \(i=9, \ j = 1\) 的两种情况其实计算的是同一对节点),所以除以 \(2\) 就很合理了.
Q:式 \((2)\) 里没有排除 \(i=j\) 的情况,如何解释?
A:实际上,当 \(i=j\) 时,只需要令 \(w_{ij} = 0\) 即可.
类似地,\(b_i x_i\) 在结果上,等于任意一个节点 \(i\) 与其阈值 \(b_i\) 的乘积.
而把所有节点这样的值 \(b_i x_i\) 都累加起来,就是阈值能量
下面是我自己画的一个关系矩阵图,描述了每个节点之间的关系,块的颜色深浅表示权重大小,由于下标 \(i\) 和 \(j\) 是可以互换的,因此关系矩阵图沿主对角线对称.
现在,我们假设有一个节点 \(k\),为了求得节点 \(k\) 所具有的能量,即节点 \(k\) 的激活能量和节点 \(k\) 的阈值能量之和,我们做如下分析:
如果选定 \(i = k\),那么 \(k\) 节点要与每个节点相乘,再乘上它们之间的连接权重,那么节点 \(k\) 的激活能量为(如上图所示)
看图可知对称性,不难得出,如果选定 \(j = k\),那么结果是一样的,即
而节点 k 的阈值能量为
因此,我们求得节点 \(k\) 的能量为
每次迭代,节点 \(k\) 的能量变化 \(\Delta E_{k}\),可以直接将式 \((3)\) 中的变量 \(x_k\) 替换为 \(\Delta x_k\),得
之后我们根据 Hopfield 神经网络的特点就可以得出以下推理
也就是说,当节点 \(k\) 的变化值大于 \(0\) 时,这就是说这个节点达到了激活阈值,即 $ \sum_{j=1}^n w_{kj} x_j > b_k $ 成立,因此根据式 \((4)\) 有 \(\Delta E_k < 0\).
同理,也有
根据这三个情况,我们可以得出结论,无论当 \(\Delta x_k\) 取何值时,恒有
成立.
即,**随着时间的推移(不断地输入模式),能量函数 \(E\) 的值会不断减小,或者至少保持不变. ** 这其实是为了保证整个 Hopfield 网络的稳定性.