1 进化算法

在学习最优模型参数的时候,梯度下降并不是唯一的选择。在我们不知道目标函数的精确解析或者不能直接计算梯度的情况下,进化算法是有效的。

进化算法的灵感来源于自然选择,具有有利于生存的特征的个体可以世代生存,并将好的特性传给下一代;具有不利于生存的特正的个体则会被不断淘汰,最后减少甚至消失。进化是在选择过程中逐渐发生的,进化使得种群可以更好地适应环境。

下面这张图可以很好地解释进化算法的想法,一开始岛上有数量相等的白老鼠和黑老鼠,但是因为黑老鼠和土地的颜色相近,所以老鼠的天敌不易于发现这一种类的老鼠。而白老鼠由于过于显眼,在不断地被吃掉的过程中,慢慢地被淘汰了。久而久之,最后剩的多的就是黑老鼠。

进化算法旨在优化无法直接建模的函数,核心是采样和更新。它在在每一代估计基因型的实值,然后保留最佳的基因型,其他的基因型被丢弃,精英基因被保留并产生。

如下图所示,虚线圆是初始的正态分布,星星表示采样生成的后代,蓝色的星星表示排序后被选中的后代,红色表示没有选中的。那么虚线椭圆就是新一代的概率采样分布。

进化算法作为一种通用的优化方式,可以归纳为:

1,假设我们想优化一个函数f(x),但f(x)的梯度难以求解。只能得到在特定x下f(x)的确定值。

2,我们认为随机变量x的概率分布p(θ,x)是函数f(x)优化问题的一个较优的解,θ是分布p(θ,x)的参数。我们最终的目标是找到θ的最优配置。

3,在给定分布形式(例如,高斯分布)的情况下,参数 θ 包含了最优解的知识,在一代与一代间进行迭代更新。

4,

简单高斯进化策略

即 在分布中随机采样

4,

5,重复(2)-(4)步直到结果足够好

协方差自适应进化策略CMA-ES

3.1 基本原理

协方差矩阵自适应演化策略(CMA-ES)通过使用协方差矩阵 C 跟踪分布上得到的样本两两之间的依赖关系,解决了上述这一问题。新的分布参数变为了:

3.1.1 协方差矩阵性质

1,始终都是对角阵

2,始终都是半正定矩阵

3,所有的特征值为非负实数

4,所有的特征向量都是正交的

5,特征向量可以组成一个Rn的标准正交基

3.1.2 本节涉及符号及其意义

是在分布上随机采样;是在分布上随机采样。

是第t代的平均值;是第t代采样时候的步长; 是第t代的协方差矩阵。

 进行特征值分解的结果(见3.1.1)。

 是第t代步长σ和协方差矩阵C的进化路径

 分别是μ,σ,pc,C的两种路径(后文会涉及)的学习率

是步长σ更新时候的阻尼系数

3.1.3 更新均值

μ的学习率为1的时候,就是

3.1.4 控制步长

 ~N(0,I) (第二行式子是因为每一个yi都是N(0,C)中采样的)

有了演化路径之后,我们就可以根据演化路径来更新我们的σ进化路径了

注:这里公式有一处笔误,第二行根号里面第一项为

注:这里调整步长的思想来源于CSA-ES(累积步长调整策略),这种思路使用多代来记录同一条路径,即进化路径。演化路径是连续几代路径的总和,在每次迭代中对多个精英子代的搜索方向做加权平均,相反分量相互抵消,相同分量进行叠加。如果成功的步骤都朝着相同的方向发展累加起来,那么该方向的发展路径就会相对较长,我们可以用一个较大的步长来代替该方向的总进化距离;反之,则需要简短步长,即:

3.1.4.1 Polyak算法回忆

3.1.5 调整协方差矩阵

看起来是可以的,但是只有当我们选择出的种群足够大,上述估计才可靠。然而,在每一代中,我们希望使用较小的样本种群进行快速的迭代。这就是 CMA-ES 发明了一种更加可靠,但同时也更加复杂的方式去更新 C 的原因。它包含两种独立的演化路径:

注:n是每个样本的维度,λ是每一代取的精英样本数

3.2 总体CMA-ES

这是一篇论文里面的CMA-ES的总体方案;第一步取值;第二步挑精英值;第三步,更新均值μ;第四步更新 步长σ需要的演化路径;第五步更新步长;第六步更新path2 需要的C的演化路径;第七步我个人觉得不需要?(同时在另一篇论文“基于改进的CMA_ES的仿真足球机器人的行走优化”里面,也是直接第八步的,这个欢迎讨论哈!);第八步更新协方差矩阵

