Deep Reinforcement Learning in Keras 项目介绍
Deep-RL-Keras 是一个用于深度强化学习算法的模块化项目,该项目主要基于 Keras 框架实现。这些算法在实践中被广泛应用,并被成功部署在各种复杂环境中,如 Atari 游戏。这篇文章将详细介绍其实现的各个强化学习算法、使用方法以及相关工具。
项目包含的算法
以下是 Deep-RL-Keras 所支持的几种流行的深度强化学习算法:
-
同步 N 步优势 Actor Critic (A2C): 该算法是无模型的、离策略方法,通过一个评估器(Critic)作为价值函数近似器,和一个行为策略器(Actor)作为策略函数近似器进行操作。
-
异步 N 步优势 Actor Critic (A3C): 在保持 A2C 算法框架的基础上,A3C 引入了异步权重更新的机制,使计算速度大大提升。
-
深度确定性策略梯度 (DDPG): 专为连续动作空间设计的算法,通过借鉴经验回放和目标网络来减少方差和增加稳定性。
-
双重深度 Q 网络 (DDQN): 该算法利用一个双网络机制来缓解 Q 值估计的过高偏差。
-
带优先级体验回放的双重深度 Q 网络 (DDQN + PER): 增强版的 DDQN,采用优先级体验回放,引入重要性采样机制。
-
决斗双重深度 Q 网络 (Dueling DDQN): 将状态值和与状态相关的优势函数结合到中间层中,以更好地分离动作学习,从而提高效果。
快速开始
为了运行这些算法,用户需要确保安装特定版本的 Keras 和 OpenAI 的 gym 库。可以通过以下命令安装:
$ pip install gym keras==2.1.6
Actor-Critic 算法
N 步优势 Actor Critic (A2C)
A2C 使用奖励折现的 N 步公式,以及熵正则化项鼓励探索。尽管其有效率,但计算时间较长,使其在 Atari 游戏上应用受到限制。
N 步异步优势 Actor Critic (A3C)
A3C 使用多线程进行异步梯度上升,从而允许更快的计算。A3C 在 Atari Breakout 游戏环境中表现出色。
深度 Q 学习算法
双重深度 Q 网络 (DDQN)
DDQN 算法通过使用第二个网络来减少 Q 值的估计过高问题,增强稳定性。
带优先级体验回放的 DDQN (DDQN + PER)
通过对操作的误差进行排名,PER 机制有助于以重要性采样的方式进行记忆回放。
决斗 DDQN
决斗版 DQN 通过状态值和优势估计的分离,提高了学习效率。
模型可视化与监控
所有模型在训练完成后会保存在特定文件夹下。用户可利用 load_and_run.py
脚本可视化它们。DQN 模型需要指定 --model_path
,而 Actor-Critic 模型则需指定 --actor_path
和 --critic_path
。
使用 Tensorboard 可以在训练过程中监视 Agent 的得分。训练时,会生成一个与环境名称匹配的日志文件夹。通过运行以下命令可以实时观察训练进度:
$ tensorboard --logdir=A2C/tensorboard_CartPole-v1/
结果绘图
训练时使用 --gather_stats
参数,可以生成得分日志文件。之后,使用 Plotly,可以将平均奖励进行可视化。
pip3 install plotly
# 设定 Plotly 凭据
import plotly
plotly.tools.set_credentials_file(username='<your_username>', api_key='<your_key>')
# 绘制结果
python3 utils/plot_results.py <path_to_your_log_file>
鸣谢
项目中使用的各种工具及类受到以下开源项目的影响和启发:
- Atari 环境辅助类模板由 @ShanHaoYu 提供
- 其他工具来自 OpenAI 和 @jaara 等
通过这些高效的算法与工具,Deep-RL-Keras 项目为深度强化学习算法的开发与测试提供了一个强大而灵活的平台。