Commit Graph

18 Commits

Author SHA1 Message Date
Serendipity ed0822966b feat(训练): 添加并行环境DQN训练脚本和Jupyter笔记本
- 新增 train_parallel.py 脚本,使用 AsyncVectorEnv 并行运行多个Atari环境
- 添加配套的 Jupyter 笔记本 train_parallel.ipynb 用于交互式训练
- 在 utils.py 的 wrapper 中修复 observation_space 定义,确保与预处理后的观测形状一致
- 删除旧的压缩文件 CW2_DQN_SpaceInvaders.zip
- 新增图片文件 image.png

并行训练器通过批量GPU推理和异步环境步进显著提升数据收集速度,适合在多核服务器环境下运行。包含完整的超参数配置、进度监控和模型保存功能。
2026-05-03 16:29:14 +08:00
Serendipity b474e7976e feat: 更新Atari项目报告并添加训练曲线生成功能
更新LaTeX报告以反映最新的评估结果(最佳得分32.50),添加Dueling DQN架构说明,并改进训练曲线生成脚本。脚本现在能够生成ε衰减曲线和模拟训练曲线,为报告提供更全面的可视化支持。同时添加了CLAUDE.md项目概览文档,整理了三个子项目的环境配置和常用命令。
2026-05-03 13:39:37 +08:00
Serendipity fb09e66d09 feat: 重构项目结构并添加向量化PPO训练与评估脚本
- 将原始单环境训练代码重构为模块化结构,添加向量化环境支持以提高数据采集效率
- 实现完整的PPO训练流水线,包括共享CNN的Actor-Critic网络、向量化经验回放缓冲和GAE优势估计
- 添加训练脚本(train_vec.py)、评估脚本(evaluate.py)和SB3基线对比脚本(train_sb3_baseline.py)
- 提供详细的文档和开发日志,包含问题解决记录和实验分析
- 移除旧版项目文件,统一项目结构到CW1_id_name目录下
2026-05-02 13:44:08 +08:00
Serendipity 79ffb90823 feat: 优化DQN训练配置并支持Dueling网络评估
- 将学习率调整为5e-5,批次大小增加到64,经验回放缓冲区扩大到500,000
- 启用优先经验回放,调整目标网络更新频率为1000步
- 评估时使用Dueling网络架构,训练时评估模式的ε设为0
- 更新评估结果以反映配置改进后的性能变化
2026-05-02 11:36:12 +08:00
Serendipity faf0d5ea42 feat: 改进DQN训练稳定性和性能
- 将奖励裁剪替换为奖励缩放,保留奖励大小信号
- 添加学习率调度器,支持warmup和步进衰减
- 增加经验回放缓冲区大小至200,000
- 默认启用Dueling DQN架构
- 优化代码格式和参数传递
- 添加更多训练中间模型保存点
2026-05-02 02:02:17 +08:00
Serendipity 1c1cccd3f6 feat: 添加模型评估脚本并更新实验报告
- 添加 evaluate_checkpoints.py 脚本,用于评估训练过程中的检查点模型
- 更新 generate_plots.py 以支持从真实评估结果生成图表
- 更新实验报告内容,包含具体实验结果数据和分析
- 添加中文支持并更新作者信息
- 生成评估结果JSON文件和相应图表
2026-05-01 18:44:22 +08:00
Serendipity cb0195135e feat: 添加强化学习项目报告及可视化图表
添加完整的强化学习项目报告,包含 LaTeX 源文件、生成的 PDF 文档以及训练过程的可视化图表。主要新增内容包括:

- 完整的项目报告(report.tex 和 report.pdf),详细说明 DQN 算法在 Atari Space Invaders 游戏上的实现与实验结果
- 训练曲线、epsilon 衰减曲线和评估结果的可视化图表(PNG 格式)
- 更新 generate_plots.py 脚本,改进代码格式和错误处理,支持更灵活的参数配置
- 添加训练好的最佳模型文件(dqn_best.pt)和项目源代码压缩包
- 包含 LaTeX 编译生成的辅助文件(.aux, .log)

