Files
rl-atari/强化学习个人项目报告(Atari 游戏方向)/README.md
T
Serendipity e8b51240f9 feat: 添加DQN强化学习项目框架和核心实现
实现完整的DQN算法框架,用于Atari Space Invaders游戏训练。包括:
- QNetwork和DuelingQNetwork神经网络架构
- 经验回放缓冲区(标准和优先级版本)
- DQN智能体实现ε-greedy策略和Double DQN
- 环境包装器(灰度化、调整大小、帧堆叠等)
- 训练器、评估脚本和图表生成工具
- 详细的项目文档和依赖配置
2026-05-01 10:01:12 +08:00

119 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DQN for Space Invaders
从零实现的DQNDeep Q-Network)算法,用于Atari Space Invaders游戏。不使用Stable-Baselines等强化学习库。
## 项目特点
- **算法**: DQN / Double DQN / Dueling DQN
- **游戏**: Space Invaders (ALE/SpaceInvaders-v5)
- **框架**: PyTorch
- **环境**: Gymnasium + ALE
## 项目结构
```
├── src/
│ ├── __init__.py
│ ├── network.py # Q-Network架构(标准DQN和Dueling DQN
│ ├── replay_buffer.py # 经验回放缓冲区(标准和优先级)
│ ├── agent.py # DQN智能体
│ ├── trainer.py # 训练器
│ ├── utils.py # 环境包装器和工具函数
│ └── evaluate.py # 评估脚本
├── train.py # 主训练脚本
├── generate_plots.py # 图表生成脚本
├── requirements.txt # 依赖列表
└── README.md # 项目说明
```
## 环境配置
```bash
# 创建虚拟环境
conda activate my_env
# 安装依赖
pip install -r requirements.txt
# 安装Atari ROM
AutoROM --accept-license
```
## 训练
```bash
# 标准DQN训练
python train.py --steps 2000000
# 使用Double DQN
python train.py --steps 2000000 --double-dqn
# 使用Dueling DQN
python train.py --steps 2000000 --dueling
# 自定义参数
python train.py \
--steps 2000000 \
--lr 1e-4 \
--gamma 0.99 \
--batch-size 32 \
--buffer-size 100000 \
--epsilon-decay 1000000 \
--target-update 1000
```
## 评估
```bash
# 评估训练好的模型
python src/evaluate.py --model models/dqn_best.pt --episodes 10
# 带渲染的评估
python src/evaluate.py --model models/dqn_best.pt --episodes 5 --render
```
## 生成图表
```bash
# 生成示例图表
python generate_plots.py --sample
# 从训练日志生成图表
python generate_plots.py --log-file logs/training_log.json
```
## 超参数
| 参数 | 默认值 | 说明 |
|------|--------|------|
| lr | 1e-4 | 学习率 |
| gamma | 0.99 | 折扣因子 |
| epsilon-start | 1.0 | ε初始值 |
| epsilon-end | 0.01 | ε最终值 |
| epsilon-decay | 1,000,000 | ε衰减步数 |
| buffer-size | 100,000 | 经验回放大小 |
| batch-size | 32 | 批次大小 |
| target-update | 1,000 | 目标网络更新频率 |
| double-dqn | True | 使用Double DQN |
| dueling | False | 使用Dueling DQN |
## 算法说明
### DQN (Deep Q-Network)
- 使用深度神经网络近似Q函数
- 经验回放打破数据相关性
- 目标网络稳定训练
### Double DQN
- 解决Q值过估计问题
- 用Q网络选择动作,用目标网络评估
### Dueling DQN
- 分离状态价值和优势函数
- 更好地学习状态价值
## 参考文献
1. Mnih, V., et al. (2015). Human-level control through deep reinforcement learning. Nature.
2. Van Hasselt, H., et al. (2016). Deep Reinforcement Learning with Double Q-learning. AAAI.
3. Wang, Z., et al. (2016). Dueling Network Architectures for Deep Reinforcement Learning. ICML.