模拟退火算法和波尔滋曼机

Hopfield虽然因为吸引子的存在具有联想功能,但是它的问题在于很难避免伪吸引子的出现。因为Hopfield网络对特定输入只能严格按照能量函数递减的方式演化,容易陷入局部极小值(伪吸引子),无法收敛于全局最优点。
如果反馈神经网络的迭代过程不那么“死板”,可以在一定程度上暂时接受能量函数变大的结果,就有可能跳出局部极小值。
随机神经网络的核心思想,就是在网络中加入概率因素,网络并不是确定地向能量函数减小的方向演化,而是以一个较大的概率向这个方向演化,以保证迭代的正确方向,同时向能量函数增大的方向运行的概率也存在,以防止陷入局部最优

模拟退火算法

问题背景

模拟退火算法是非凸问题寻优的一种重要工具。
在我们令导数为0求解极值的问题中,通常会因为函数非常复杂无法直接得到解,而梯度下降系列的算法,以及启发式算法(如遗传算法,蚁群算法,粒子群算法等)是解决这类问题的方法。

较简单的启发式搜索算法有贪心算法和爬山法。在爬山法中,系统从某个初值 \({x}_{0}\) 开始搜索,在每一个值附近随机产生一系列新的值 \({ x }_{ 01 },{ x }_{ 02 },…,{ x }_{ 0N }\) ,然后代入函数进行计算,得出这些值中最优的一个 \({ x }_{ 0i } \) ,如果 \( f({ x }_{ 0i }) < f({ x }_{ 0 }) \) ,则说明 \({ x }_{ 0i }\) 优于 \({ x }_{ 0 }\) ,就用 \({ x }_{ 0i } \) 作为当前最优值,否则维持 \({ x }_{ 0 }\) 不变。

梯度下降算法和爬山法都有以下两个问题:

  • 对初值敏感,不同的初值可能导致完全不同的结果;
  • 容易陷入局部最优,而且容易停滞在平坦区。

这也是Hopfield网络用于优化计算时遇到的问题,模拟退火算法能有效解决上述问题。

物理背景

“退火”是指对物体加温后再冷却的过程,它源于晶体冷却的过程,如果固体不处于最低能量状态,给固体加热再冷却,随着温度缓慢下降,固体中的原子按一定形状排列,形成高密度,低能量的有规则晶体,在算法中对应全局最优值。
而如果温度下降过快,可能导致原子缺少足够的时间排列成晶体结构,结果产生了具有较高能量的非晶体,这就是局部最优值。

Metropolis算法

模拟退火算法包含Metropolis算法和退火过程两部分。

Metropolis准则

Metropolis算法又叫Metropolis抽样,它是Metropolis提出的重要性采样法,即以概率来接受新状态,而不是使用完全确定的规则,称为Metropolis准则,可以显著减小计算量。
$$ p=\begin{cases} 1\quad \quad \quad E(n+1)<E(n) \\ { e }^{ ( -\frac { E(n+1)-E(n) }{ T } ) }\quad \quad \quad E(n+1)\ge E(n) \end{cases} $$
当状态由 \( x(n)\) 变为 \(x(n+1)\) 之后,能量减小了,那么这种转移就能被接受。如果能量增大,则先在区间[0,1]产生一个均匀分布的随机数\(\xi \),如果 \(\xi < p\),这种转移也将被接受,否则拒绝转移,进入下一步。

可调节参数

为了确保Metropolis算法在有限时间收敛,必须设定控制算法收敛的参数,参数 \(T\) 就是控制退火快慢的可调节参数。\(T\) 如果过大,会导致退火太快,达到局部最优即结束迭代;如果取值过小,则会延长不必要的搜索时间。

实际应用中是在退火的初期采用较大的\(T\)值,随着退火的进行,逐步降低,具体过程如下:

  • 初始温度\(T(0)\)应选得足够高,使得所有可能的状态转移都能被接受。
  • 最简单的速率下降方式是指数式下降:
    $$ T(n)=\lambda T(0)\quad n=1,2,.. $$

\(lambda \)是一个小于1的正数,一般取值在0.8和0.99之间。使得对每一温度,有足够的转移尝试。指数式下降的收敛速度比较慢,其他下降方式如下所示:
$$T(n)=\frac { T(0) }{ \log { (1+t) } } \quad or \quad T(n)=\frac { T(0) }{ 1+t } $$

模拟退火算法

初始化

运行Metropolis算法

根据内循环终止准则,检查是否达到热平衡。

按照公式调整T,根据外循环终止准则检查退火算法是否收敛。

总结

与温度\(T\)有关的参数对模拟退火算法的运行影响非常大,初始温度足够高,温度下降足够慢,能使系统达到高质量的解,但耗费的时间也是很可观的,这一点需要根据实际需求进行权衡。

Boltzmann机

定义

和Hopfield网络每个节点都和其他节点连通不同,波尔滋曼机的节点有两种:

  • 可见节点:负责输入输出
  • 隐藏节点:类似BP网络中的隐节点
    根据可见节点的输入输出,又可以分为自联想型BM,异联想型BM。