#通俗理解# 模拟退火算法

1.算法概述

相比于传统贪心算法,模拟退火算法最大的改进就是对于非最优解系统能够以一定的概率接受,下边通过公式具体说明:
假设前一个状态为x(n),系统根据某一指标(梯度下降),状态变为x(n+1),相应的,系统的能量(全局最优解的函数值)由E(n)变为E(n+1),定义系统由x(n)变为x(n+1)的接受概率P为:

P = { 1 , E ( n + 1 ) < E ( n ) e − E ( n + 1 ) − E ( n ) T , E ( n + 1 ) ≥ E ( n ) P = \left\{\begin{matrix} 1, E(n+1)<E(n)& \\ & \\ & \\ e^{-\frac{E(n+1) - E(n)}{T}}, E(n+1) \geq E(n)& \end{matrix}\right. P=1,E(n+1)<E(n)eTE(n+1)E(n),E(n+1)E(n)
通过上述公式可知,当当前状态的能量优于前一状态的能量(全局最优解的函数值)时,算法接受当前解(以概率1的概率接受);当当前状态的能量差于前一状态的能量时,系统会以一定概率接受当前解

通过分析第二种情况下的接受概率公式可知:接受概率和两次状态的能量差呈负相关,和参数T呈正相关说明当前解和当前最优解的差距越大,接受当前解的概率越低;T参数越大,接受的概率越大。

2.参数控制

在上面的公式中,可以调节的参数就是T,T如果过大,就会导致退火太快,达到局部最优值就会结束迭代,如果取值较小,则计算时间会增加,实际应用中采用退火温度表,在退火初期采用较大的T值,随着退火的进行,逐步降低,具体如下:

2.1 初始的温度

T(0) 应选的足够高,使的所有转移状态都被接受。初始温度越高,获得高质量的解的概率越大,耗费的时间越长。

2.2 退火速率

最简单的下降方式是指数式下降:
T ( n ) = λ T ( n ) , n = 1 , 2 , 3 , . . . . . T(n) = \lambda T(n) ,n =1,2,3,..... T(n)=λT(n),n=1,2,3,.....
其中 λ是小于1的正数,一般取值为0.8到0.99之间。使的对每一温度,有足够的转移尝试,指数式下降的收敛速度比较慢,

其他下降方式如下:
T ( n ) = T ( 0 ) l o g ( 1 + t ) T(n) = \frac{T(0)}{log(1+t)} T(n)=log(1+t)T(0)
T ( n ) = T ( 0 ) 1 + t T(n) = \frac{T(0)}{1+t} T(n)=1+tT(0)
t为迭代次数

2.3 终止温度

如果在若干次迭代的情况下每有可以更新的新状态或者达到用户设定的阈值,则退火完成。

参考文章:深度学习 — 模拟退火算法详解(Simulated Annealing, SA)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

energy_百分百

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值