模拟退火算法不是一个可以独立拿来应用于系统的算法。这种方法是对其余算法的一个补充和优化。他是在一个更高层次的过程上进行优化。
退火的过程:温度先很高,保持一定的高温时间,让原子充分排列,然后温度下降一些,再给充足的时间让原子充分排列,如此往复,直到温度降为常温为止。如果温度下降过快,就会产生一些能量较高的非晶体,得到的刀具就太脆。也就是局部最优解。
模拟退火算法的基础:Metropolis算法和退火过程。
Metropolis算法是一种以某种概率P接受使得能量变高,或者说误差函数变大的权值调整。
其中,E为能量函数,也是误差函数,即我们需要去寻找极小值的函数。T为温度,我们自己来定义的一个值。
退火过程就是调节T,使其不断减小的过程。
从以上核心思想可以看出,模拟退火算法只是在寻找极值的过程和接收状态改变的原则上进行了规定,而如何确定下一个状态,是没有进行规定的,这样如何得到下一个状态就是来配合模拟退火算法的其他算法。
首先赋予系统一个较高的能量,然后充分进行权值的调整,而后能量不断地减小,权值随着能量的减小,调整的模式也跟着相应地进行变化。在能量高的时候,权值调整剧烈,而在能量低的时候,权值调整较为平缓。
模拟退火算法的过程:对于梯度下降算法来说,权值调整的方向就是梯度下降的方向。这样对于非凸问题来说,很可能就会陷入局部极小值,而无法继续更新权值。加入模拟退火算法以后,权值调整的方向不再是梯度下降的方向,而是以大概率向梯度下降的方向调整。当误差函数越大时,向梯度下降的方向调整的概率相对较小,当误差函数较小时,向梯度下降的方向调整的概率越大。