网格法参数寻优java_参数寻优:启发式搜索方法

前面介绍了参数寻优的传统方法,梯度下降,牛顿下降等,传统的参数寻优方法,都是提供了下降的方向和大小参考。如果参数非常多,成千上万个参数,很多峰谷时,有没有较好的方法去估计最优解呢。本文介绍的方法就是在没有下降参考的情况下,如何去估计最优解,其中包括遗传算法,粒子群算法,蚁群算法,都是仿生物学算法。

启发式搜索

启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置搜索直到目标。由部分信息对计算产生推理,个体能够基于经验或者个体经验交流改变搜索方式。不同于穷举搜索(网格法)和随机搜索(模拟退火算法)。

遗传算法

遗传算法(GA)的思想来自于进化论,生物种群具有自我进化的能力,能够不断适应环境,优势劣汰之后得到最优的种群个体。进化的行为主要有选择,遗传,变异,遗传算法希望能够通过将初始解空间进化到一个较好的解空间。

遗传算法的大体步骤:

1. 初始化候选参数集,并编码为基因序列{ 初始化种群,一组参数编码为一个种群个体,共M个种群个体 }。设定进化代数T。

2. 个体评估,计算各个种群个体的适应度{ 适应度描述了该个体对自然环境的适应能力,表征了其个体存活能力和生殖机会}。

3. 选择运算,选择是模拟自然选择,把优秀的个体选择出来{基于适应度},以进行后续的遗传和变异。

4. 交叉运算,交叉是模拟繁殖后代的基因重组。

5. 变异运算,变异是模拟基因突变。

6. 经过选择,交叉,变异,生产下一代群体,重复此过程,直到停止条件。

适应度函数的设计要求(由目标函数而来):

1. 单值,连续,非负,最大化;

2. 合理,一致性;

3. 计算量小。

将目标函数,或者线性变化Fitness(x)=α∗F(x)+β,或者幂函数变换Fitness(x)=F(x)k,或者指数变换Fitness(x)=e−α∗F(x),或者Goldbery线性拉伸变换Fitness(x)=(Cmult−1)∗FavgFmax−Favg∗F(x)+Fmax−Cmult∗FavgFmax−Favg∗Favg,或者Fitness(x)=⌊n√m⌋F(x),其中m=1+lnT,n为当前进化代数,分子取不大于其内置数据的整数值

遗传算法的优缺点:

1. 通用性强,且简单易于理解。

2. 潜在的并行性。

3. 参数选择经验居多。

4. 搜索速度慢。

粒子群算法

粒子群算法(Particle Swarm Optimization, PSO),是在研究复杂适应系统(Complex Adaptive System, CAS)-鸟群觅食的过程中提出的。

CAS系统的主体(系统成员)具有4个基本特点:(这些特点是粒子群算法发展变化的依据)

1. 主体是主动的,活动的。

2. 主体与环境及其他主体是相互影响、相互作用的,这种影响是系统发展变化的主要动力。

3. 环境的影响是宏观的,主体之间的影响是微观的,宏观与微观要有机结合。

4. 整个系统可能还要受一些随机因素的影响。

鸟群觅食场景:一群鸟随机地找食物,只有一小片区域是有食物的。每个鸟在自己周边蹦跳,然后叫几声,跟同伴交流食物情况。有个鸟说“哎,我这里有吃的”,然后其他鸟都朝着它所在的方向飞,中间停下来再找。重复上面的过程,最后鸟儿都会集中到有食物的地方。其搜索策略是所有参数都向着当前最优参数的区域搜索(搜索目前离食物最近的鸟的周围区域)。

粒子群算法的大体步骤:

1. 初始化参数集θi=(θi,1,θi,2,...,θi,n),初始速度Vi,权重C1,C2

2. 分别搜索各个参数附近的局部最优解pbest,选择历史最好的局部最优解作为当前的全局最优解gbest。

3. 更新速度:

Vk+1=W∗Vk+C1∗rand()∗(pbest−θ)+C2∗rand()∗(gbest−θ)

更新位置(参数):θk+1=θk+r∗Vk+1

4. 判断终止条件,不符合则否则重复2,3,4步骤。

其中W是惯性权重,表示保持原来速度的惯性。

C1是跟踪自己历史最优值的权重系数,表示对自身的认识。

C2是跟踪群体最优的权重系数,表示对整个群体的认识。

rand()是[0,1]内均匀分布的随机数,表示系统受到的随机影响。

r是速度的约束系数。

粒子群算法的优缺点:

1. 算法规则简单,容易实现。

2. 收敛速度快,有很多措施避免陷入局部最优。

3. 可调参数少,参数选择有理论支持(Eberhart-A modified particle swarm optimizer)。

蚁群算法

