1. A3C 概念
A3C 大部分时候泛指的是一个轻型的深度强化学习框架,用于深度神经网络控制器的异步优化。完整名称是:Asynchronous Advantage Actor-Critic(A3C),就是将异步训练框架和 Advantage Actor-Critic 方法结合的产物。
过去很多观点认为简单的在线强化学习算法与神经网络的结合通常不稳定,因为在线强化学习连续观察的数据都是相互关联的,因此很多学者利用经验回放池的方法来将连续观察的数据关联性打破(例如 DQN 和 TRPO 算法都利用了经验回放池)。但是这种方法的限制在于只能运用到离线的强化学习方法中。经验回放池有以下缺点:
- 使用了更多的内存和计算力。
- 需要离线强化学习算法,并且能够利用旧策略产生的数据完成更新。
为了解决经验回放池的限制,本文提出异步训练框架的概念,在多个并行的环境中训练多个智能体。该框架可以提升大部分强化学习的应用范围,无论是在线强化学习方法还是离线强化学习方法都可以适用这个框架。这种框架可以大大减少所需要的计算资源,不再依赖于 GPU 集群,实现在单台多核的计算机上更快训练。
2. 相关知识
2.1 value-based model-free
基于价值的无模型强化学习方法最典型的就是 Q-learning 方法,旨在于逼近最优动作值函数:$Q^*(s,a) \approx Q(s, a, \theta)$。目标更新公式可以表示为:
其中 $s’$ 表示 $s$ 的下一状态。这种更新方法称为“one-step”方法,因为只利用了一步回报 $r + \gamma max_{a’}Q(s’,a’;\theta_i)$。这种更新方法可能比较缓慢,因为只有一个状态动作对 $(s,a)$ 是通过奖励 $r$ 直接影响。可以采用 “n-step”方法,将 $r + \gamma max_{a’}Q(s’,a’;\theta_i)$ 替换为 $r_t + \gamma r_{t+1} + \cdots + \gamma^{n-1}r_{t+n-1}+max_a \gamma^n Q(s_{t+n}, a)$。
2.2 policy-based model-free
基于策略的无模型强化学习方法最典型的就是 REINFORCE 系列方法。标准的 REINFORCE 方法通过更新 $\nabla_{\theta}log\pi(a_t|s_t;\theta)$ 来实现 $\nabla_{\theta} \mathbb{E}[R_t]$ 的无偏估计。为了降低估计的方差,同时保持无偏性,通常减去状态函数 $b_t(s_t)$,因此更新方式变成:$\nabla_{\theta}log\pi(a_t|s_t;\theta)(R_t-b_t(s_t))$。
当利用一个估计的状态函数进行逼近 $b_t(s_t) \approx V^\pi(s_t)$,此时 $R_t - b_t$ 可以视为动作 $a_t$ 在状态 $s_t$ 中的优势函数:$A(a_t,s_t) = Q(a_t,s_t)-V(s_t)$。这种方法可以被视为是 actor-critic 架构,本文也称为 advantage actor-critic。
3. 算法框架
使用异步训练框架的目的是让深度神经网络策略的训练变得稳定,但是不需要借助于经验回放池。
- 首先将每个异步的学习环境放在不同的进程中。
- 同时对于不同的学习者,可以采用不同的探索策略来扩大差异。
- 最后采用全局的变化来对参数进行更新。
接下来展示将异步训练框架和 one-step Q-learning 结合起来的算法:
注意每个线程都有自己的环境副本,并在每一步都计算损失的梯度。同时在线网络参数 $\theta$ 和目标网络参数 $\theta^-$ 是所有线程共享的。另外并不是每一步都利用梯度去更新参数,而是先计算累计梯度,只有当过了 $I_{AsyncUpdate}$ 个时间步数才利用 $d\theta$ 更新 $\theta$ 。这样可以避免一个线程的更新迅速覆盖另一个线程的更新,提供计算效率和数据效率间的一个平衡。
接下来展示将异步训练框架和 n-step Q-learning 结合起来的算法:
这种 n-step 方法是往前计算 n 个回报,与常见的后向观点相反(例如 eligibility traces 技术,翻译为“资格迹”)。为了进行一次更新,需要利用探索策略往前进行 $t_{max}$ 步,然后对于这段探索过程中遇见的每个“状态动作对”,都计算梯度。很明显,倒数第一步所用的是 “one-step”更新,倒数第二步所用的是“two-step”更新,而最后一步则是 “n-step”更新。将这些梯度全部累计起来,在更新参数的时候一次性更新。
注意到 n-step 方法没有参数延迟更新时间 $I_{AsyncUpdate}$ ,这可能是因为 n-step 本身就提高了数据利用效率,不必再追求计算效率和数据效率之间的平衡。
最后展示的是将异步训练框架和 advantage actor-critic 结合起来的方法(也就是 A3C 方法):
A3C 方法维护两个网络:$\pi(a_t|s_t;\theta)$ 和 $V(s_t;\theta_v)$。与 n-step Q-learning 类似,也是往前进行 $t_{max}$ 步,然后再对参数进行更新。更新方式可以表示为:$\nabla_{\theta’} log \pi(a_t|s_t;\theta’)A(s_t,a_t;\theta,\theta_v)$,其中 $A(s_t,a_t;\theta,\theta_v)$ 就是对优势函数的估计值:$\sum_{i=0}^{k-1}\gamma^i r_{t+i} + \gamma^k V(s_{t+k};\theta_v) - V(s_t;\theta_v)$,其中 $k$ 值随不同的状态动作对而不同,上限值就是 $t_{max}$ 。
虽然 $\pi$ 和 $V$ 网络所用的参数表示不同,但实际运用时,通常会共享部分参数。例如 $pi(a_t|s_t;\theta)$ 输出层使用 softmax 层,$V(s_t;\theta_v)$ 输出层使用全连接层,但是其他非输出层的参数则共享。
另外在目标策略的函数中加入熵正则化项,可以避免过早收敛到非最优策略,尤其对于需要分层的行为。可以写成:$\nabla_{\theta’} log \pi(a_t|s_t;\theta’)(R_t-V(s_t;\theta_v))+\beta \nabla_{\theta’} H(\pi(s_t;\theta’))$,其中 $H$ 表示策略的熵,超参数 $\beta$ 控制熵正则项的强度。
4. 工程上的设置
4.1 Atari Game
通过搜索方法在六个 Atari 游戏中调整超参数,然后在全部游戏的训练中固定同一套超参数。网络结构和 DQN 的相似,不过在最后一层隐藏层再连接 256 个 LSTM 单元。
4.2 MuJoco Physics Simulator
输入可以分成两种:一种是机器人自身状态,一种是 RGB 像素。
机器人自身状态包括:关节位置,速度,目标位置。
没有在策略更新或状态更新中使用 bootstrpping 技术,而是将一个 episode 作为一次更新。
[1] Mnih, V., Badia, A. P., Mirza, L., Graves, A., Harley, T., Lillicrap, T. P., … Kavukcuoglu, K. (2016). Asynchronous methods for deep reinforcement learning. 33rd International Conference on Machine Learning, ICML 2016, 4, 2850–2869.