新颖性搜索(Novelty Search,NS)算法详解与实现

  • 基于目标的进化算法的缺点
  • 新颖性搜索与自然进化
  • 新颖性指标
  • 算法描述
  • 新颖性搜索算法实践

基于目标的进化算法的缺点

大多数机器学习方法(包括进化算法)都基于目标函数的优化进行训练。优化目标函数的方法的重点是,提高求解器性能的最佳方法是对接近目标的行为给予奖励。在大多数进化算法中,与目标的接近程度由求解器的适应度来衡量。个体性能的度量标准由适应度函数定义,适应度函数是生物体适应其环境的进化压力,适应度最高的个体更适合其环境,并且最适合于寻找解决方案。
虽然适应度函数优化方法在许多简单情况下效果很好,但对于更复杂的任务,它常常陷入局部最优陷阱。收敛到局部最优值意味着在适应度函数优化过程中,搜索空间中没有局部步长可以提供任何改进。传统的遗传算法使用变异和孤岛机制来跳出这种局部最优。但是,它并不总是能解决局部最优问题,或者找到成功的解需要过长时间。
许多现实世界中的问题都具有这种欺骗性的适应度函数态势,无法通过仅基于测量当前解与目标的接近程度的优化过程来解决这些问题。

新颖性搜索与自然进化

通过研究自然选择在物理世界中的工作方式,可以看到进化多样性背后的推动力是对新颖性的追求。换句话说,任何正在进化的物种都可以通过发现新的行为模式而获得优于其竞争对手的进化优势。这使他们可以更有效地利用环境。自然进化没有明确的目标,它通过奖励对新行为的探索和开发来拓宽解决方案的搜索空间。这种新颖性可以看作是自然世界中隐藏的创造力,它可以使进化进一步阐述更为复杂的行为和生物结构。
从自然进化中汲取灵感,Joel Lehman提出了一种针对人工进化过程的搜索优化新方法,称为新颖性搜索。使用这种方法,没有定义特定的适应度函数或将其用于解决方案搜索;相反,每个发现的解决方案的新颖性都会在神经进化过程中得到直接奖励。因此,所发现的解决方案的新颖性将神经进化引导至最终目标。这种方法可以独立于适应度压力来利用进化的创造力,以使解适合特定的问题场景。
新奇搜索的有效性可以通过迷宫导航实验来证明,其中基于目标的搜索比新颖性搜索要花更多的步骤(代际)来找到迷宫的解决方案。

新颖性指标

新颖性搜索方法采用新颖性度量标准来跟踪每个新个体的行为的唯一性。也就是说,新颖性度量标准是对新生物与行为空间中其他种群之间的距离的度量。有效的新颖性度量实现应允许我们在行为空间的任何点计算稀疏度。任何具有更密集访问点群集的区域都不太新颖,并且产生的进化奖励也更少。
在一个点上最简单的稀疏度量是在行为空间中到该点的k个最近邻居的平均距离。当此距离高时,兴趣点在稀疏区域。同时,较密集的区域以较低的距离值标记。因此,点xxx处的稀疏度ρρρ由以下公式给出:
ρ(x)=1k∑i=0kdist(x,ui)ρ(x)=\frac1k\sum_{i=0}^kdist(x,u_i)ρ(x)=k1​i=0∑k​dist(x,ui​)
这里,μμμ是xxx的第iii个最接近的邻居,由距离度量dist(x,ui)dist(x,u_i)dist(x,ui​)计算得出。距离度量是两个个体之间行为差异的特定领域度量。
稀疏区域的候选个体获得较高的新颖性分数。当该分数超过某个最小阈值时,该位置上的个体将被添加到性能最佳的档案(archive)中,该档案表征了行为空间中先前解的分布。当前这一代物种与档案一起定义了搜索的方向和当前进度。因此,通过最大化新颖性度量,搜索的梯度将针对新的行为,而没有任何明确的目标。但是,新颖性搜索仍然由有意义的信息驱动,因为探索新行为需要全面利用搜索域。

算法描述


新颖性搜索优化方法允许进化过程在任何具有欺骗性局部最优解的空间中搜索解决方案并找到最佳解决方案。使用这种方法,当物种被迫不会收敛于特定的小生境解(局部最优),同时不得不探索整个解空间时,将有可能实现发散进化。尽管它采用违反直觉的方法,但是它似乎完全忽略了搜索过程中的显式目标,是一种非常有效的搜索优化方法。在大多数情况下,它可以比传统的基于目标的搜索(这种搜索以距离最终解的距离来衡量适应度)更快地找到最终解决方案。

新颖性搜索算法实践

利用NEAT-python库实现新颖性搜索算法解决迷宫导航问题,代码实现链接。