CMA-ES 算法初探相关推荐

  1. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

  2. c语言将十进制转化为二进制算法_base64算法初探即逆向分析

    算法分析 虽说base64严格意义上来说并不能算是加密算法,但的确应用方面来说还算是比较广,在CTF的算法逆向中Base系列算是也比较常见的,萌新刚开始学算法,就以base64为例,对该算法进行一个简 ...

  3. 车间调度丨粒子群算法初探:以算例MK01为例

    车间调度系列文章: 1.车间调度的编码.解码,调度方案可视化的探讨 2.多目标优化:浅谈pareto寻优和非支配排序遗传算法-NSGAII的非支配排序及拥挤度 3.柔性车间调度问题:以算例MK01初探 ...

  4. EM算法初探——公式推导和三硬币模型解析

    EM算法初探--公式推导和三硬币模型解析 转载借鉴:http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html#!comments ...

  5. python实现cma—se算法_CMA算法的仿真结果

    正 文 CMA算法的仿真结果(2006/6/16 09:24) 今天完成了CMA算法的仿真,感觉迭代步长对算法的收敛有很大的影响.由于CMA算法是一种盲信号处理方法,所以在盲均衡,盲多用户检测,盲信号 ...

  6. Vue源码终笔-VNode更新与diff算法初探

    写完这个就差不多了,准备干新项目了. 确实挺不擅长写东西,感觉都是罗列代码写点注释的感觉,这篇就简单阐述一下数据变动时DOM是如何更新的,主要讲解下其中的diff算法. 先来个正常的html模板: & ...

  7. Hadoop准备篇之(一):Page Rank算法初探

    为什么会将Page Rank放在hadoop学习笔记里,是因为hadoop课程第一周就重点提到了Google当年三大论文(GFS, Map-Reduce和Big Table)以及hadoop思想的来源 ...

  8. 社区发现算法 - Fast Unfolding(Louvian)算法初探

    1. 社团划分 0x1:社区是什么 在社交网络中,用户相当于每一个点,用户之间通过互相的关注关系构成了整个网络的结构,在这样的网络中,有的用户之间的连接较为紧密,有的用户之间的连接关系较为稀疏,在这样 ...

  9. 数据挖掘领域十大经典算法初探

    博主说明: 1.原文献非最新文章,只是本人向来对算法比较敏感.感兴趣,便把原文细看了下, 翻译过程中,有参考一些网友翻译的文章,但个人认为,阐述皆不够精准,且都是泛泛而谈, 故此,做了此份翻译,希望, ...

最新文章

  1. 搜索引擎名字引发的思考
  2. 四说大数据时代“神话”:从大数据到深数据
  3. Java:集合for高级循环遍历
  4. linux bin目录误删,Linux下误删 /user/bin目录后的补救
  5. java 配置嵌套事务_Spring 事务嵌套的配置
  6. 安装Docker环境并下载TensorFlow镜像
  7. pyspark报错问题 Exception in thread main java.lang.UnsupportedClassVersionError 成功解决
  8. linux离线安装docker + docker-compose
  9. 网易云音乐ncm格式转换mp3格式工具
  10. u盘显示请插磁盘f_U盘插电脑上一直显示请插入磁盘是啥意思 - 卡饭网
  11. 几种不同格式的json数据及解析
  12. 李白:下终南山过斛斯山人宿置酒
  13. #import msxml3.dll 导致 LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  14. springboot 简单集成mybatis 及所遇到问题解决方法
  15. wine: /home/cpr/.wine is not owned by you
  16. 如何让计算机停止打印,电脑打印提示print Splooer停止无法使用怎么办
  17. 基于Excel的VDS记录数据文件查看及转换工具(转MDA格式)
  18. c语言中的return 0有什么用?
  19. 人活着就是为了在某一天死去--《遗愿清单》
  20. 第十二周上机实践项目 项目1-实现复数类中的运算符重载 (2)

热门文章

  1. OpenStack监控测量服务Ceilometer安装及 API说明
  2. 利用sendmail搭建邮件服务器
  3. Html.DropDownListFor练习(2)
  4. WatiN——Web自动化测试(三)【弹出窗口处理】
  5. tee 和 ree分别是什么意思?
  6. PAT甲级1113 Integer Set Partition:[C++题解]贪心
  7. IDEA打包成可执行的JAR包
  8. 栈的应用_DFS解迷宫问题
  9. java断点续传上传_java断点续传上传文件,突然关闭然后再上传文件为什么不是从之前上传的进度上传...
  10. python解析mht文件_php解析mht文件转换成html的方法