分类目录:《机器学习中的数学》总目录
相关文章:
· 梯度下降法(Gradient Descent)
· 随机梯度下降(Stochastic Gradient Descent, SGD)
· 牛顿迭代法(Newton‘s Method)
· 拟牛顿法(Quasi-Newton Methods)
· Momentum(Gradient Descent with Momentum, GDM)
· Nesterov Momentum
· AdaGrad
· RMSProp
· Adam(Adaptive Moments)
· 共轭梯度法(Conjugate Gradient)
· 遗传算法(Genetic Algorithm)
· 粒子群算法
\qquad· 基础知识
\qquad· 带惯性权重的粒子群算法
\qquad· 改进的粒子群算法
· 模拟退火算法(Simulated Annealing,SA)


模拟退火算法来源于固体退火原理:将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。

模拟退火算法(Simulated Annealing,SA)最早的思想是由N.Metropolis等人于1953年提出。1983年,S.Kirkpatrick等成功地将退火思想引入到组合优化领域。它是基于蒙特卡罗方法迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。模拟退火算法是一种通用的优化算法,理论上算法具有概率的全局优化性能,目前已在工程中得到了广泛应用,诸如VLSI、生产调度、控制工程、机器学习、神经网络、信号处理等领域。

模拟退火算法(SA)最早见于IBM托马斯·J.沃森研究中心的S.Kirkpatrick等人的文章。他们在对组合优化进行研究后,根据迭代改进的思想提出了“模拟退火算法”。在模拟退火算法的发展进程中,Metropolis等人对固体在恒温度下达到热平衡过程的模拟也给他们以启迪:应该把Metropolis准则引入到优化过程中来。在国内,模拟退火算法应用最早是管梅古教授于1962年提出的CPP问题并且给出了一个解决办法。在1990年姚新教授通过参数对SA的收敛性、初始温度的选取、冷藏调度表以及模拟退火算法终止条件的分析,合理阐述了模拟退火算法的一些优缺点。在当代,模拟退火算法有了进一步广泛的发展,应用也逐步涵盖了各种领域,并且由一些学者逐渐改进模拟退火算法。例如:2006年由蒋龙聪教授借鉴遗传算法中的非均匀变异思想,用非均匀变异策略对当前模型扰动产生新的模型,对传统的模拟退火算法提出了改进。通过多峰值函数数值优化测试结果表明,该算法在高温的时候能够进行大范围的搜索,随着温度的降低,逐渐缩小搜索范围,大大加快了收敛速度,证实了该改进算法的有效性和高效性。还有一系列的模拟退火算法应用在公交排班优化的研究、变压器的状态监测研究等。

  • 利用SA算法进行VLSI的最优设计,是目前SA算法最成功的应用实例之一。用SA算法几乎可以很好地完成所有关于优化的VLSI设计工作,如全局布线、布板、布局和逻辑最小化等等。实践证明,SA算法在解决这些问题时给出了很好的结果,优于传统算法所得到的结果。
  • SA算法由于具有跳出局部最优陷阱的能力,因此被D.H.Ackley等人用作Boltzmann机的学习算法,从而使Boltzmann机克服了Hopfield神经网络模型的缺点(即经常收敛到局部最优值)。在Boltzmann机中,即使系统落入了局部最优的陷阱,经过一段时间后,它还能再跳出来,使系统最终将往全局最优值的方向收敛。
  • SA算法可用来进行图像恢复等工作,即把一幅被污染的图像重新恢复成清晰的原图,滤掉其中被畸变的部分。S.Geman等人的实验结果表明,SA算法不但可以很好地完成图像恢复工作,而且它还具有很大的并行性。因此它在图像处理方面的应用前景是广阔的。

除了上述应用外,SA算法还用于求解其他各种组合优化问题,如TSP和Knapsack问题等。大量的模拟实验表明,SA算法在求解这些问题时能产生令人满意的近似最优解,而且所用的时间也不长。研究及实际应用得出,模拟退火算法有以下特性:

  • 高效性:与局部援所算法相比,模拟退火算法可望在较短时间里求得更优近似解。模拟退火算法允许任意选取初始解和随机数序列,又能得出较优近似解,因此应用算法求解优化问题的前期工作量大大减少。
  • 健壮性:在可能影响模拟退火算法实验性能的诸多因素中,问题规模nnn的影响最为显著:nnn的增大导致搜索范围的绝对增大,会使CPU运行时间增加;而对于解空间而言,搜索范围又因nnn的增大而相对减小,将引起解质量的下降,但SAA的解和CPU时间均随nnn增大而趋于稳定,且不受初始解和随机数序列的影响。SAA不会因问题的不同而蜕变。
  • 通用性和灵活性:模拟退火算法能应用于多种优化问题,为一个问题编制的程序可以有效地用于其他问题。SAA的解质与CPU时间呈反向关系,针对不同的实例以及不同的解质要求,适当调整冷却进度表的参数值可使算法执行获得最佳的“解质—时间”关系。

