在 Asynchronous Methods for Deep Reinforcement Learning 一文中,将异步的强化学习框架套给了四种强化学习算法,我们主要实现了最后一种 Asynchronous Advantage Actor-Critic (A3C) ,用来解决连续行为空间的问题。直接看所有代码
整体框架:
1 | # 全局网络 |
在 Asynchronous Methods for Deep Reinforcement Learning 一文中,将异步的强化学习框架套给了四种强化学习算法,我们主要实现了最后一种 Asynchronous Advantage Actor-Critic (A3C) ,用来解决连续行为空间的问题。直接看所有代码
整体框架:
1 | # 全局网络 |
根据 Deep Deterministic Policy Gradient ,尽管 DPPG 算法的思路简单,就是将 DPG 与 DQN 的几个特性结合起来,但因为设置了4个神经网络,之间还因求导链式法则而相互关联,所以程序设计稍微复杂一点。直接看所有代码。
整体框架:
1 | class Memory(object): |
在 DeepMind 的 Asynchronous Methods for Deep Reinforcement Learning 一文中,介绍了另一种简单的轻量级深度强化学习框架——异步地进行深度神经网络梯度下降。该框架可以适用于许多强化学习算法,论文中将框架套在了四种标准强化学习算法上,分别是 one-step Q-Learning, one-step Sarsa, n-step Q-Learning 和 Advantage Actor-Critic ,都取得了不错的稳定效果。其中最后一个 Asynchronous Advantage Actor-Critic (A3C) 算法更是有着最好的性能表现,在多核 CPU 上学习比在 GPU 上学习的时间减少了一半,本文也会重点关注 A3C 算法。
Deep Deterministic Policy Gradient (DDPG) 算法出自论文 Continuous control with deep reinforcement learning ,该算法的思想很简单,就是将 确定性策略梯度 Deterministic Policy Gradient 与 Deep Q-Network 两个算法结合起来,解决了 DQN 只能运用在离散行为空间上的局限,同时借鉴 DQN 的神经网络、经验回放和设置 target 网络使 DPG 中的 Actor-Critic 算法更容易收敛
在 Deterministic Policy Gradient Algorithms 一文中,DeepMind 在原有随机策略梯度 (Stochastic Policy Gradient) 算法的基础上介绍了确定性策略梯度算法 (Deterministic Policy Gradient Algorithms DPG) 来解决连续性决策问题,是之后 Deep DPG (DDPG) 算法的基础。
传统的策略梯度算法以概率形式 \(\pi_\theta(a|s) = \mathbb{P}[a|s; \theta]\) 来表示一个策略,以此来随机的选择行为。但 DPG 用一种确定性的策略形式 \(a=\mu_\theta(s)\) 。
DPG 有着比 PG 更简单的形式:行为价值函数的期望,这也使得 DPG 比 PG 更加有效,同时在高维度行为空间中也比 PG 表现得更加好。
在 策略梯度 Policy Gradient 一文的理论基础上,实践了一下基于离散行为 Softmax Policy 与基于连续行为 Gaussian Policy 的 Actor-Critic 算法。直接看所有代码
程序框架很简单,就为 Actor 和 Critic 两个类:
1 | class Actor(object): |
之前的所有方法都是基于值函数、行为价值函数,求出 \(V^\pi(s)\) 或 \(Q^\pi(s,a)\) 或是他们的近似函数来映射出最优策略。而基于策略的强化学习方法 (Policy-Based Reinforcement Learning) 则直接将策略参数化,即 \(\pi_\theta(s,a)=\mathbb{P}[a|s,\theta]\) ,利用参数化的线性、非线性函数来表示策略,寻找最优策略,而这个最优策略的搜索即是要将某个目标函数最大化。
之前遇到的优化问题,在 Tensorflow 中,都是直接用 Optimizer 的 minimize
方法将损失函数最小化即可,但最近在写 DDPG Actor 的代码时,无法直接写出一个代价函数进行最小化,而是需要用到 Critic 的梯度利用链式法则合并出代价函数的梯度来进行最小化,所以借此机会简单研究了下 Tensorflow 的梯度计算。