新颖性搜索(Novelty Search,NS)算法详解与实现相关推荐

  1. 深度优先搜索(DFS)与广度优先搜索(BFS)算法详解

    深度优先搜索(DFS)与广度优先搜索(BFS)详解 1.广度优先搜索算法 1.1.前言 和树的遍历类似,图的遍历也是从图中某点出发,然后按照某种方法对图中所有顶点进行访问,且仅访问一次. 但是图的遍历 ...

  2. [搜索]波特词干(Porter Streamming)提取算法详解(2)

     接[搜索]波特词干(Porter Streamming)提取算法详解(1), http://blog.csdn.net/zhanghaiyang9999/article/details/4162 ...

  3. [搜索]波特词干(Porter Streamming)提取算法详解(3)

     接上 [搜索]波特词干(Porter Streamming)提取算法详解(2) 下面分为5大步骤来使用前面提到的替换条件来进行词干提取. 左边是规则,右边是提取成功或者失败的例子(用小写字母表示 ...

  4. FloodFill算法详解及应用

    FloodFill算法详解及应用 啥是 FloodFill 算法呢, 最直接的一个应用就是「颜色填充」,就是 Windows 绘画本中那个小油漆桶的标志,可以把一块被圈起来的区域全部染色. 这种算法思 ...

  5. python中import re_Python3中正则模块re.compile、re.match及re.search函数用法详解

    本文实例讲述了Python3中正则模块re.compile.re.match及re.search函数用法.分享给大家供大家参考,具体如下: re模块 re.compile.re.match. re.s ...

  6. 寻路算法——A*算法详解并附带实现代码

    一.前言 前天看了一篇博客介绍A*算法,按照自己的理解记录一下A*算法. 二.应用场景 一副地图中有坐标A和B,需要找到一条路径(如果有的话)能从A到B,地图中可能有河流或墙壁不能直接穿过,我们需要怎 ...

  7. 粒子群算法(PSO)——算法详解(一)

    PSO的算法配置 粒子的速度更新公式:vi(t+1)=vi(t)+c1⋅r1(t)⋅[yi(t)−xi(t)]+c2⋅r2(t)⋅[y^i(t)−xi(t)]\mathbf v_{i}(t+1)=\m ...

  8. 目标检测 RCNN算法详解

    原文:http://blog.csdn.net/shenxiaolu1984/article/details/51066975 [目标检测]RCNN算法详解 Girshick, Ross, et al ...

  9. 【目标检测】Faster RCNN算法详解

    转载自:http://blog.csdn.net/shenxiaolu1984/article/details/51152614 Ren, Shaoqing, et al. "Faster ...

最新文章

  1. c++高级编程(第4版).pdf_《C++并发编程实战第2版》第四章:同步并发操作(1/4)
  2. 苹果发布新手机,会有多少国人支持呢?
  3. 《大数据》期刊“农业大数据”专刊征文通知
  4. 【Docker】Docker 启动prometheus报错 parsing YAML file /etc/prometheus/prometheus.yml: yaml: unmarshal
  5. POJ1654 Area(多边形面积)
  6. 20 万台 QQ 服务器全面上云!
  7. 漫画:去掉一个数,如何让剩余的数乘积最大?
  8. 大觉寺到鹫峰线路_大觉寺到鹫峰怎么走
  9. 最大公约数之辗转相除法
  10. map+shuffle+reducer
  11. 【论文笔记】From Facial Parts Responses to Face Detection: A Deep Learning Approach
  12. 2018-08-14云兴维智电话面试总结
  13. bandwagon支付宝支付教程
  14. 将计算机放在什么地方英语,怎么把电脑设置为英文版的系统
  15. D1net阅闻:Facebook上线求职功能,以挑战LinedIn
  16. Java POI SXSSFWorkbook 读取模板,输出
  17. 看漫画学python下载_用 Python 下载漫画
  18. 电化学方法激励电压波形
  19. 传统行业程序员的深度焦虑?——快来互联网行业吧!
  20. MybatisPlus之代码生成器(有此一篇即可)

热门文章

  1. JavaScript初阶(十)---------- 数组
  2. DWR第四篇之对象传参
  3. Mvc6 错误Microsoft.AspNet.Http.Features.IRequestIdentifierFeature
  4. 80后开网店卖故事:1500多位为感觉而埋单
  5. [转载] python判断字符串中包含某个字符串_干货分享| Python中最常用的字符串方法
  6. Vue.js 学习笔记 六 v-model 双向绑定数据
  7. memcache连接是否有用户名和密码的设置
  8. maven项目在eclipse中debug
  9. java使用xsd校验xml样例
  10. ASP.NET MVC Url中参数过长引发的问题