Files
rl-atari/强化学习个人项目报告(Atari 游戏方向)

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               # 项目说明

环境配置

# 创建虚拟环境
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

  • 分离状态价值和优势函数
  • 更好地学习状态价值

参考文献

  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.