基于PaddlePaddle下一代API Fluid复现了深度强化学习领域的DQN模型,在经典的Atari 游戏上复现了论文同等水平的指标,模型接收游戏的图像作为输入,采用端到端的模型直接预测下一步要执行的控制信号,本仓库一共包含以下3类模型:
- DQN模型: Human-level Control Through Deep Reinforcement Learning
- DoubleDQN模型: Deep Reinforcement Learning with Double Q-Learning
- DuelingDQN模型: Dueling Network Architectures for Deep Reinforcement Learning
请点击这里了解Atari游戏。
三个模型在训练过程中随着训练步数的变化,能得到的平均游戏奖励如下图所示(大概3小时每1百万步):
- python2.7
- gym
- tqdm
- opencv-python
- paddlepaddle-gpu>=1.0.0
- ale_python_interface
- 安装PaddlePaddle: 建议通过PaddlePaddle源码进行编译安装
- 下载其它依赖:
安装ale_python_interface可以参考这里
pip install -r requirement.txt pip install gym[atari]
# 使用GPU训练Pong游戏(默认使用DQN模型)
python train.py --rom ./rom_files/pong.bin --use_cuda
# 训练DoubleDQN模型
python train.py --rom ./rom_files/pong.bin --use_cuda --alg DoubleDQN
# 训练DuelingDQN模型
python train.py --rom ./rom_files/pong.bin --use_cuda --alg DuelingDQN
训练更多游戏,可以从这里下载游戏rom
# Play the game with saved model and calculate the average rewards
# 使用训练过程中保存的最好模型玩游戏,以及计算平均奖励(rewards)
python play.py --rom ./rom_files/pong.bin --use_cuda --model_path ./saved_model/DQN-pong
# 以可视化的形式来玩游戏
python play.py --rom ./rom_files/pong.bin --use_cuda --model_path ./saved_model/DQN-pong --viz 0.01
这里是Pong和Breakout游戏训练好的模型,可以直接用来测试。