# 课程作业实现方案分析 ## 📚 三项作业任务概览 --- ### 🔴 任务一:强化学习个人项目报告(Atari 游戏方向) **核心任务**: - 自选一个 Atari 游戏,从零实现并训练深度强化学习算法,达到有竞争力的表现 - 提交不超过 3000 词的技术报告 + 源代码和训练模型的 zip 文件 **推荐游戏选择**:Space Invaders 或 Breakout(相对简单,benchmark 充分) **技术栈**: - PyTorch 深度学习框架 - Gymnasium(旧版 ALE) Atari 环境 - NumPy 进行数据处理 **核心算法选择建议**: | 算法 | 优点 | 缺点 | |------|------|------| | DQN | 经典稳定,实现相对简单 | 训练慢,需要大量样本 | | Double DQN | 解决 Q 值过估计问题 | 实现稍复杂 | | Dueling DQN | 收敛更快 | 实现复杂度中等 | **实现步骤**: 1. 环境搭建 + 预处理(帧堆叠、灰度化、resize) 2. 实现 Replay Buffer 3. 实现 Q-Network(CNN 结构) 4. 实现 DQN 训练循环 5. 超参数调优 + 训练监控 6. 对比 Stable-Baselines3 基线 **报告要求**: 1. 说明所选游戏及其挑战 2. 调研深度强化学习在 Atari 游戏中的应用现状 3. 对比不同算法,解释最终选择 4. 详细介绍算法原理与具体实现 5. 评估智能体表现 6. 分析算法在该游戏上表现好坏的原因 7. 用图表展示实验结果 **预计工作量**:⭐⭐⭐⭐⭐(最高,约 40% 精力) --- ### 🟡 任务二:PPO + CarRacing-v3 **核心任务**: - 用 Python 从零实现 PPO(Proximal Policy Optimization)算法 - 让智能体在 CarRacing-v3 环境中完成赛车任务 - 提交不超过 3000 词的技术报告 + 源代码和模型的 zip 文件 **技术栈**: - PyTorch - Gymnasium(CarRacing-v3 环境) - TensorBoard 用于训练可视化 **PPO 核心组件**: ``` 1. 策略网络:CNN → 全连接层 → μ, σ(连续动作输出) 2. 价值网络:CNN → 全连接层 → V(s) 3. GAE(Generalized Advantage Estimation)计算优势 4. PPO-Clip 目标函数:L^CLIP(θ) = E[min(r(θ)·A, clip(r(θ), 1-ε, 1+ε)·A)] 5. 熵正则化 + 价值函数损失 ``` **实现细节**: - 状态空间:96×96×3 RGB 图像 - 动作空间:连续空间(转向、油门、刹车) - 奖励塑形:保持中心线奖励 + 速度奖励 + 轮胎磨损惩罚 **报告要求**: 1. 介绍任务的强化学习背景 2. 定义状态空间、动作空间和奖励机制 3. 解释 PPO 的目标函数、裁剪机制和优势估计方法 4. 说明网络结构、训练流程、超参数设置 5. 记录并说明实现过程中遇到的问题与解决办法 6. 用图表展示训练与测试结果 7. 与 Stable-Baselines3 基线方法做简要对比 **预计工作量**:⭐⭐⭐⭐(较高,约 35% 精力) --- ### 🟢 任务三:健康保险多分类(机器学习) **核心任务**: - 围绕健康保险数据集,建立并改进多分类模型 - 预测申请人保费风险等级(Low / Standard / High) - 提交 Jupyter Notebook、1200 词左右的 Theory and Reflection PDF、hidden-test CSV **Jupyter Notebook 步骤**: | 步骤 | 内容 | |---|---| | 1 | 数据清洗 + 缺失值处理 | | 2 | 特征工程 + 识别并删除数据泄露特征 | | 3 | 基线模型(逻辑回归) | | 4 | 随机森林 vs XGBoost/LightGBM 对比 | | 5 | 贝叶斯优化/GridSearchCV 超参数调优 | | 6 | 个性化改进(根据学号末位决定) | | 7 | K-Means + GMM 无监督探索 | | 8 | 最终模型选择 + hidden-test 预测 | **PDF 报告主题**: 1. Bagging vs Boosting 对比 2. 超参数优化方法讨论 3. K-Means vs GMM 对比 4. 个性化改进反思 5. AI 使用声明 **预计工作量**:⭐⭐⭐(中等,约 25% 精力) --- ## ⏰ 时间规划建议 | 周次 | 任务分配 | 备注 | |------|----------|------| | **Week 1-2** | 任务三(机器学习) | 时间最充裕,可提前完成 | | **Week 3-4** | 任务二(PPO) | 核心算法,需要充分调优 | | **Week 5-7** | 任务一(Atari) | 训练耗时最长,尽早开始 | | **最后1周** | 整体检查、报告撰写、格式调整 | 预留缓冲时间 | --- ## ⚠️ 关键注意事项 1. **任务一和任务二**禁止使用 Stable-Baselines 等强化学习专用库实现核心算法 2. **任务三**的个性化改进需根据学号末位决定 3. 所有任务都需按指定格式命名并提交 **PDF + Zip(代码+模型)** 4. 任务一可使用 Stable-Baselines3 作为 benchmark 对比 --- ## 📝 文档语言要求(外教课特别说明) ⚠️ **重要提醒**:这是**外教课**作业,所有提交的 **PDF 文档必须使用英文** 撰写,包括: - 技术报告(Technical Report) - Theory and Reflection PDF - 代码注释(Code Comments) 建议: - 使用英文撰写报告正文 - 图表标题和图例使用英文 - 代码中变量命名和注释使用英文 - 可保留中文的仅为个人笔记/思考过程(无需提交) --- ## ❓ 待确认事项 - **学号末位**是多少?(用于确定任务三的个性化改进方向) - 是否有偏好选择的 Atari 游戏?