起因 # 最近在过 MIT 6.S191 和分布式训练相关的材料,各种 Norm 反复出现。LayerNorm 在写 Transformer Block 那篇时已经接触过,BatchNorm 在做 CV 的那几年天天调,RMSNorm 在看 LLM 代码时到处都是。单独看每个都不算陌生。
从 U-Net 文章结尾的一个问题说起 # 上一篇结尾我写:DDPM 里的 U-Net 和 2015 年原版 U-Net 有几处关键扩展,第一个就是 Timestep Embedding——通过 sinusoidal embedding 将时间步 \(t\) 编码成向量,注入到每个 residual block 中。
DDPM 的噪声预测网络到底是什么 # 前两篇文章在推导 DDPM 的前向扩散和反向去噪时,一直在用一个符号 \(\epsilon_\theta(x_t, t)\) 来表示噪声预测网络——给一张带噪图片和当前 timestep,输出对噪声的预测。
以前做 CV 内容审核的时候,训练数据里有大量视频。色情视频审核是一个很典型的场景——输入是一段几十秒甚至几分钟的视频,输出是一个二分类:这段视频是否包含色情内容。
但最近回忆起那段经历,我发现一件当时觉得理所当然、现在重新想却很有意思的事:虽然输入是视频,当时实际的做法却是先抽帧,把视频拆成若干张图片,然后按照普通的图片分类问题来做。
最近在重新过 MIT 6.S191 Lecture 3(卷积神经网络)。2017 年我刚接触 CV 那会儿,CNN 算是吃饭的家伙,每天都在调。后来精力逐渐转到 ML Infra,成天跟 GPU 显存、通信拓扑和算子优化打交道,卷积网络的很多具体细节就慢慢生疏了——写个 nn.Conv2d 时 weight 的四维形状到底怎么排、Kaiming 初始化的方差怎么推、感受野怎么算,冷不丁被问到,脑子里还得反应一下。