由以上模拟退火算法的特性可以看出模拟退火算法随着时代的发展广泛应用于各种领域,在科学分类上几乎毫无盲点应用于自然科学工程技术、人文与社会科学等各个分支。对于模拟退火算法主要还是其对生活、工程之类的应用。所以模拟退火算法在当代学者的研究下有很广泛的发展前景,可以更好地利用它更高精度地解决实际问题。

算法实现

模拟退火算法最早的思想由Metropolis等于1953年提出,1983年KirkPatrick等将其应用于组合优化。模拟退火算法可解决NP复杂性问题,即避免优化过程陷入局部极小并克服初值依赖性。退火是指将固体加热到足够高的温度,使分子呈随机排列状态。然后逐步降温使之冷却,最后分子以低能状态排列,固体达到某种稳定状态。而加温过程指增强粒子的热运动,消除系统原先可能存在的非均匀状态。等温过程是对于与环境换热而温度不变的封闭系统,系统状态的自发变化总是朝自由能减少的方向进行,当自由能达到最小时,系统达到平衡态。冷却过程是使粒子热运动减弱并渐趋有序,系统能量逐渐下降,从而得到低能的晶体结构。

退火是一种物理过程,一种金属物件热至一定的温度后,它的所有分子在状态空间DDD中自由运动。随着温度的下降,这些分子逐渐停留在不同的状态。在温度最低时,分子重新以一定的结构排列,由统计力学的研究表明,在温度TTT,分子停留在状态rrr满足玻尔兹曼(Boltzmann)概率分布:
Pr{Eˉ=E(r)}=1Z(t)e−E(r)kBTP_r\{\bar{E}=E(r)\}=\frac{1}{Z(t)}e^{-\frac{E(r)}{k_BT}}Pr​{Eˉ=E(r)}=Z(t)1​e−kB​TE(r)​

式中,E(r)E(r)E(r)为状态rrr的能量;kB>0k_B>0kB​>0为玻尔兹曼常数;Eˉ\bar{E}Eˉ为分子能量的一个随机变量;Z(T)Z(T)Z(T)为概率分布的标准化因子:
Z(T)=∑s∈De−E(r)kBTZ(T)=\sum_{s\in D}e^{-\frac{E(r)}{k_BT}}Z(T)=s∈D∑​e−kB​TE(r)​

先研究由式Pr{Eˉ=E(r)}P_r\{\bar{E}=E(r)\}Pr​{Eˉ=E(r)}确定的函数随TTT变化的趋势。选定两个能量E1<E2E_1<E_2E1​<E2​,在同一个温度TTT,有:
Pr(Eˉ=E1)−Pr(Eˉ=E2)=1Z(t)e−E1kBT[1−e−E2−E1kBT]P_r(\bar{E}=E_1)-P_r(\bar{E}=E_2)=\frac{1}{Z(t)}e^{-\frac{E_1}{k_BT}}[1-e^{-\frac{E_2-E_1}{k_BT}}]Pr​(Eˉ=E1​)−Pr​(Eˉ=E2​)=Z(t)1​e−kB​TE1​​[1−e−kB​TE2​−E1​​]

因为:
∀T>0:e−E2−E1kBT<1\forall T>0: e^{-\frac{E_2-E_1}{k_BT}}<1∀T>0:e−kB​TE2​−E1​​<1

所以:
∀T>0:Pr(Eˉ=E1)−Pr(Eˉ=E2)>0\forall T>0: P_r(\bar{E}=E_1)-P_r(\bar{E}=E_2)>0∀T>0:Pr​(Eˉ=E1​)−Pr​(Eˉ=E2​)>0

