> For the complete documentation index, see [llms.txt](https://hujian.gitbook.io/deep-reinforcement-learning/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hujian.gitbook.io/deep-reinforcement-learning/fang-fa/jie-ji-you-xi/deep-ga.md).

# Deep GA

> [Deep Neuroevolution: Genetic Algorithms are a Competitive Alternative for Training Deep Neural Networks for Reinforcement Learning](https://arxiv.org/pdf/1712.06567.pdf)

深度人工神经网络（DNN）通过基于梯度的学习算法（即反向传播）进行常规训练。 进化策略（ES）可以与基于反向基础的算法（如Q-learning和策略梯度）相媲美，以解决深层强化学习（RL）问题。 然而，ES可以被认为是基于梯度的算法，因为它通过类似于梯度的有限差分近似的操作来形成随机梯度下降。 这提出了一个问题，即基于非梯度的进化算法是否可以在DNN尺度上发挥作用。在这里我们可以说明：我们使用简单的，无梯度，基于种群的遗传算法（GA）来演化DNN的权重，并且它可以解决硬的深RL问题，包括Atariand人形运动。 Deep GA成功地发展了具有超过四百万个自由参数的网络，这是最大的神经网络随着传统的进化算法而发展的。这些结果（1）扩展了我们对GA可以运作的规模的认识，（2）有趣的是，在某些情况下，跟随梯度不是优化性能的最佳选择，（3）立即可用于多种神经进化技术改进性能。我们通过展示将DNN与新颖性搜索结合，这种模式鼓励在具有欺骗性或稀疏回报函数的任务上进行探索，可以解决回报最大化算法(例如DQN、A3C、ES和遗传算法)的失败。此外，深度GA比ES、A3C和DQN更快(在一个桌面上训练Atari 4小时，或者在720个内核上训练Atari 1小时)，并且支持最先进的、高达10，000倍的紧凑编码技术。

## 方法

本文使用的遗传算法是非梯度的，仅使用突变和筛选获取更强的个体，这和前面的ES算法是截然不同的。

### 遗传算法

![](/files/-LaNIJS6w416D0BG0KxC)

### 新颖搜索

![](/files/-LaNIJS8KYoOHYQxxw66)

### 为什么GA比ES快？

由于以下两个主要原因，GA比ES更快：（1）对于每次生成，ES必须计算如何更新其神经网络参数向量 $$θ$$ 。 它是通过加权平均值来实现的，这些平均值是通过它们的大量伪后代（随机 $$θ$$ 扰动）的加权平均值。 这种平均操作对于大型神经网络和大量伪后代（后者需要健康的优化）来说是缓慢的，并且对于Deep GA来说不是必需的。 （2）ES要求虚拟批量规范化以在伪后代之间生成不同的策略，这对于准确的有限差分近似是必需的。 虚拟批次规范化需要参考批次的额外前向传递 - 在训练开始时选择的随机观察集 - 计算层规范化统计数据，然后以与批量标准化相同的方式使用。 我们发现随机GA参数扰动产生了足够多样的策略而没有虚拟批量归一化，从而避免了这些额外的前向传递通过网络。

### 群体编码方法

![](/files/-LaNIJSAVleo0HhY1u8n)

## 实验

![](/files/-LaNIJSCjD4lb3rIjn4z)
