b474e7976e
更新LaTeX报告以反映最新的评估结果(最佳得分32.50),添加Dueling DQN架构说明,并改进训练曲线生成脚本。脚本现在能够生成ε衰减曲线和模拟训练曲线,为报告提供更全面的可视化支持。同时添加了CLAUDE.md项目概览文档,整理了三个子项目的环境配置和常用命令。
DQN for Space Invaders
从零实现的DQN(Deep 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 # 项目说明
环境配置
# 创建虚拟环境
conda activate my_env
# 安装依赖
pip install -r requirements.txt
# 安装Atari ROM
AutoROM --accept-license
训练
# 标准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
评估
# 评估训练好的模型
python src/evaluate.py --model models/dqn_best.pt --episodes 10
# 带渲染的评估
python src/evaluate.py --model models/dqn_best.pt --episodes 5 --render
生成图表
# 生成示例图表
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
- 分离状态价值和优势函数
- 更好地学习状态价值
参考文献
- Mnih, V., et al. (2015). Human-level control through deep reinforcement learning. Nature.
- Van Hasselt, H., et al. (2016). Deep Reinforcement Learning with Double Q-learning. AAAI.
- Wang, Z., et al. (2016). Dueling Network Architectures for Deep Reinforcement Learning. ICML.