这是一个模块化的强化学习项目,实现了 DQN 算法在 Atari 游戏上的训练,包括 Breakout 和 Pong 等经典游戏。
实验结果在线观看:https://swanlab.cn/@jiankyan13/RL-Task/overview
RL/
├── agents/ # 智能体模块
│ ├── __init__.py
│ ├── random_agent.py # 随机策略智能体
│ ├── dqn_agent.py # DQN 智能体
│ └── replay_buffers.py # 经验回放缓冲区
├── environments/ # 环境模块
│ ├── __init__.py
│ └── atari_env.py # Atari 环境包装器
├── experiments/ # 实验模块
│ ├── __init__.py
│ ├── breakout_experiment.py # Breakout 实验
│ └── random_baseline.py # 随机基线实验
├── utils/ # 工具模块
│ ├── __init__.py
│ ├── config.py # 配置文件
│ └── training_utils.py # 训练工具函数
├── common/ # 旧版本代码(保留)
├── Breakout.py # 主入口文件
├── Pong.py # Pong 游戏入口
└── README.md
- 模块化设计: 清晰的代码结构,便于维护和扩展
- 多种智能体: 支持 DQN 和随机策略智能体
- 优先经验回放: 实现了优先经验回放机制
- n-step 学习: 支持 n-step TD 学习
- 实验记录: 使用 SwanLab 记录训练过程
- 视频录制: 支持训练后录制游戏视频
pip install torch gymnasium swanlab numpy
python Breakout.py
这将运行:
- DQN 训练(5M 帧)
- 模型评估和视频录制
- 随机策略基线对比
python experiments/random_baseline.py
from experiments.breakout_experiment import run_breakout_experiment
run_breakout_experiment()
主要配置在 utils/config.py
中:
DEFAULT_CONFIG
: 训练超参数GAME_CONFIGS
: 游戏特定配置SEED
: 随机种子
训练结果会通过 SwanLab 记录,包括:
train/avg_reward
: 训练平均奖励eval/score
: 评估分数train/epsilon
: 探索率train/replay_buffer_size
: 经验池大小
- 在
utils/config.py
中添加游戏配置 - 创建新的实验文件(参考
experiments/breakout_experiment.py
) - 运行实验
欢迎提交 Issue 和 Pull Request!
MIT License