蚁群算法(ACO)是一种模拟蚂蚁觅食行为的模拟优化算法,其基本思想是:当蚂蚁沿着一条路径到达终点以后会马上返回来,这样,短的路径蚂蚁往返一次的时间就短,意味着重复频率快,因而在单位时间内走过的蚂蚁数量就多,洒下的信息素也就多,自然会有更多的蚂蚁被吸引过来,从而洒下更多的信息素;而长路径则相反,因此最后越来越多的蚂蚁集中到了较短的路径上,最短路径也就近似找到了。

信息素:蚂蚁留在路径上用于间接交流的物质,可挥发,。信息素多的地方显然经过的蚂蚁多,也会吸引更多的蚂蚁过来。

正反馈:在某一路径走过的蚂蚁越多,信息素越多,蚂蚁选择该路径的概率越大。

例子:由蚁群算法解决TSP(Traveling Salesman Problem)问题。TSP问题,在多个城市中,找到访问完所有城市的最短路径。设C=c1,c2,...cn为n个城市的集合;L=lij|ci,cj∈C是C中元素两两连接的集合,代表城市之间的路径;dij表示城市ci,cj之间的距离。G=(C,L)是一个结构图。

蚂蚁系统中的人工蚂蚁特点:

1. 蚂蚁依据某一概率函数选择下一步要到的城市,该概率函数是城市间距离dij和边上的信息素τij(t)的函数。τij(t)表示t时刻在边lij上的信息素。

2. 每只蚂蚁只允许走合法路径(除非是一次周游,返回起点),不允许走已经访问过的城市。该过程由禁忌表tabuk来控制,蚂蚁k经过城市ci后,将其加入到禁忌表中,下次走时不能走禁忌表中的城市。tabuk(s)表示蚂蚁所走过的第s个城市。

3. 完成一次周游后,蚂蚁在其访问过的每一条边上留下相应的信息素。

蚁群算法解决TSP问题的大体步骤:

1. 初始化

1.1 位置初始化,将m只蚂蚁随机地放到n个城市每只蚂蚁的禁忌表的第一个元素设置为其当前所在城市。

1.2 信息素初始化,信息素量设为τij(0)=常数。

2. 路径查找

2.1 下一步路径查找,根据概率pkij(t)计算下一步城市,概率pkij(t)表示t时刻,蚂蚁k从城市ci转移到城市cj的概率。

pkij(t)=⎧⎩⎨⎪⎪[τij(t)]α∗[ηij(t)]β∑s∈Jk(i)[τis(t)]α∗[ηis(t)]β0j∈Jk(i)j∉Jk(i)

其中

Jk(i)=[1,2,3,...,n]−tabuk 表示蚂蚁

k 下一步允许选择的城市。当所有

n 个城市都在禁忌表中后,则蚂蚁

k 完成了一次周游,其所走过的路径

tabuk 是一个可行解。

ηij=1/dij 表示蚂蚁从城市

ci 转移到城市

cj 的期望程度。

α和β 分别分别表示信息素和其的相对重要程度。

2.2 所有蚂蚁查找完一次周游路径。

3. 更新信息素

τij(t+1)=(1−ρ)∗τij(t)+Δτij

Δτij=∑mk=1Δτkij

Δτkij={QLk0若蚂蚁k本次周游经过边lij否则

其中,

ρ(0

1−ρ 表示信息素的持久系数。

Δτkij 表示第

k 只蚂蚁在本次迭代中留在边

lij 上的信息素。

Q 为正常数,

Lk 表示第

k 只蚂蚁在本次周游中所经过的路径的长度。

4. 是否符合终止条件(迭代次数),若不满足,则清空禁忌表(保留第一个值),保留信息素。返回第2步。

Δτkij 的另外几种形式。

Δτkij=⎧⎩⎨Qdij0若蚂蚁k本次周游经过边lij否则

Δτkij={Q0若蚂蚁k本次周游经过边lij否则

包括上面那种,分别称为

ant−cycle;ant−quantity;ant−density .信息素与目标函数息息相关,其中

Δτij 表征了代价的大小。

蚁群算法的优缺点:

1. 蚁群算法是一种自组织算法,基于简单规则(多样性和正反馈规则,前者表现创造力,后者是学习强化能力)。

2. 并行性。

3.

正反馈,引导系统向着最优解方向进化。

4. 对初始路线要求不高。

5. 参数初始选择原则暂无理论支持。

6. 搜索时间较长。

7. 会陷入局部解,停滞现象。

免疫算法

免疫算法是改进了遗传算法的退化问题,因为遗传算法的交叉和变异算子是固定的。

小结

仿生学。

应用广泛。

初始集为解集合,而不是单个解。

复杂系统,由简单规则支配。

(群体智能领域,自组织:组织力的获得来自系统内部,在没有外界作用下使得系统熵减小的过程,即系统从无序到有序的变化过程。)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值