README_cn.md 2.2 KB
Newer Older
Z
zenghsh3 已提交
1 2
# 基于PaddlePaddle的Fluid版本复现DQN, DoubleDQN, DuelingDQN三个模型
基于PaddlePaddle下一代API Fluid复现了深度强化学习领域的DQN模型,在经典的Atari 游戏上复现了论文同等水平的指标,模型接收游戏的图像作为输入,采用端到端的模型直接预测下一步要执行的控制信号,本仓库一共包含以下3类模型。
Z
zenghsh3 已提交
3
+ DQN模型:
Z
zenghsh3 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16
[Human-level Control Through Deep Reinforcement Learning](http://www.nature.com/nature/journal/v518/n7540/full/nature14236.html)
+ DoubleDQN模型:
[Deep Reinforcement Learning with Double Q-Learning](https://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/viewPaper/12389)
+ DuelingDQN模型:
[Dueling Network Architectures for Deep Reinforcement Learning](http://proceedings.mlr.press/v48/wangf16.html)

# 模型效果:Atari游戏表现
## [Atari游戏介绍](https://gym.openai.com/envs/#atari)

+ Pong游戏训练结果
![DQN result](assets/dqn.png)

# 使用教程
Z
zenghsh3 已提交
17
### 依赖:
Z
zenghsh3 已提交
18 19 20 21 22 23
+ python2.7
+ gym
+ tqdm
+ opencv-python
+ paddlepaddle-gpu>=0.12.0
+ ale_python_interface
Z
zenghsh3 已提交
24

Z
zenghsh3 已提交
25
### 下载依赖:
Z
zenghsh3 已提交
26 27 28 29 30 31 32 33
+ 安装PaddlePaddle:
    建议通过PaddlePaddle源码进行编译安装  
+ 下载其它依赖:
    ```
    pip install -r requirement.txt
    pip install gym[atari]
    ```
    安装ale_python_interface可以参考:https://github.com/mgbellemare/Arcade-Learning-Environment
Z
zenghsh3 已提交
34

Z
zenghsh3 已提交
35
### 训练模型:
Z
zenghsh3 已提交
36 37 38
```
# 使用GPU训练Pong游戏(默认使用DQN模型)
python train.py --rom ./rom_files/pong.bin --use_cuda
Z
zenghsh3 已提交
39

Z
zenghsh3 已提交
40 41
# 训练DoubleDQN模型
python train.py --rom ./rom_files/pong.bin --use_cuda --alg DoubleDQN
Z
zenghsh3 已提交
42

Z
zenghsh3 已提交
43 44 45
# 训练DuelingDQN模型
python train.py --rom ./rom_files/pong.bin --use_cuda --alg DuelingDQN
```
Z
zenghsh3 已提交
46

Z
zenghsh3 已提交
47
训练更多游戏,可以下载游戏rom从[这里](https://github.com/openai/atari-py/tree/master/atari_py/atari_roms)
Z
zenghsh3 已提交
48

Z
zenghsh3 已提交
49
### 测试模型:
Z
zenghsh3 已提交
50 51 52 53 54 55 56 57
```
# 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
```