复现笔记模板(Paper Reproduction Template)
一句话定位
提供标准化的论文复现记录模板,确保关键实现细节、实验配置和踩坑经验被完整记录,便于团队协作和未来参考。
前置依赖
- 0-总导航 - 笔记体系概览
- 0-世界模型基础概念 - 领域基础概念
- 1-Dreamer系列 - 具体论文参考
核心思想
为什么需要标准化模板
常见问题:
- 复现论文时遗漏关键细节
- 不同论文的复现笔记结构不一致
- 时间久了忘记当初为什么这么设置
- 团队成员无法复用你的经验
模板的价值:
- 确保不遗漏重要信息
- 强制思考关键设计决策
- 积累可复用的工程经验
- 加速团队知识传递
模板结构概览
论文复现笔记
├── 0. 论文基本信息
├── 1. 核心理解
├── 2. 实现细节
├── 3. 实验配置
├── 4. 结果与分析
├── 5. 常见问题与解决
└── 6. 复现总结
数学推导
关键公式提取
从论文中提取的核心公式:
| 编号 | 公式名称 | 公式 | 用途 |
|---|---|---|---|
| F1 | RSSM状态更新 | 潜在dynamics | |
| F2 | 观察重构 | $\log p(o_t | h_t)$ |
| … | … | … | … |
参数符号对照表
| 论文符号 | 实现中变量名 | 维度 | 说明 |
|---|---|---|---|
| hidden_state | (B, H) | 确定性hidden | |
| stochastic_state | (B, Z) | 随机latent | |
| kl_weight | float | KL损失权重 | |
| … | … | … | … |
实现细节
官方vs自实现差异
| 组件 | 官方实现 | 自实现 | 差异原因 |
|---|---|---|---|
| Encoder | 4层CNN | 3层CNN | 适配输入尺寸 |
| LSTM | 512 unit | 自定义 | 梯度处理 |
| Optimizer | Adam | AdamW | weight decay |
| … | … | … | … |
代码路径映射
paper repo/
├── world_model/
│ ├── dynamics.py --> 我的实现: /src/dynamics.py
│ ├── encoder.py --> 我的实现: /src/encoder.py
│ └── decoder.py --> 我的实现: /src/decoder.py
├── policy/
│ └── controller.py --> 我的实现: /src/controller.py
└── training/
└── trainer.py --> 我的实现: /src/trainer.py
超参数映射表
| 论文参数名 | 论文默认值 | 我的配置 | 修改原因 |
|---|---|---|---|
| batch_size | 64 | 32 | 显存限制 |
| lr | 1e-4 | 5e-5 | 训练不稳定 |
| kl_weight | 0.1 | 0.05 | 避免KL collapse |
| … | … | … | … |
实验配置
环境配置
# 实验环境
environment:
gpu: NVIDIA RTX 3090
cuda: 11.8
python: 3.9
pytorch: 2.0.1
dependencies:
dm-haiku: 0.0.10
optax: 0.1.5
reverb: 0.1.0训练配置
# 完整训练配置
training:
total_steps: 1000000
batch_size: 32
sequence_length: 32
optimizer:
type: AdamW
lr: 1e-4
weight_decay: 0.01
betas: [0.9, 0.999]
lr_schedule:
type: cosine
warmup_steps: 5000
min_lr: 1e-6
# 损失权重
losses:
kl_weight: 0.1
obs_weight: 1.0
reward_weight: 0.1
prior_weight: 0.0数据集配置
| 数据集 | 环境 | 观测维度 | 动作维度 | 轨迹长度 |
|---|---|---|---|---|
| DM Control Suite | gym | (3, 84, 84) | 取决于任务 | 1000 |
| Atari | ALE | (4, 84, 84) | 18 (离散) | 27000 |
| Meta-World | multiprocess | (3, 64, 64) | 取决于任务 | 500 |
结果与分析
复现结果对比
| 指标 | 论文报告 | 我的复现 | 差距 | 可能原因 |
|---|---|---|---|---|
| DMC Walker Walk | 95.2 | 94.8 | -0.4% | 随机种子 |
| Atari Humanoid | 54.3 | 52.1 | -2.2% | 环境版本 |
| … | … | … | … | … |
性能分析
训练曲线(记录到wandb/tensorboard):
- 损失收敛曲线
- Eval return曲线
- KL散度变化
耗时统计:
| 阶段 | 论文 | 我的复现 | 加速比 |
|---|---|---|---|
| 100k steps | ~2h | ~2.5h | 0.8x |
| 1M steps | ~20h | ~25h | 0.8x |
常见问题与解决
问题1:[问题描述]
现象:训练 loss 不下降
原因分析:
- 学习率设置过大
- 梯度裁剪不足
- 观察编码器初始化问题
解决方案:
- 将学习率从 1e-4 降到 5e-5
- 添加梯度裁剪(max_norm=1.0)
- 使用预训练的视觉编码器
验证:loss 开始正常下降
问题2:[问题描述]
现象:KL loss 爆炸
原因分析:
- posterior collapse
- kl_weight 过低
解决方案:
- 使用 kl_weight 调度,从 0.1 逐步升到 0.5
- 添加 free nats 机制
验证:KL 散度稳定在目标范围
复现总结
关键收获
- 实现细节:官方代码中的哪些trick在论文中没有详细说明
- 工程踩坑:遇到的显存、收敛问题及解决思路
- 改进建议:可以尝试的改进方向
复现质量评估
| 维度 | 评分 | 说明 |
|---|---|---|
| 核心算法 | 9/10 | 完全一致 |
| 实验配置 | 8/10 | 硬件差异导致参数调整 |
| 代码质量 | 8/10 | 结构清晰,注释完整 |
| 结果匹配 | 7/10 | 差距<5% |
后续工作
- 尝试论文中提到的改进点
- 在其他任务上验证
- 集成到团队代码库
章节摘要
本章提供了论文复现的标准模板,包括:
- 模板结构:从论文信息到复现总结的完整框架
- 核心公式提取:关键数学公式的标准化记录
- 实现差异追踪:官方vs自实现的对照
- 实验配置记录:环境、训练、数据集的完整配置
- 问题解决记录:踩坑经验和解决方案
- 复现质量评估:标准化评估维度
使用标准化模板可以显著提升论文复现的效率和质量,为团队积累宝贵的工程经验。
关键词
论文复现 模板 实验记录 实现细节 超参数 工程经验 问题解决