# 课程作业实现方案分析

## 📚 三项作业任务概览

---

### 🔴 任务一：强化学习个人项目报告（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 游戏？
