Transformer + 扩散模型:DiT 入门

ℹ️ 写在前面 本文尚未完成,但近期不会补充完整。 这里记录一下还需要写的部分: diffusion.py 的代码解析 DiT 模型小实验的整体运行效果 参考文献也需要补充 本文内容基于论文 Scalable Diffusion Models with Transformers。 但文章内容并不是论文阅读笔记,而是对 DiT 的入门介绍。未来有机会可以写一个详细的阅读笔记。 扩散模型介绍 扩散模型(Denoising Diffusion Probabilistic Models,DDPMs)在图像/音频/视频生成方面取得了显著的成果。 本文中,采用离散时间(潜变量模型)(discrete-time (lantent variable model))的视角,事实上有多种关于扩散模型的观点,可以都去了解一下。 随机微分方程(SDE)、得分匹配(Score Matching)、朗之万动力学(Langevin Dynamics)、变分推断视角(Variational Inference)…… 我们常说的机器学习,或者更准确一些,监督学习中,我们做的是“判别”: 输入:一张猫的图片 输出:标签”cat“ 本质:学习 p(y|x) (给定图片,预测类别) 而扩散模型做的是”生成“,可以理解为与监督学习相反的问题: 输入:随机噪声 输出:一张猫的图片 本质:学习 p(x) (数据本身的分布) 下面,让我们详细看看扩散模型是如何完成它的工作的: 前向过程:数据 → 噪声 我们定义一个固定的、不需要学习的前向过程(Forward Process),把真实图像 $x_0$ 逐步变成纯噪声 $x_T$ 。 为什么要做这个? 我们在 前向过程 中人为构造一条从数据到噪声的渐进式退化路径。 扩散模型可以理解为一个去噪网络,它的工作流程就是对着一张图片(初始是随机噪声),一步一步去掉噪声,最后得到我们要生成的目标图片。 那么,我们现在手上有原始图片,我们希望模型学会如何去噪,需要从这一张图片构造出足够多的训练数据供扩散模型学习。 我们把原始图片一步步加噪,得到一系列图片(每个图片即对应一个时间步 $t$ ),每个图片都比前一张有更多噪声,直到最后成为纯噪声。 然后我们把这一系列图片反过来看,就是一个从纯噪声一步步变成目标图片的过程,这就是扩散模型需要的训练数据。它会从这一系列数据中学会去噪的技巧,最后能够按需求生成图片。 总而言之,这就是前向过程可以理解为训练数据的构造方式。 这个数据到噪声的过程是一步步进行的。我们看到其中一步: 单步转移 从第 $t-1$ 步到 第 $t$ 步,我们做的就是依赖当前状态,加一点点高斯噪声: ...

February 6, 2026 · ClarkFlyBee

混淆矩阵与 AUC:理解T/F/P/N分类评估指标

最近参与的医学场景的项目中,模型的评价指标之一是AUC。 要讲清楚这个指标,需要首先了解一个评价模型的经典工具:混淆矩阵。 混淆矩阵 —— 模型能不能“明辨是非” 基础定义 我们训练AI模型,一个典型的任务是去预测一个事情是否会发生。 那医学场景举个例子: 我们给模型输入过去手术的数据,让它学习其中的特征。 我们的目的是希望训练后的模型在接受一段时间的手术数据输入后,给出未来一定时间内发生某类异常事件的可能性。 那么如何评价这个模型做的好不好呢?简单来说,需要记录预测结果与实际情况是否一致。我们定义: 预测结果 预测为正例(Positive, P) 预测为负例(Negative, N) 实际情况 实际为正例 实际为负例 对于这四种情况排列组合,我们就会得到一个模型的混淆矩阵(Confusion Matrix): 预测为正例 P 预测为负例 N 实际为正例 TP(True Positive) FN(False Negative) 实际为负例 FP(False Positive) TN(True Negative) 对于矩阵的四个象限,其含义分别为: 缩写 含义 场景 TP 预测为正,实际为正 ✅ 正确识别阳性(如:有异常事件有警报) TN 预测为负,实际为负 ✅ 正确识别阴性(如:无异常事件无警报) FP 预测为正,实际为负 ❌ 误报(如:无异常事件有警报) FN 预测为负,实际为正 ❌ 漏报(如:有异常事件无警报) 这里我经常搞糊涂,Positive和Negative分别对应的是预测的情况。预测为正例,指预测内容为事件发生,在混淆矩阵中标记为P,反之为N。 但与预测情况相对的,实际情况为正例,并不意味着对应情况记作T。 事实上,当实际情况与预测内容相匹配时,才会记为T;反之即为F。 也就是说,T 和 F 并不是标记实际情况中事件是否发生,而是表示实际情况与预测内容是否一致。 由混淆矩阵派生的关键指标 在实践中,混淆矩阵中的TP、FN、FP、TN通常是记录测试模型时,符合对应情况的测试样本数量。 比如说我们训练好了模型,测试时我们输入了1000个样本,结果分别为: 400个样本被预测为会发生异常事件 其中150个样本真的发生了异常事件,250个样本没有发生异常事件 600个样本被预测为不发生异常事件 其中50个样本真的发生了异常事件,550个样本没有发生异常事件 此时,这个模型的混淆矩阵可以记为: ...

February 4, 2026 · ClarkFlyBee

第一篇博客

一切的开始 是的,你正在看到的是我的第一篇博客。 我觉得用第一次编程的脚本作为第一篇博客的内容再合适不过了: 1 print("Hello World!") 这是我与编程的开始,我也把它作为我博客的开始。

January 30, 2026 · ClarkFlyBee