优步公开轻量级库EvoGrad:基于梯度的进化算法
2019年07月24日 由 张江 发表
389089
0
可实现快速灵活实验的工具会实现民主化并加速机器学习研究。例如,开发用于自动区分的库,Theano,Caffe,TensorFlow和PyTorch,有助于催化机器学习研究,实现梯度下降训练,而避免手动计算带来的繁琐工作。
到目前为止,自动微分工具尚未对进化计算产生太大影响。原因是大多数进化算法都是无梯度的:它们不遵循任何显式的数学梯度,而是通过生成和测试启发式进行。换句话说,它们创造新的变体,测试它们,并保持最佳状态。
然而,最近的深度强化学习进化算法研究强调了一类特定的进化算法如何从自动微分中受益。OpenAI的工作证明,自然进化策略(NES)的一种形式具有大规模可扩展性,并且与现代深度强化学习算法相竞争。但他们在原型方面缺乏针对进化算法和NES的工具。
为了更容易地对类似NES的算法进行原型化,Uber AI研究人员构建了EvoGrad,这是一个Python库,使研究人员能够通过随机变量的期望(和嵌套期望)进行区分,这是估计NES梯度的关键。这个想法是为了更快速地探索NES的变体,类似于TensorFlow如何实现深度学习研究。
除了EvoGrad之外,还有Evolvability ES,这是一种由Uber AI研究人员开发的基于NES的新的元学习算法,它促成了EvoGrad的创建。
自然进化策略
传统的进化算法使一个总体(并行探索的潜在解决方案的进化集合)置于启发式的适者生存竞争之下。在适应度函数上得分较高的个体在下一代中会获得更多的后代,相比之下,得分较低的个体被排除在总体之外。
NES对进化提出了正式的概率结构。NES没有将总体看作是有限的个体列表,而是将总体抽象为搜索空间上的概率分布,通常是围绕一组参数的高斯分布。
然后可以从这个分布中采样个体(实际上是通过在总体的中心添加高斯扰动)并对其进行评估。NES的目标是迭代更新这个群体分布,使从群体中抽取的个体的平均适应度最大化。
有了足够多的样本,该算法可以保证梯度跟踪,以类似于随机梯度下降的方式,即使问题进化所解决的可能是不可微分的。
重要的是,这个梯度估计的符号形式必须分别表示群体分布的不同的选择和优化度量的总体是什么。手动进行这样的推导可能是乏味的,并且需要特定的数学知识,这减慢了NES研究的速度。
EvoGrad库
在这个项目中,团队使用PyTorch作为后端,创建了一个名为EvoGrad的简单Python库,用于原型化类似NES的算法。EvoGrad提供的主要特征是能够区分随机变量的期望(以及嵌套期望,其他人在随机计算图上的工作),这是估计NES梯度的关键(因为NES旨在最大化群体分布的预期适应度)。
我们创建了这个库,同时开发了一种名为evolvability ES的新形式的NES ,这种形式被推动为一个展现出最大化多样化行为的群体。这个想法是这样一个群体可能是进化适应的仓库,很容易适应新的情况。这种模型通常在元学习中很有用。
与EvoGrad一起,研究人员详细介绍了evolvability ES,这是他们在本月早些时候在布拉格举行的遗传与进化计算会议上接受的一篇论文中提出的一种技术。它是一种新的,高效的,可扩展的算法,可直接优化可扩展性,适用于NES的修改版本,最大限度地提高单个进化群体中行为的多样性。
在一个实验中,evolvability ES设法为一个数字四足机器人演化了一组人工智能控制器,该机器人编码了不同的行走行为(即行走在各个不同方向的行为)。此外,群体的行为变得更适合随着时间的推移行走。
“进化计算(受生物进化启发的算法研究)的长期目标是创建能够生成可演化解决方案的算法,换言之,能够快速适应新挑战的解决方案,”该团队写道,“我们相信这是一个令人兴奋的并且是意想不到的结果,未来通过EvoGrad和其他库开展的进化ES研究,可以进一步探索更复杂的多模式群体分布和更具表现力的遗传编码的组合。”
示例:
eng.uber.com/evograd
EvoGrad:
github.com/uber-research/EvoGrad
论文:
arxiv.org/abs/1907.06077