复现笔记模板(Paper Reproduction Template)

一句话定位

提供标准化的论文复现记录模板,确保关键实现细节、实验配置和踩坑经验被完整记录,便于团队协作和未来参考。

前置依赖

核心思想

为什么需要标准化模板

常见问题

  • 复现论文时遗漏关键细节
  • 不同论文的复现笔记结构不一致
  • 时间久了忘记当初为什么这么设置
  • 团队成员无法复用你的经验

模板的价值

  • 确保不遗漏重要信息
  • 强制思考关键设计决策
  • 积累可复用的工程经验
  • 加速团队知识传递

模板结构概览

论文复现笔记
├── 0. 论文基本信息
├── 1. 核心理解
├── 2. 实现细节
├── 3. 实验配置
├── 4. 结果与分析
├── 5. 常见问题与解决
└── 6. 复现总结

数学推导

关键公式提取

从论文中提取的核心公式

编号公式名称公式用途
F1RSSM状态更新潜在dynamics
F2观察重构$\log p(o_th_t)$

参数符号对照表

论文符号实现中变量名维度说明
hidden_state(B, H)确定性hidden
stochastic_state(B, Z)随机latent
kl_weightfloatKL损失权重

实现细节

官方vs自实现差异

组件官方实现自实现差异原因
Encoder4层CNN3层CNN适配输入尺寸
LSTM512 unit自定义梯度处理
OptimizerAdamAdamWweight 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_size6432显存限制
lr1e-45e-5训练不稳定
kl_weight0.10.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 Suitegym(3, 84, 84)取决于任务1000
AtariALE(4, 84, 84)18 (离散)27000
Meta-Worldmultiprocess(3, 64, 64)取决于任务500

结果与分析

复现结果对比

指标论文报告我的复现差距可能原因
DMC Walker Walk95.294.8-0.4%随机种子
Atari Humanoid54.352.1-2.2%环境版本

性能分析

训练曲线(记录到wandb/tensorboard):

  • 损失收敛曲线
  • Eval return曲线
  • KL散度变化

耗时统计

阶段论文我的复现加速比
100k steps~2h~2.5h0.8x
1M steps~20h~25h0.8x

常见问题与解决

问题1:[问题描述]

现象:训练 loss 不下降

原因分析

  • 学习率设置过大
  • 梯度裁剪不足
  • 观察编码器初始化问题

解决方案

  1. 将学习率从 1e-4 降到 5e-5
  2. 添加梯度裁剪(max_norm=1.0)
  3. 使用预训练的视觉编码器

验证:loss 开始正常下降

问题2:[问题描述]

现象:KL loss 爆炸

原因分析

  • posterior collapse
  • kl_weight 过低

解决方案

  1. 使用 kl_weight 调度,从 0.1 逐步升到 0.5
  2. 添加 free nats 机制

验证:KL 散度稳定在目标范围

复现总结

关键收获

  1. 实现细节:官方代码中的哪些trick在论文中没有详细说明
  2. 工程踩坑:遇到的显存、收敛问题及解决思路
  3. 改进建议:可以尝试的改进方向

复现质量评估

维度评分说明
核心算法9/10完全一致
实验配置8/10硬件差异导致参数调整
代码质量8/10结构清晰,注释完整
结果匹配7/10差距<5%

后续工作

  • 尝试论文中提到的改进点
  • 在其他任务上验证
  • 集成到团队代码库

章节摘要

本章提供了论文复现的标准模板,包括:

  1. 模板结构:从论文信息到复现总结的完整框架
  2. 核心公式提取:关键数学公式的标准化记录
  3. 实现差异追踪:官方vs自实现的对照
  4. 实验配置记录:环境、训练、数据集的完整配置
  5. 问题解决记录:踩坑经验和解决方案
  6. 复现质量评估:标准化评估维度

使用标准化模板可以显著提升论文复现的效率和质量,为团队积累宝贵的工程经验。

关键词

论文复现 模板 实验记录 实现细节 超参数 工程经验 问题解决