在同个温度,e−E2−E1kBTe^{-\frac{E_2-E_1}{k_BT}}e−kB​TE2​−E1​​表示分子停留在能量小状态的概率比停留在能量大状态的概率要大。当温度相当高时,Pr{Eˉ=E(r)}P_r\{\bar{E}=E(r)\}Pr​{Eˉ=E(r)}的概率分布使得每个状态的概率基本相同,接近平均值1∣D∣\frac{1}{|D|}∣D∣1​,∣D∣|D|∣D∣为状态空间DDD中状态的个数。结合e−E2−E1kBTe^{-\frac{E_2-E_1}{k_BT}}e−kB​TE2​−E1​​,具有最低能量状态的玻尔兹曼概率接近并超出平均值1∣D∣\frac{1}{|D|}∣D∣1​。由:
∂Pr(Eˉ=Er)∂T=e−E(r)kBTZ(T)kBT2[E(r)−∑s∈DE(s)e−E(r)kBTZ(T]\frac{\partial P_r(\bar{E}=E_r)}{\partial T}=\frac{e^{-\frac{E(r)}{k_BT}}}{Z(T)k_BT^2}[E(r)-\frac{\sum_{s\in D}E(s)e^{-\frac{E(r)}{k_BT}}}{Z(T}]∂T∂Pr​(Eˉ=Er​)​=Z(T)kB​T2e−kB​TE(r)​​[E(r)−Z(T∑s∈D​E(s)e−kB​TE(r)​​]

当rmin⁡r_{\min}rmin​是DDD中具有最低能量的状态时,得:
∂Pr(Eˉ=Ermin⁡)∂T<0\frac{\partial P_r(\bar{E}=E_{r_{\min}})}{\partial T}<0∂T∂Pr​(Eˉ=Ermin​​)​<0

所以,Pr(Eˉ=Ermin⁡P_r(\bar{E}=E_{r_{\min}}Pr​(Eˉ=Ermin​​关于温度TTT是单调下降的。又有:
Pr(Eˉ=Ermin⁡)=1Z(t)e−E(rmin⁡)kBT=1∣D0∣+RP_r(\bar{E}=E_{r_{\min}})=\frac{1}{Z(t)}e^{-\frac{E(r_{\min})}{k_BT}}=\frac{1}{|D_0|+R}Pr​(Eˉ=Ermin​​)=Z(t)1​e−kB​TE(rmin​)​=∣D0​∣+R1​

其中,D0D_0D0​是具有最低能量的状态集合,而:
T→0:R=∑s∈D0,R(s)>E(rmin⁡)e−E(s)−E(rmin⁡)kBT→0T\rightarrow0:R=\sum_{s\in D_0,R(s)>E(r_{\min})}e^{-\frac{E(s)-E(r_{\min})}{k_BT}}\rightarrow0T→0:R=s∈D0​,R(s)>E(rmin​)∑​e−kB​TE(s)−E(rmin​)​→0

因此:
T→0:Pr(Eˉ=Ermin⁡)→1∣D0∣T\rightarrow0:P_r(\bar{E}=E_{r_{\min}})\rightarrow\frac{1}{|D_0|}T→0:Pr​(Eˉ=Ermin​​)→∣D0​∣1​

当温度趋向0时,Pr{Eˉ=E(r)}P_r\{\bar{E}=E(r)\}Pr​{Eˉ=E(r)}决定的概率渐近1∣D0∣\frac{1}{|D_0|}∣D0​∣1​。由此可以得到,在温度趋向0时,分子停留在最低能量状态的概率趋向1。综合上面的讨论,分子在能量最低状态的概率变化趋势由下图(a)表示:

对于非能量最小的状态,由∀T>0:e−E2−E1kBT<1\forall T>0: e^{-\frac{E_2-E_1}{k_BT}}<1∀T>0:e−kB​TE2​−E1​​<1和分子在能量最小状态的概率是单调减小的事实,在温度较高时,分子在这些状态的概率在1D\frac{1}{D}D1​附近,依赖于状态的不同,可能超过1D\frac{1}{D}D1​;由前文可知存在一个温度ttt,使式(7.15)决定的概率在(0,t)是单调升的;再由式(7.18)可知,当温度趋于0时,Pr{Eˉ=E(r)}=1Z(t)e−E(r)kBTP_r\{\bar{E}=E(r)\}=\frac{1}{Z(t)}e^{-\frac{E(r)}{k_BT}}Pr​{Eˉ=E(r)}=Z(t)1​e−kB​TE(r)​定义的概率趋于0概率变化曲线。见上图(b)。

从上面的讨论得到,在温度很低时(TTT趋于0),能量越低的状态的概率值越高。在极限状况,只有能量最低的点概率不为零。

简化概率分布式Pr{Eˉ=E(r)}P_r\{\bar{E}=E(r)\}Pr​{Eˉ=E(r)}为:
p(x)=1q(t)e−xtp(x)=\frac{1}{q(t)}e^{-\frac{x}{t}}p(x)=q(t)1​e−tx​

其中,q(t)为标准化因子。设共有4个能量点x=1,2,3,4x=1,2,3,4x=1,2,3,4,在此q(t)=∑x=14e−xtq(t)=\sum_{x=1}^4e^{-\frac{x}{t}}q(t)=∑x=14​e−tx​。观察t=20,5,0.5t=20,5,0.5t=20,5,0.5这3个温度点概率分布变化。从下表可以看到,当温度较高时(t=20)(t=20)(t=20),四点的概率分布相差比较小,也可以看成概率是均匀分布,但能量最低状态x=1x=1x=1的概率0.269超出平均值0.25。这相当于分子的随机游动,当温度下降后(t=5)(t=5)(t=5),状态x=4x=4x=4的发生概率变得比较小了,也就是说,它的活跃度下降。当t=0.5t=0.5t=0.5时,x=1x=1x=1的概率达0.865而其他三个状态的概率都很小,合起来为0.135。在下表中也可以看出,非能量最低状态x=2x=2x=2的概率在3个温度点(0.5,5,20)(0.5, 5, 20)(0.5,5,20)有一个上升和下降的过程,在t=20t=20t=20和t=5t=5t=5时的概率都超过平均概率0.25。

由以上的类比,组合优化的最优解可以类比为退火过程中能量的最低状态,也就是温度达到最低点时,概率分布中具有最大概率的状态。于是组合优化问题的求解过程可类比为退火过程。
min⁡f(x)s.t.g(x)≥0,x∈D\begin{aligned} \min&\quad f(x)\\ \text{s.t.}&\quad g(x)\geq0, x\in D \end{aligned} mins.t.​f(x)g(x)≥0,x∈D​

式中,f(x)f(x)f(x)为目标函数;g(x)g(x)g(x)为约束方程;DDD为定义域,简单的模拟退火算法如下:

模拟退火算法(Simulated Annealing,SA)
输入:
\qquad 任意设置一个初始解:x0x_0x0​;初始温度:t0=tmax⁡t_0=t_{\max}t0​=tmax​
算法:
( 1 ) xi=x0x_i=x_0xi​=x0​;k=0k=0k=0
( 2 ) while\quad未满足循环停止条件
( 3 ) \quad 从领域N(xi)N(x_i)N(xi​)中随机选xjx_jxj​,计算:Δfij=f(xj)−f(xi)\Delta f_{ij}=f(x_j)-f(x_i)Δfij​=f(xj​)−f(xi​)
( 4 ) \quad ifΔfij≤0\quad\Delta f_{ij}\leq0Δfij​≤0then
( 5 ) xj=xi\quad\quad x_j=x_ixj​=xi​
( 6 )\quad else ife−Δfijtk>random(0,1)\quad e^{-\frac{\Delta f_{ij}}{t_k}}>\text{random}(0,1)e−tk​Δfij​​>random(0,1)
( 7 ) xj=xi\quad\quad x_j=x_ixj​=xi​
( 8 ) \quad else
( 9 ) \quad\quad跳转到步骤(3)
(10) \quadend if
(11) tk+1=d(tk)\quad t_{k+1}=d(t_k)tk+1​=d(tk​)
(12) k=k+1\quad k=k+1k=k+1

在上述的模拟退火算法中,包含一个内循环和一个外循环。内循环是步骤(2),它表示在同一温度tkt_ktk​时,在一些状态随机搜索。外循环主要包括步骤(11)~(12)的温度下降变化tk+1=d(tk)t_{k+1}=d(t_k)tk+1​=d(tk​)、迭代步数的增加k=k+1k=k+1k=k+1和停止条件等。模拟退火的直观理解是:在一个给定的温度,搜索从一个状态随机地变化到另一个状态。每一个状态达到的次数服从一个概率分布。当温度很低时,以概率1停留在最优解。

机器学习中的数学——模拟退火算法(Simulated Annealing,SA)相关推荐

  1. 数学建模——模拟退火算法(Simulated Annealing,SA)

    模拟退火算法 一.模拟退火算法概述 二.算法步骤 三.算法特点 四.模拟退火算法理解(图解) 五.Metropolis准则 六.模拟退火算法的应用 七.模拟退火算法Matlab代码 工具箱求解非线性函 ...

  2. 一文搞懂什么是模拟退火算法SImulated Annealing【附应用举例】

    本文参考了很多张军老师<计算智能>的第十章知识. 本文来源:https://blog.csdn.net/qq_44186838/article/details/109181453 模拟退火 ...

  3. 【opencv450-samples】旅行商问题(模拟退火算法Simulated Annealing,SA)

    运行结果 视频演示 源码: #include <opencv2/core.hpp> #include <opencv2/imgproc.hpp> #include <op ...

  4. 模拟退火算法(Simulated Annealing)

    模拟退火算法 说说什么是算法?有人理解是输入数据经过一些步骤的处理,最后输出.在我理解来看就是一种优化问题或者说是数值分析,无论机器学习中的算法还是深度学习的算法,寻找最优模型都是解最小损失的函数.最 ...

  5. 模拟退火(Simulated Annealing, SA)算法简介与MATLAB实现

    目录 模拟退火算法概述 算法步骤 算法特点 模拟退火算法MATLAB实现 [例1]一元/多元函数优化 [例2]TSP问题 模拟退火算法概述 模拟退火算法(Simulated Annealing,简称S ...

  6. 在python中调用双模拟退火算法dual_annealing

    原理 模拟退火算法(CSA)中最重要的概念就是Metrospolis准则,表示的是接收新解的概率,一般表示为 p=e−f(x2)−f(x3)Tp=e^{-\frac{f(x_2)-f(x_3)}{T} ...

  7. 机器学习中的数学——深度学习中的优化理论

    分类目录:<机器学习中的数学>总目录 深度学习算法在许多情况下都涉及优化.例如,模型中的进行推断涉及求解优化问题.我们经常使用解析优化去证明或设计算法.在深度学习涉及的诸多优化问题中,最难 ...

  8. Python使用模拟退火(Simulated Annealing)算法构建优化器获取机器学习模型最优超参数组合(hyperparameter)实战+代码

    Python使用模拟退火(Simulated Annealing)算法构建优化器获取机器学习模型最优超参数组合(hyperparameter)实战+代码 目录

  9. 机器学习中的数学——粒子群算法(Particle Swarm Optimization, PSO)(三):改进的粒子群算法

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

最新文章

  1. 图像几何变换C++实现--镜像,平移,旋转,错切,缩放
  2. Java项目:就业管理系统设计和实现(java+springboot+ssm)
  3. Rocket 架构设计
  4. Android --- ERROR: Failed to resolve: xxx Affected Modules: xxx
  5. PHP在Windows环境下获取GMT时间
  6. 在.NET环境禁止别人调用代码
  7. python中说_name_没有被定义_python – 为什么我得到这个NameError:名称’url_for’没有定义?...
  8. android控件详解大全 android开发有关资料
  9. 自反馈与 Mandelbrot set
  10. Matlab常用的标记符号和颜色
  11. 津巴布韦 apn_津巴布韦的回忆-你负担不起回家
  12. .NET 将PDF转成图片之Magick.NET(亲测可用)
  13. 苏宁!你还挺得过去吗?(苏宁大幅裁员)
  14. 各种图片格式的图片清晰程度排序
  15. OpenGL(十七)——Qt OpenGL在三维空间移动位图(会动的星星)
  16. 家用净水器哪个牌子好,家用净水器评测
  17. 前端发起请求,后端响应请求的整个过程
  18. 实验:JS判断浏览器中英文版本
  19. es数据库查询API
  20. 关于OPC Client 编写

热门文章

  1. PVE系统+NAS+WEB 折腾笔记 :3-安装黑群晖
  2. 自然语言处理 | (5)英文文本处理与spaCy
  3. 游戏使用的组合键(热键)被占用的一种解决方案
  4. 台式机标准计算机配置清单,2500组装电脑配置清单,2500左右主机配置2018
  5. 计算机开机先检测什么问题,电脑按下开机键后 没反应 但检测电源却没有問題,是什么情况?...
  6. 饱和约束下轮式机器人的轨迹跟踪控制算法 (MATLAB实现)
  7. CISC和RISC是什么?它们的特点和区别?
  8. La Salle-Pui Ching Programming Challenge 2017 Gym - 101522A,B,C,D,H,I,K
  9. Redhat 5.4 + ASM + RAW+ Oracle 10g RAC 安装文档
  10. 涉密会议文件这样管理,不用担心文件泄密!