现代优化算法

常见现代优化算法

最近学习了几种现代优化算法,现对各类算法进行总结。

蚁群算法

原理

模拟蚂蚁觅食行为,蚂蚁觅食时会留下信息素,其他蚂蚁在行走时依概率选择路线(信息素浓度越高概率越大),蚂蚁找到食物后回家,在回家的路上留下信息素,假设蚂蚁以确定速度运动并均匀撒下信息素,那么从找到食物的地方到家的所有路线中,在相同时间内肯定是最短的路线信息素浓度最高。久而久之路径短的路线信息素浓度越来越高,而其他路线随着时间的流逝信息素会挥发导致浓度降低,最终可得到最优路径。

算法影响因素

  • 蚂蚁数量
  • 信息启发式因子
    表示信息素对于蚂蚁选择轨迹的吸引力,越大蚂蚁则会有更大概率按信息素选择路线(选择前人走过的路),越大收敛速度越快但容易局部最优,越小随机性越好收敛慢
  • 期望启发式因子
    表示信息素浓度越大的路对蚂蚁的吸引力,越大蚂蚁则更愿意选择局部较短的路径,越大收敛快容易局部最优,越小随机性越好收敛慢
  • 信息素挥发速度
    表示信息素挥发的速度,挥发速度越快随机性越好收敛慢,挥发速度慢收敛快但容易陷入局部最优解

算法流程

以蚁群算法求解TSP为例
现代优化算法_第1张图片
图片来源

  • m:蚂蚁数量,城市的1.5倍,过大收敛慢,过小局部收敛
  • α \alpha α:信息素因子,取值[1,4]
  • β \beta β:启发函数因子,取值[3,4.5]
  • ρ \rho ρ:信息素挥发因子,取值[0.2, 0.5]
  • Q:信息素常数,表示蚂蚁遍历一次所有城市所释放的信息素总量,越大收敛越快
  • n:城市总数
  • d i j d_{ij} dij:两城市之间的距离
  • τ i j ( t ) \tau_{ij}(t) τij(t):t时刻两城市间的信息素浓度
  • p i j k ( t ) p_{ij}^k(t) pijk(t):t时刻蚂蚁从城市i向城市j转移的概率
  • η _ i j ( t ) \eta\_{ij}(t) η_ij(t):启发函数,表示蚂蚁从i城市转移到j城市的期望程度,这里取值为 1 / d i j 1/d_{ij} 1/dij
  • a l l o w k allow_k allowk:蚂蚁待放城市的集合
  • Δ τ i j k ( t ) \Delta\tau_{ij}^k(t) Δτijk(t):表示第k只蚂蚁对城市i、j之间信息素浓度增加量的贡献
  • Δ τ i j \Delta\tau_{ij} Δτij:城市i与城市j之间信息素浓度的累积增加量
  • Γ ( n ) = ( n − 1 ) ! ∀ \Gamma(n) = (n-1)!\quad\forall Γ(n)=(n1)!
  • L k L_k Lk:表示蚂蚁k遍历完所有城市所经历的总路程长度
  • 公式一:蚂蚁在两城市之间转移的概率
    p i j k ( t ) = { [ τ i j ( t ) ] α [ η i j ( t ) ] β ∑ s ∈ a l l o w k [ τ i s ( t ) ] α [ η i s ( t ) ] β , j ∈  allow  k 0 , j ∉  allow  k p_{i j}^k(t)=\left\{\begin{array}{l}\frac{\left[\tau_{i j}(t)\right]^\alpha\left[\eta_{i j}(t)\right]^\beta}{\sum_{s \in a l l o w_k}\left[\tau_{i s}(t)\right]^\alpha\left[\eta_{i s}(t)\right]^\beta}, j \in \text { allow }_k \\ 0, j \notin \text { allow }_k\end{array}\right. pijk(t)={sallowk[τis(t)]α[ηis(t)]β[τij(t)]α[ηij(t)]β,j allow k0,j/ allow k
  • 公式二:信息素浓度的迭代更新
    { τ i j ( t + 1 ) = ( 1 − ρ ) ⋅ τ i j ( t ) + Δ τ i j , 0 < ρ < 1 Δ τ i j = ∑ k = 1 m Δ τ i j k \left\{\begin{array}{l}\tau_{\mathrm{ij}}(t+1)=(1-\rho) \cdot \tau_{\mathrm{ij}}(t)+\Delta \tau_{\mathrm{ij}}, 0<\rho<1 \\ \Delta \tau_{\mathrm{ij}}=\sum_{k=1}^m \Delta \tau_{\mathrm{ij}}^{\mathrm{k}}\end{array}\right. {τij(t+1)=(1ρ)τij(t)+Δτij,0<ρ<1Δτij=k=1mΔτijk
  • 公式三:蚂蚁对两城市路径之间信息素浓度的贡献
    Δ τ i j k = { Q L k , if the ant  k  goes through i to  j 0 ,  else  \Delta \tau_{i j}^k=\left\{\begin{array}{l}\frac{Q}{L_k} \text {, if the ant } k \text { goes through i to } j \\ 0, \text { else }\end{array}\right. Δτijk={LkQ, if the ant k goes through i to j0, else 

遗传算法

原理

模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程,是一种通过模拟自然进化过程搜索最优解的方法。
编码:将问题编码为字符串
选择:按照适应度选择染色体产生下一代
交叉:两个父代个体染色体交叉重组产生新的个体的染色体
变异:依概率使染色体某些位置发生变化

算法流程

现代优化算法_第2张图片

粒子群算法

原理

粒子群算法(PSO)模拟鸟儿觅食原理,鸟儿的寻找食物的过程中通过相互传递信息,共同协作使得最终所有鸟儿都到达食物附近。
现代优化算法_第3张图片
黄色鸟第一次位移找到了两个玉米,第二次位移找到了一个玉米,下次位移由三个因素决定,一个是鸟儿自身的惯性使得它会朝向原来位移的方向移动一段距离,第二个是个体最优对他的移动引导(例如此时它会向它之前发现两个玉米的方向移动一段距离),第三个是群体最优对他的移动引导(此时红色鸟找到了四个玉米,并告知黄色鸟,于是黄色鸟也会向红色鸟的位置移动),三个位移矢量相加得到本次位移

算法流程

现代优化算法_第4张图片
图片来源

影响因素

模拟退火算法

算法原理

模拟退火算法借鉴固体的退火原理,固体温度高的时候内能大,固体内部粒子处于快速无序运动,当温度下降时固体内能变小,内部粒子慢慢趋于有序。简而言之,温度大粒子变化大,温度小粒子变化小。

算法流程

设置一个初始温度,每次循环退火一次,如果粒子的目标函数值朝着期望的方向变化则取新解,如果没有则以一定概率接收该新解现代优化算法_第5张图片
图片来源
接收概率
p = { 1 E n + 1 < E n e − T E n + 1 − E n E n + 1 > E n p = \begin{cases} 1 & E_{n+1}E_{n} \end{cases} p={1eEn+1EnTEn+1<EnEn+1>En

总结

这几种优化算法实际过程就是在有根据的猜,首先随便大量猜一些初值,每次猜完总结一下结果是变好还是变坏,然后下次朝着变好的方向猜。
猜的过程中有两个要素需要均衡,强化和随机,强化是如果哪个猜的好,那么之后都学他;随机指我随便猜。两个共同决定了对于优秀结果的参考程度。如果一个人优秀所有人都学他,结果可能就是学的很快,但是最终的能力可能也就这样了,不会特别高。如果误打误撞,也许会任督二脉被打通结果还能蒙的更好点。

你可能感兴趣的:(算法,机器学习)