您宁愿寻找模拟退火,以原始物理方式制定时更容易理解
:
- x是系统的状态
- f(x)是系统的能量;能量被定义为增加一个常数,所以它是负数或正数都没有问题——唯一的限制是越低越好
- T是系统的温度,是以能量单位表示的温度kT
MH算法,公式为
- x′=x+random change
- 如果比{expf(x)−f(x′)kT>R(0;1)}x=x′
- 转到 1
重新创建与放置在温度中的系统相同的特定状态(的值)占用,如 Metropolis 在他的开创性工作中所示。xT
物理系统倾向于自发地进入最低能量状态并停留在那里,所以在最初的放松之后x通常应在最小值附近振荡。这些振荡的幅度取决于温度,因此模拟退火减少了T在运行期间减少它们并使最小值的定位更准确。最初需要高温来防止系统着陆并在某个局部最小值停留很长时间。
编辑:如果你被告知你应该只使用 Metropolis-Hastings,这很可能意味着你应该这样做,只有在恒温的情况下(不断降低的温度是模拟退火添加到 MH 的唯一因素)。然后你需要做一些实验来找出一个好的温度,这样就会有很好的准确性,不会卡在局部最小值。