Hopfield网络具有最优计算功能,然而网络只能严格按照能量函数递减方式演化,很难避免伪状态的出现,且权值容易陷入局部极小值,无法收敛于全局最优解。
如果反馈神经网络的迭代过程不是那么死板,可以在一定程度上暂时接受能量函数变大的结果,就有可能跳出局部极小值。随机神经网络的核心思想就是在网络中加入概率因素,网络并不是确定的向能量函数减小的方向演化,而是以一个较大概率向这个方向演化,以保证正确的迭代方向,同时想能量函数增大的概率也存在,以防止陷入局部极小值。
在机器学习以及优化组合问题中,最常用的方法就是梯度下降法。比如BP神经网络,多层感知器的神经元(units)越多,对应的权矩阵也就越大,每个权可视为一个自由度或者变量。我们知道自由度越高,变量越多,模型越复杂,模型的能力越强。但是模型能力越强,模型就越容易过拟合,对噪声太敏感。另一方面,使用梯度下降进行最优解搜寻时,多变量的误差曲面很像是连绵起伏的山峰一样,变量越多,山峰和山谷也越多,这就导致梯度下降法极容易陷入到局部的一个小山谷,而停止搜索(局部最优)。这就是常规的梯度下降法在解决多维度的优化问题中最常见的局部最优问题。究其原因是梯度下降法的搜索准则所致,按照梯度的负方向搜索,一味追求网络误差或能量函数的降低,使得搜索只具有“下山”的能力,而不具备“爬山”的能力。所谓“爬山”的能力,就是当搜索陷入局部最优时,还能具备一定的“翻山越岭”的能力,能够从局部最优中逃出来,继续搜索全局最优。如果为具有多个局部极小点的系统打一个形象的比喻。设想托盘上有一个凸凹不平的多维能量曲面,若在该曲面上放置一个小球,它在重力作用下,将滚入最邻近的一个低谷(局部最小点)而不能自拔。但该低谷不一定就是曲面上最低的那个低谷(全局最小点)。因此, 局部极小问题只能通过改进算法来解决 。一种可行的办法就是刚才所提到的让算法具有“爬山”的能力,同时还要保证当搜索进入全局最优时不会因为“爬山”而跑出全局最优的“山谷”。本文要讲解的随机神经网络:模拟退火(Simulated Annealing)与玻尔兹曼机(Boltzmann Machine)就是通过一定的概率保证搜索陷入局部最优时能够具有一定的“爬山”能力。这个形象的对比可参看下图:
本文先介绍模拟退火算法,然后讨论基于模拟退火算法的Boltzmann机的结构和运行原理,在介绍Sigmoid置信度网络。
模拟退火算法
模拟退火算法时非凸优化问题寻优的一种重要的启发式算法。
模拟退火算法的参数控制
为了确保模拟退火算法在有限时间收敛,必须设定控制参数控制算法收敛的参数。上面公式中,可调节的参数是控制退火快慢的参数T,T如果过大,会导致退火太慢,会延长不必要的搜索时间,T太小