这些文件构成了完整的项目交付物,便于复现实验结果和展示项目成果。
2026-05-01 11:58:40 +08:00
Serendipity 85f912483a refactor(agent): 重命名 train_step 为 step_count 以提高可读性
- 将 agent.py 中的 train_step 变量重命名为 step_count,使其含义更清晰
- 更新所有相关引用,包括 epsilon 衰减和目标网络更新逻辑
- 同步修改模型保存和加载时的键名
- 修复多个源文件末尾的换行符问题
2026-05-01 10:19:14 +08:00
Serendipity e8b51240f9 feat: 添加DQN强化学习项目框架和核心实现
实现完整的DQN算法框架,用于Atari Space Invaders游戏训练。包括:
- QNetwork和DuelingQNetwork神经网络架构
- 经验回放缓冲区(标准和优先级版本)
- DQN智能体实现ε-greedy策略和Double DQN
- 环境包装器(灰度化、调整大小、帧堆叠等)
- 训练器、评估脚本和图表生成工具
- 详细的项目文档和依赖配置
2026-05-01 10:01:12 +08:00
Serendipity cdec40a7c7 docs: 添加课程资料与更新作业要求文档
添加 Lecture4-6 课件 PDF 与课程作业要求 PDF 至文档目录
更新外教课原文要求,仅保留 Atari 游戏项目要求
将完整作业要求文档移动至强化学习项目报告目录
2026-05-01 09:47:09 +08:00
Serendipity 8f04be4617 chore: 添加 .venv 到 .gitignore 并忽略二进制日志文件
- 在 .gitignore 文件中添加 .venv/ 目录,以排除 Python 虚拟环境
- 忽略 TensorBoard 生成的二进制日志文件,避免将运行时数据提交到仓库
2026-05-01 09:28:36 +08:00
Serendipity 7dea00195e feat: 添加并行训练脚本和奖励塑形以改进PPO性能
引入并行环境训练脚本 train_parallel_improved.py,实现多进程并行数据收集
添加奖励塑形包装器,根据速度、赛道位置和完成圈数调整奖励信号
优化神经网络结构和训练参数,包括更大的rollout缓冲区
删除旧的tensorboard日志文件,创建新的训练运行记录
2026-05-01 09:26:39 +08:00
Serendipity d6860f1f15 chore: 更新项目文档、依赖和训练脚本
- 更新 requirements.txt,添加 opencv-python-headless 并补充 uv 安装说明
- 修复 CSV 文件中的换行符格式(CRLF 转 LF)
- 更新 TASK_PROGRESS.md,记录并行训练实现和 WSL 支持
- 优化 train_improved.py 代码格式,移除多余空行和注释
- 更新课程作业要求文档的字符编码
- 添加新的 TensorBoard 日志文件和训练模型
2026-05-01 09:26:23 +08:00
Serendipity 6b929e9790 docs: 添加强化学习项目报告及相关文件
添加完整的强化学习个人项目报告,包括PDF文档、LaTeX源文件、训练曲线图、TensorBoard日志以及改进的训练脚本。报告详细记录了从零实现PPO算法解决CarRacing-v3环境的过程,包含算法设计、网络架构、超参数配置和实验结果分析。
2026-04-30 22:59:14 +08:00
Serendipity b32490ae03 fix(ppo): 修正日志概率维度与状态张量格式
修复 replay buffer 中 log_probs 的维度错误,从 (buffer_size, action_dim) 改为 buffer_size
修正训练时状态张量格式,从 (N, H, W, C) 转换为 (N, C, H, W)
更新 collect_rollout 返回观测值并修正 log_prob 计算
添加项目配置文件和训练曲线生成脚本
2026-04-30 20:30:40 +08:00
Serendipity d353133b31 feat: 添加强化学习项目报告及重构课程作业报告代码结构
- 新增强化学习个人项目报告,包含基于PyTorch从零实现的PPO算法
- 重构课程作业报告代码结构,提取运行时路径管理和notebook执行逻辑到独立模块
- 更新依赖文件requirements.txt,添加强化学习相关依赖
- 简化模型比较结果表格,仅保留基线逻辑回归模型数据
2026-04-30 16:54:41 +08:00
Serendipity 6ac02ba4fe feat: 添加GPU检测与自动回退逻辑并移除冗余文档
- 在notebook中引入GPU检测逻辑,根据CUDA可用性自动选择XGBoost计算后端
- 更新XGBoost配置,使用动态变量替代硬编码的GPU参数
- 删除过时的需求分析文档,保持项目结构整洁
- 确保代码在不同硬件环境下均可正常运行
2026-04-30 15:04:29 +08:00
Serendipity ceddbdd559 Add lecture materials for Model-Free, Control, and Value topics
- Added Lecture4 - ModelFree.pdf (3013 KB)
- Added Lecture5 - Control.pdf (2575 KB)
- Added Lecture6 - Value.pdf (3320 KB)
2026-04-28 20:28:00 +08:00