扩散模型教程第7章:按数据结构选型与评估验收
本章是系列第 7 章:讲怎么系统评估一个生物扩散模型、以及某些任务其实不该用扩散。前六章学的是”怎么把扩散跑起来”,本章学的是”跑完之后怎么验收,以及一开始该不该跑”。 前置:第 1 章(为什么用扩散)、第 6 章(训练与采样旋钮)。评估思路与强化学习系列的分层评估栈同源。 系列内:机制族与替代路线见 第 5 章 五大机制族;蛋白/分子案例深讲见 第 8 章 生物读者轨道。
1. 本章目标与验收标准
Section titled “1. 本章目标与验收标准”学完本章,你应能在不看笔记的情况下完成下列自检:
- 画出 L1 → L4 四层评估框架,说清每层回答什么问题、有哪些代表指标。
- 对蛋白 / 分子 / 单细胞 / 病理四类任务,各说出它的最硬指标和隐藏杀手。
- 解释为什么”用于训练的指标不能同时用于最终验收”。
- 点名至少 4 种评估陷阱,并给出对应的防御做法。
- 拿一个真实课题填 Go/No-Go 决策表,判断”先别急着上扩散”还是”值得一试”。
字数与深度定位:评估与选型章(约 8500–12000 汉字)。不推导每个指标、不教具体工具的完整用法、不从零训练模型。
2. 评估第一课:为什么”好看” ≠ “好用”
Section titled “2. 评估第一课:为什么”好看” ≠ “好用””2.1 一个真实的坑(先讲教训)
Section titled “2.1 一个真实的坑(先讲教训)”假设你训了一个”病理图生成扩散模型”,报告如下:
- FID = 12.3(比同类 GAN 的 20.5 低了将近一半);
- 生成图肉眼非常像真实 H&E 切片;
- 你信心满满地投给了老板。
老板问你三个问题,你一个都答不上来:
- “我拿这些生成图去训分割模型,在真实测试集上性能会提升吗?“(下游任务)
- “病理医生盲评能不能分出真假?“(领域专家)
- “你有没有生成任何一个训练集里没见过的病理形态?“(多样性 vs 记忆)
这三个问题任何一个答不上来,那个 FID 12.3 就没有意义。这就是本章的核心信息:FID 只是入场券,不是通行证。
把这个坑说透一点:假设你后来真的补做了实验,发现拿这批生成图去做数据增强,分割模型在真实测试集上的 IoU 不升反降了 3 个点;病理医生盲评一眼就挑出了假图,因为你的模型把某台扫描仪特有的偏蓝色调学了进去;而且生成的”病灶”翻来覆去就是训练集里那几种形态,稀有亚型一个没有。三个问题的答案全是负面的——但你的 FID 依然漂亮。这不是 FID 算错了,而是 FID 从设计上就只回答”两堆图的特征分布像不像”,它根本没被要求回答”能不能用”。 用一个只测 A 的指标去证明 B,无论数字多好看都是空的。本章接下来的四层框架,本质就是把”能不能用”拆成可以逐层验证的问题。
2.2 “好看”和”好用”的四个错配
Section titled “2.2 “好看”和”好用”的四个错配”flowchart LR A["FID / IS<br/>好看"] -.可能错配.-> X["实际不能用"] A --> B["分布匹配 不等于<br/>下游能用"] A --> C["分布匹配 不等于<br/>物理合理"] A --> D["分布匹配 不等于<br/>有多样性"] A --> E["分布匹配 不等于<br/>能推广到新场景"]
| 错配 | 举例(生物) |
|---|---|
| 好看 → 下游不能用 | 生成的病理图 FID 低,但训出的分割器在真实图上 IoU 反而降 |
| 好看 → 物理不合理 | 生成的分子 Validity 90%,但 60% 有严重原子 clash / 无法合成 |
| 好看 → 无多样性 | 生成的 mini-binder 长得都差不多(模型记住了训练集里的少数几个骨架) |
| 好看 → 泛化差 | 训练集是 EGFR 靶点,换到 KRAS 就生成一堆无意义结构 |
根源:FID 是分布层面的距离。你训练时最小化的就是这个分布距离,模型天然擅长把这个指标做低。“用于训练的指标不能同时用于最终验收”——这句话请刻在办公桌上。
2.3 一个必须内化的原则:评估要”和训练目标解耦”
Section titled “2.3 一个必须内化的原则:评估要”和训练目标解耦””- 训练目标:拟合数据分布(MSE 去噪损失)。
- 验收目标:在训练目标之外,独立衡量”是否满足业务需求”。
具体做法:
- 训练用 MSE,评估不要只看 MSE。val 集 loss 下降只说明”更贴合训练分布”,不说明”能用”。
- 生成分布贴合真实,加一层下游任务(分类器 / 分割器 / 对接器)验证”能不能拿去用”。
- 图像 FID 低,加一层领域专家评审(病理医生 / 蛋白工程师)确认”真的能骗过内行”。
心智模型:训练 loss 是模型自己给自己打的分;评估是让完全独立的第三方裁判打分。裁判越独立、越贴近真实业务,越有说服力。
一句话记法(贯穿本章):训练拟合分布,评估验证价值。分布拟合得好是必要条件;创造下游价值才是充分条件。
2.4 和强化学习评估的对照
Section titled “2.4 和强化学习评估的对照”如果你学过强化学习系列的分层评估栈,会发现本章的四层评估几乎是同一思想的迁移。但两者有个关键差别:
| 强化学习评估 | 扩散评估 | |
|---|---|---|
| 主要看什么 | 奖励曲线 + 约束 + 上线策略 | 生成分布 + 下游任务 |
| 关心的问题 | ”分数上没上去" | "生成的东西是不是又像、又多样、又能用” |
| 典型翻车 | 奖励黑客、分布外崩 | 好看但不可用 |
一句话:扩散拟合条件下的数据分布,RL 优化条件下的期望奖励。评估时也别混——别用同一张成绩单。
3. 四层评估框架(L1 → L4)
Section titled “3. 四层评估框架(L1 → L4)”3.1 一张图看完
Section titled “3.1 一张图看完”flowchart TB L1["L1 分布层<br/>单样本/边缘分布贴合<br/>FID、Validity、均值方差"] --> L2 L2["L2 结构层<br/>联合分布/空间一致性<br/>UMAP、TM-score、mask IoU"] --> L3 L3["L3 下游任务层<br/>能否服务真实任务<br/>分类AUC、对接分、分割IoU"] --> L4 L4["L4 领域专家层<br/>专家盲评 + 物理/合成约束<br/>医生盲评、clash、SA score"]
核心心法:L1 是入场券,L2 是结构护栏,L3 是通行证,L4 是最后一签。四层缺一不可,但权重按任务调。
- 早期开发:L1 + L2 保证”模型学到了东西”。
- 中期验收:L3 保证”能上下游任务”。
- 最终交付:L4 保证”业内人认可 + 硬约束过关”。
一个类比:造车检测 = 台架测试(L1)→ 整车震动试验(L2)→ 上路油耗测试(L3)→ 老司机试驾评分(L4)。
3.2 L1 分布层:模型的”入门及格线”
Section titled “3.2 L1 分布层:模型的”入门及格线””要回答的问题:生成样本单个看,统计属性是否像真的?
| 指标 | 通俗意思 | 生物场景对应 | 方向 |
|---|---|---|---|
| FID | 用预训练网络抽特征,看真/假两堆特征的均值方差差多少 | 病理图 / 荧光图必备 | 越低越好 |
| KID | 类似 FID,小样本更稳 | 样本量不够大时优先 | 越低越好 |
| IS | 生成样本”清晰 + 多样”的自评 | 图像专用,生物领域别单独用 | 越高越好 |
| Precision / Recall | 分开衡量”像不像” vs “全不全” | 图像 + 分子 | 双高最好 |
| Validity / Uniqueness / Novelty | 语法/化学合法 + 不重复 + 训练集没见过 | 分子专用”三驾马车” | 越高越好 |
| Marginal 分布对齐(KS / 均值方差) | 每个特征维度的直方图重叠 | scRNA、表格数据必备 | 越接近越好 |
只保留讲解用公式(FID,不要求会手算,看懂在比什么就行):
其中 是真实数据在特征空间的均值和协方差, 是生成数据在同一空间的均值和协方差。一句话:把两堆数据的”多元高斯轮廓”拿去比——均值差 + 协方差差。
为什么 FID 有意义又有局限:它同时考虑保真度(均值)和多样性(协方差),比 IS 靠谱;但经典 FID 依赖 ImageNet 上训的 Inception,用它评 H&E 病理图、蛋白结构,特征空间本身就不对。所以生物领域要换特征抽取器:
| 领域 | 建议的 FID 替代 |
|---|---|
| 病理图 | path-FID(CTransPath / PLIP / UNI 特征) |
| 分子 | FCD(Fréchet ChemNet Distance)/ NSPDK MMD |
| 蛋白结构 | 结构特征 FID(ESM / Foldseek 嵌入) |
| scRNA-seq | latent 空间 MMD + 基因均值/方差 Pearson r |
关键参数与调法:
- FID 样本量:小于 10K 时极不稳定,建议 ≥ 50K(至少 10K)。
- Validity 判定器:分子必须用 RDKit + 化学价约束,不能只看”SMILES 能不能 parse”。
- 别跨论文比 FID 绝对值,只在同一评测脚本里做相对比较。
调坏会怎样:FID 反常地低(< 2)往往意味着评估集约等于训练集、抽样太少或用错特征抽取器;Validity 100% 但 Novelty 20% 说明模型只会复读训练集;Marginal 均值对齐但方差全塌是 mode collapse。
一个真实会踩的坑(跨脚本比 FID):你读到 A 论文报 FID 8.2、B 论文报 FID 15.6,很容易得出”A 更好”的结论。但这两个数字几乎不可比——它们可能用了不同的 Inception 权重版本、不同的图像预处理(resize 到 299 还是 256、双线性还是最近邻插值)、不同的样本量。FID 对这些实现细节极其敏感,同一个模型换个评测脚本能差好几分。正确姿势:把你要比的所有模型(含 baseline)放进同一套评测代码、同一评估集、同一样本量,重新算一遍,只信这一套里的相对排序。跨论文的绝对值当参考都嫌勉强。
Validity 这个指标也有隐藏陷阱。分子领域常见的”Validity 98%“往往指”SMILES 能被 RDKit 解析”,但这远不等于”化学上合理”——一个能解析的 SMILES 可能有荒谬的价键、扭曲的环张力、根本合不出来的结构。真正的 L1 合法性检查要叠加化学价约束、可选的力场松弛能量筛查,否则你会把一堆”语法正确的废物”当成成功。
3.3 L2 结构层:是否学到了联合关系
Section titled “3.3 L2 结构层:是否学到了联合关系”要回答的问题:样本内部各维度之间的关系是否合理?
L1 只看每个维度独立分布;L2 看维度之间的联合结构——这才是生物任务真正关心的。
| 任务 | 结构层指标 | 意思 |
|---|---|---|
| 蛋白 | TM-score / lDDT / RMSD | 生成结构与参考的几何相似度 |
| 蛋白 | clash 数、Ramachandran 合法率 | 物理合理性(原子互穿?二面角合法?) |
| 分子 | 键长键角 RMSE、力场松弛稳定性 | 几何是否偏离统计正常范围 |
| 病理图 | mask IoU / 细胞核检测 F1 | 形态学是否自洽 |
| scRNA | UMAP 重叠 + gene-gene 相关性 + marker 保留 | 联合表达关系是否保住 |
| 空间转录 | Moran’s I / Geary’s C | 空间自相关是否保留 |
一个特别值得讲的杀手锏——self-consistency(蛋白结构):
flowchart LR A["扩散生成的<br/>backbone 结构"] --> B["ProteinMPNN<br/>反推序列"] B --> C["AlphaFold2 / ESMFold<br/>把序列折回结构"] C --> D["折出来的结构<br/>vs 原始生成结构"] D -->|"TM-score 高"| E["自洽 · 可信"] D -->|"TM-score 低"| F["幻觉 · 不能用"]
生成结构 → 反推序列 → 再折回结构 → 比较。scTM ≥ 0.5 过关,≥ 0.8 优秀(社区对 binder design 常卡 0.8)。没有 self-consistency 的蛋白生成论文,社区默认打折。
给非蛋白任务的类比:任何生成任务都要问”能不能自己撑住自己”。分子是”生成 → 对接 → 验合成”;单细胞是”生成 → 另一个 encoder 编码 → 分布是否重合”。
L1 说”每个基因表达量像”,L2 才说”A 高时 B 也高,协同关系保住了”。生物学的精髓在联合分布,只看边缘会漏掉一切有意义的结构。
3.4 L3 下游任务层:能不能创造真实价值
Section titled “3.4 L3 下游任务层:能不能创造真实价值”要回答的问题:把生成物拿去做下游任务,性能有没有提升?
L3 是最硬的证据——分布指标可能被技巧性 overfit,下游提升是独立评分员。三种通用范式:
| 范式 | 做法 | 何时用 |
|---|---|---|
| Data augmentation | 生成样本混入训练集,看下游性能是否提升 | 图像 / scRNA / 蛋白 |
| Zero-shot generation | 直接用生成结构 / 分子做对接、折叠、活性预测 | 分子 / 蛋白设计 |
| TSTR(Train-Synthetic-Test-Real) | 用生成样本训分类器,在真实样本上测 | scRNA、稀有类扩增 |
黄金标准(AB 测试):
组 A(baseline):只用真实数据训下游 → 指标 M_A组 B(treatment):真实 + 生成数据训下游 → 指标 M_B
M_B > M_A → 生成有价值M_B ≈ M_A → 无功无过M_B < M_A → 引入噪声,重评硬规则:测试集必须是真实数据,绝不能污染生成数据;组 A / B 除数据外其他条件(模型、超参、种子、轮数)必须一致;多种子重复 3–5 次取均值;合成/真实比例通常 0.5:1 到 2:1(超过 3:1 常反而降)。
常见失败:组 B 训练 loss 降更快、测试反而差,说明生成引入了”看似真实但偏移”的分布;只用生成数据训下游性能必崩(别把 TSTR 当主赛道);不设真实-only baseline 就无法说明生成贡献了多少。
合成/真实比例怎么扫:这是 augmentation 里最实操、也最容易被忽略的旋钮。不要一上来就 5:1 猛灌生成数据。正确做法是把比例当超参扫一条曲线——0.25:1、0.5:1、1:1、2:1,各跑 3 个种子,画出下游指标随比例变化的曲线。你几乎总会看到一个倒 U 形:比例太低生成数据没起作用,比例太高生成分布的偏移开始压过真实信号,下游反而掉。曲线的峰值就是你该用的比例。如果整条曲线都在 baseline 之下,说明这批生成数据质量不够,别硬凑,回去查 L1/L2。
为什么 L3 是”独立评分员”:L1 的 FID、L2 的 gene-gene 相关,都可能被模型在训练时间接优化到——你训练目标是拟合分布,分布指标当然会好看。但下游任务用的是一个完全独立训练的模型(分割器、分类器、对接程序),它不知道你的生成模型是怎么训的,也没有动机去配合你刷分。所以当一个技巧性 overfit 的模型 FID 很低、L3 却纹丝不动甚至下降时,L3 就当场戳穿了它。这也是为什么论文/汇报的主表里必须有 L3,只有 L1 的结果在审稿人眼里近乎没有说服力。
3.5 L4 领域专家层:骗过内行 + 硬约束
Section titled “3.5 L4 领域专家层:骗过内行 + 硬约束”要回答的问题:领域专家能否分出真假?结果是否满足硬性物理/化学/合成约束?分两块看。
(a) 主观盲评——关键是不告诉专家哪张真哪张假:
| 生物任务 | 盲评者 | 及格线 |
|---|---|---|
| 病理图 | 3+ 位病理医生 | 分辨准确率接近 50%(分不出)= 优秀 |
| 蛋白结构 | 2+ 位蛋白工程师 | 骨架合理 / 侧链堆积可接受 |
| 分子 | 2+ 位药化学家 | 合成可及 / 骨架新颖度可接受 |
(b) 客观硬约束:
| 任务 | 硬约束 | 及格线 |
|---|---|---|
| 蛋白 | 原子 clash rate | < 5% |
| 蛋白 | Ramachandran 违规率 | < 3% |
| 分子 | SA score(合成可及性 1–10,1 最易) | < 5(多数分子) |
| 分子 | Lipinski Ro5 违规数 | ≤ 1 |
| 分子 | PAINS / Brenk 过滤 | 通过率高 |
| 病理图 | 染色 / 动态范围一致性 | 与真实同量级 |
主观盲评和客观硬约束不可互相替代:专家说”像”但 clash 超标是废结构;clash 全过但专家一眼看出假也没用。
3.6 四层框架的权重表
Section titled “3.6 四层框架的权重表”| 任务 | L1 | L2 | L3 | L4 |
|---|---|---|---|---|
| 病理图(图像) | ★★ | ★ | ★★★ | ★★★ |
| 蛋白结构 | ★ | ★★ | ★★★ | ★★★ |
| 分子生成 | ★★ | ★ | ★★★ | ★★★ |
| scRNA 生成 | ★★★ | ★★★ | ★★★ | ★ |
| 通用图像 demo | ★★★ | ★★ | ★ | ★ |
读表:蛋白 / 分子的 L1 权重低,合法性 + 下游 + 物理约束才是重点;scRNA 的 L2 权重最高,gene-gene 联合关系是命根子;通用图像 demo 看 FID 就够了,别拿去当真生物任务。
4. 各任务评估菜单(Cheat Sheet)
Section titled “4. 各任务评估菜单(Cheat Sheet)”把你的任务对号入座,直接复制改造。每个场景都标了红线指标——不测就等于没评估。
在展开四份菜单前,先记住这张红线速记表。它把每类任务”不测就等于没做评估”的那一两个指标单独拎出来,是你汇报前的最后一道自检:
| 任务 | 最硬指标(红线) | 隐藏杀手(最容易翻的车) |
|---|---|---|
| 蛋白结构 | self-consistency 的 scTM > 0.5 比例 | 原子 clash 超标、长链 scTM 崩但只报短链 |
| 小分子 | 对接分相对排序 + SA score | Validity 高但不可合成、力场漏洞刷高对接 |
| 单细胞 | gene-gene 相关重叠 + TSTR | 稀有细胞类型被平均掉(隐蔽 mode collapse) |
| 病理图 | 下游分割提升 + 医生盲评 | 染色一致性、患者隐私泄露 |
一个通用心法贯穿四份菜单:每类任务的红线都落在 L3/L4,而不是 L1。 换句话说,越靠近”真实用途”的指标越硬,越靠近”分布好看”的指标越只是入场券。下面逐类展开。
4.1 蛋白结构生成(RFdiffusion / Chroma / FrameDiff 系)
Section titled “4.1 蛋白结构生成(RFdiffusion / Chroma / FrameDiff 系)”| 层 | 指标 | 工具 | 及格线 |
|---|---|---|---|
| L1 | Ramachandran 违规率 | PyRosetta / MDAnalysis | < 3% |
| L1 | 键长键角分布 | numpy | 均值/方差在真实 ±5% 内 |
| L2 | TM-score 分布 vs PDB | TM-align | 视任务;报长度分层 |
| L2 | fold 覆盖率 | Foldseek | 越广越好 |
| L3 | scTM > 0.5 的比例 | ProteinMPNN → ESMFold/AF2 → TMalign | > 50%(优秀 > 80%) |
| L4 | 原子 clash rate | MDTraj | < 5% |
| L4 | 二级结构比例合理 | DSSP | 与目标类似 |
红线:没有 self-consistency = 没有评估。长蛋白(> 200 aa)scTM 会掉,必须按长度分层报。这条流水线的完整拆解见第 8 章的 RFdiffusion 案例。
怎么读这份菜单:从下往上看权重最有效。L4 的 clash 是一票否决项——原子互穿的结构再”像”也不能用,先过这关。L3 的 scTM 比例是主结论,汇报时它就是那个”能不能折叠”的核心数字,且必须按长度分层:把 50 aa 的短肽和 300 aa 的长链混在一起报均值,是最常见的自欺,因为短链天然容易自洽,会把长链的失败稀释掉。L1/L2 的 Ramachandran、TM-score 是过程监控指标——训练中盯它们判断”模型有没有学到东西”,但绝不作为最终验收的主证据。一个实际的汇报节奏是:先亮 clash 通过率证明结构物理合理,再亮分长度段的 scTM 分布证明可折叠性,最后才补 L1 的几何统计作为佐证。反过来先堆一屏 Ramachandran 图、把 scTM 藏在附录,评审一眼就知道你在回避硬指标。
4.2 小分子生成(EDM / GeoLDM / MolDiff 系)
Section titled “4.2 小分子生成(EDM / GeoLDM / MolDiff 系)”| 层 | 指标 | 工具 | 及格线 |
|---|---|---|---|
| L1 | Validity | RDKit | > 95% |
| L1 | Uniqueness / Novelty | RDKit | > 90% / > 80% |
| L1 | FCD + MW/logP/QED 分布 | ChemNet / RDKit | 与真实接近 |
| L2 | Bemis-Murcko 骨架多样性 | RDKit | 越丰富越好 |
| L3 | 对接分(相对排序) | Vina / Gnina | 相对已知 ligand 提升 |
| L4 | SA score < 5 | RDKit | > 70% 分子达标 |
| L4 | Lipinski ≤ 1 违规;PAINS/Brenk 通过 | RDKit | > 90% / 高通过率 |
红线:只报 Validity 不报对接 + SA,等于”会生成合法字符串,可能全是废物”。对接绝对值不可信,只看相对排序。“相对排序”的正确做法是:把生成分子和一批已知活性配体放进同一套对接流程、同一个受体构象里跑,看生成分子的分数分布是否能挤进已知强结合物那一档——而不是拿你的 -9.5 kcal/mol 去和别人论文里的 -11 kcal/mol 硬比,两者的受体准备、打分函数、搜索精度都不一样,绝对值没有可比性。同理,SA score 是”能不能合成”的粗筛而非判决:SA < 5 只是把明显不可及的怪结构挡在门外,真正的合成路线还得化学家看。把对接当排序器、把 SA 当过滤器,才是这两个指标的正确用法。
4.3 单细胞 RNA-seq 生成(scDiffusion 系)
Section titled “4.3 单细胞 RNA-seq 生成(scDiffusion 系)”| 层 | 指标 | 工具 | 及格线 |
|---|---|---|---|
| L1 | Per-gene 均值/方差 | scanpy | R² > 0.95 |
| L1 | Dropout 率分布 | numpy | 与真实 ±10% 内 |
| L2 | UMAP 真假重叠 | scanpy | 重叠但不完全重合 |
| L2 | top-100 gene-gene 相关重叠 | scipy | > 60% |
| L2 | Marker 在对应 type 的特异性 | scanpy | 保留 > 80% |
| L3 | TSTR 分类 AUC | sklearn | > 真实 AUC 的 90% |
| L3 | 稀有类型扩增后 recall 提升 | sklearn | 稀有类 recall +5% |
| L4 | DE 通路合理性;批次是否被抹平 | 领域专家 + GSEA | 主观 + 通路一致 |
红线:scRNA 的 L2 是命根子。L1 完美、gene-gene 相关塌了 = 生物学上一钱不值。务必查”是不是把稀有类型平均掉了”(隐蔽 mode collapse)。scRNA 生成唯一真正的刚需应用往往是稀有细胞类型扩增,否则直接用真实数据就够了。
TSTR 这条 L3 指标要读对:它的意义不是”合成数据能不能单独训出好分类器”(那几乎必然打不过真实数据),而是”合成数据补进真实训练集后,稀有类的 recall 能不能抬起来”。所以报告 TSTR 时一定要连着报真实-only 基线和”真实+合成”两条线,只给一个孤立的 AUC 数字说明不了任何问题。
4.4 医学 / 病理图像生成(Latent Diffusion 系)
Section titled “4.4 医学 / 病理图像生成(Latent Diffusion 系)”| 层 | 指标 | 工具 | 及格线 |
|---|---|---|---|
| L1 | path-FID(领域 encoder) | CTransPath / PLIP / UNI | 同评估集上相对比较 |
| L1 | Precision / Recall | 官方实现 | P > 0.7, R > 0.5 作参考 |
| L2 | 细胞核检测 F1;mask IoU | HoverNet 等 | IoU > 0.8(条件生成) |
| L3 | augment 后分割 mIoU / F1 提升 | monai / mmseg | +2~5% |
| L4 | 医生盲评分辨准确率 | 人工 | 接近 50% = 优秀 |
| L4 | 染色一致性;membership inference | numpy + 攻击脚本 | 与真实同量级;低泄露 |
隐私红线:医学图像必须做 membership inference——生成物是否泄露训练集患者可辨识特征。染色不一致是最容易翻的车(模型学到了某台扫描仪的色调)。
4.5 怎么用这四张菜单:一次走查
Section titled “4.5 怎么用这四张菜单:一次走查”菜单不是让你”全测一遍”,而是帮你按任务把有限精力花在红线上。拿到一个新课题,建议这样走:
- 对号入座:先判断你的任务落在四类里的哪一类(蛋白 / 分子 / scRNA / 医学图像)。如果都不像,回到 §6 先确认扩散是不是对的工具。
- 锁定红线:每张菜单加粗的那一两行就是红线——蛋白是 scTM、分子是对接 + SA、scRNA 是 gene-gene 相关 + TSTR、图像是下游提升 + 医生盲评。红线没测,其余分数一律不采信。
- 先低层后高层:L1 快而便宜,先跑(几分钟出 Validity / FID),不过关直接止损;L1 过了再排 L2 结构、L3 下游,最后才动用最贵的 L4(专家时间、湿实验)。
- 按权重分配算力:回看 §3.6 权重表。scRNA 花大力气盯 L2,蛋白 / 分子把预算压在 L3/L4,别在低权重层过度投入。
举个走查例子:你做”口袋条件下的小分子生成”。第 1 步归入分子类;第 2 步锁定红线是对接相对排序 + SA < 5;第 3 步先用 RDKit 半分钟算 Validity(若 < 95% 直接回去查训练),过了再跑对接和 SA;第 4 步因为分子任务 L1 权重低,不必纠结 FCD 的绝对值,把时间留给对接流水线和药化学家过目。这套走查能让你在半天内判断一个模型”值不值得继续投入”,而不是训练两周才发现方向错了。
5. 评估陷阱(比模型本身更危险)
Section titled “5. 评估陷阱(比模型本身更危险)”评估做错,比模型训坏更危险——因为你会自信地发布错误结论。
5.1 陷阱一:FID 崇拜
Section titled “5.1 陷阱一:FID 崇拜”现象:摘要只写 “FID = 8.2, SOTA”,正文没有下游、没有专家、没有多样性拆解。
为什么危险:FID 依赖特征网络(ImageNet 上的 Inception 和病理、分子的特征空间根本不是一回事),样本量不足时数值抖动极大,还能被”过拟合评估集分布”刷低,同时下游全崩。你以为在比较”生成质量”,实际比的是”谁更会讨好 Inception”。
怎么防:图像生物任务优先 path-FID / 领域 encoder;永远附带 Precision-Recall(拆开”像”和”全”);同脚本同评估集做相对比较,禁止跨论文比绝对值;FID 只能当 L1 入场券,主表必须有 L3。一个可操作的红线是:任何以 FID 为唯一主结论的汇报,都要求补一张 L3 下游表再下结论——这条纪律能挡掉绝大多数”好看但没用”的自欺。
5.2 陷阱二:过拟合指标(Metric Overfitting)
Section titled “5.2 陷阱二:过拟合指标(Metric Overfitting)”现象:团队每周只盯一个数字(FID 或 Validity),模型把这个数字做到极致,其他维度悄悄烂掉。
| 被刷爆的指标 | 常见副作用 |
|---|---|
| FID 极低 | Novelty 塌、mode collapse |
| Validity 100% | 全是训练集邻近合法分子,对接废 |
| UMAP “完美重叠” | 记忆训练集,稀有类消失 |
| 对接分极高 | 力场漏洞 / 不可合成骨架 |
心法:单一指标被优化太狠,就立刻怀疑其他维度。评估菜单要成组看,不要单点冲刺。
5.3 陷阱三:Cherry-picking(掐尖展示)
Section titled “5.3 陷阱三:Cherry-picking(掐尖展示)”现象:只展示最好看的 8 张生成图;只报告最好的随机种子;测试集偷偷混进了和训练同分布的”简单子集”;蛋白只报短链 scTM,藏起长链失败。
怎么防:固定随机种子协议,主结果 = 多种子均值 ± 标准差;分层报告(按长度 / 细胞类型频率 / 疾病亚型);设失败案例专节,至少展示 3 个失败模式(比全是美图更有说服力)。
5.4 陷阱四:数据泄漏与”假下游提升”
Section titled “5.4 陷阱四:数据泄漏与”假下游提升””现象:生成模型的训练集和下游测试集有重叠 / 近重复;条件标签在训练时见过测试条件的”答案形态”;增强数据里混入了测试分布的风格(扫描仪、批次)。
怎么防:生成训练集、评估集、下游测试集三分离;分子/蛋白做 scaffold / sequence identity 去泄漏;医学图像按患者 ID / 中心划分,绝不按 patch 随机切。
5.5 陷阱五:把 RL 的评估习惯原样搬过来
Section titled “5.5 陷阱五:把 RL 的评估习惯原样搬过来”学过强化学习的同学特别容易犯:
| 错误搬迁 | 正确做法 |
|---|---|
| 只看一条”reward 曲线式”的 loss 下降 | 扩散 loss 下降 ≠ 生成变好,要看分布 + 下游 |
| 用”在线策略回报”思维要求唯一最优样本 | 扩散默认产出候选分布,应用价值常在多样候选池 |
| 用 KL 惩罚思维强行对齐一个标量目标 | 那是 RL / DPO 的活;扩散若硬优化单标量,先问是否该换 RL |
扩散评估 = 分布质量 + 可用性;RL 评估 = 回报与约束。别用同一张成绩单。
6. 什么任务不该用扩散
Section titled “6. 什么任务不该用扩散”扩散很强,但不是万金油。硬上扩散的典型结局:训练两周,不如一个梯度提升树 / 一个 AlphaFold2 调用。
6.1 决策前先问的五个问题
Section titled “6.1 决策前先问的五个问题”flowchart TD
Q1{"需要多样候选池<br/>而不是唯一答案?"} -->|否| N1["倾向 回归/分类/AF2/对接"]
Q1 -->|是| Q2{"有足够数据支撑<br/>分布学习?"}
Q2 -->|否| N2["倾向 小模型/模板/经典增强"]
Q2 -->|是| Q3{"目标是拟合分布<br/>还是最大化标量奖励?"}
Q3 -->|最大化奖励| N3["倾向 RL/优化/贝叶斯优化"]
Q3 -->|拟合分布| Q4{"样本是高维结构化<br/>且难用简单密度描述?"}
Q4 -->|否| N4["倾向 VAE/正态模型/更简单生成器"]
Q4 -->|是| Y["可以认真考虑扩散/FM"]
这棵树的顺序不是随意排的,它按排除成本从低到高组织:越靠前的问题越便宜、越能一票否决。第一问”要不要多样候选池”几乎不花成本就能想清楚,却能挡掉一大半误用——很多人一看到”生成”两个字就想上扩散,其实手里的任务是”给我那个最好的答案”,那是判别或优化问题,不是生成问题。第二问”数据够不够”是第二道闸:扩散是数据饥饿的分布学习者,几十条序列、几百个细胞喂不出一个像样的分布,这时候再华丽的架构也只是过拟合。第三问把扩散和强化学习分开:如果你的目标能写成”最大化某个标量奖励”,那更像 RL / 贝叶斯优化的活;扩散拟合的是”数据长什么样”,不是”怎么拿到更高分”。只有前三问都指向”要候选、有数据、拟合分布”,才轮到第四问——样本是不是高维、结构化、难用简单密度描述。如果你的数据用一个高斯或一个 VAE 就能刻画,那也没必要请扩散这尊大佛。
怎么用这棵树:从上往下走,任何一问掉到”否”的分支,就停下来认真看看那条替代路线,而不是硬把问题掰成扩散的形状。掰问题去迁就工具,是新手最常见、也最贵的错误。
6.2 不该用 / 慎用清单(生物向)
Section titled “6.2 不该用 / 慎用清单(生物向)”| 场景 | 为什么扩散不合适 | 更合适的替代 |
|---|---|---|
| 只要一个最优序列/结构 | 扩散给的是分布采样,优化效率常不如专用优化器 | 直接优化、RL、进化算法 |
| 标签预测(亲和分类、细胞类型分类) | 这是判别任务 | 监督学习、预训练 + 探针 |
| 数据极少(几十条序列 / 几百细胞) | 分布学习饥饿 | few-shot、模板匹配、力场、迁移学习 |
| 已有极强专用工具 | 重复造轮子 | 结构预测直接用 AF/ESMFold;对接用 Vina |
| 需要严格物理守恒 | 纯数据生成不保证物理 | 物理信息网络、分子动力学、力场 + 小修正 |
| 可解释性 / 监管硬要求 | 黑盒生成难过审 | 可解释特征模型、规则专家系统 + 人审 |
| 目标为最大化奖励且可在线试 | 与 RL 更同构 | RL / 离线 RL / 贝叶斯优化 |
6.3 三个对照故事(建立肌肉记忆)
Section titled “6.3 三个对照故事(建立肌肉记忆)”- “生成能结合靶点的分子”:只要 Top-1 分数,虚拟筛选 + 对接 + 化学过滤可能更直接;要新颖骨架的候选池再送湿实验,扩散 / FM 才有价值。
- “补全稀有细胞表达”:若只是分类器缺样本,SMOTE / 简单插值有时够用;若要保留高维联合分布与 marker 结构,再上单细胞扩散,并死守 L2。
- “设计 binder 骨架”:这是扩散(RFdiffusion 系)的主场之一,但最终序列与湿实验仍要 MPNN + 折叠自洽 + 实验,扩散不是终点。
- “预测某突变的 ΔΔG”:这是彻头彻尾的回归任务,输出是一个标量。硬套扩散既没有”多样候选”的需求,也没有”高维结构化样本”可生成,是典型的南辕北辙。用监督回归 / 预训练蛋白语言模型 + 探针,几个小时就能拿到比训两周扩散更好的结果。
这四个故事的共同规律是:先看你要的是”一个数 / 一个最优解”还是”一池合理候选”。前者几乎永远不该从扩散起步;后者且样本高维结构化时,扩散才真正进入候选。
7. Go / No-Go 决策表(开题与选型用)
Section titled “7. Go / No-Go 决策表(开题与选型用)”把下面当作一页纸模板。开题、换模型、审稿自查都可以直接填。
7.1 总决策表
Section titled “7.1 总决策表”| # | 检查项 | Go 信号 | No-Go 信号 |
|---|---|---|---|
| 1 | 任务类型 | 需要多样高维样本 | 纯预测 / 只要 Top-1 标量 |
| 2 | 数据量与质量 | 足够支撑分布;标签/条件可靠 | n 极小;批次混乱不可校正 |
| 3 | 成功定义 | 写得清 L1–L4 指标与及格线 | 只有”看起来像” |
| 4 | 基线 | 已有简单基线(检索/AF/对接/监督) | 无基线就直接上扩散 |
| 5 | 算力与延迟 | 预算可承受,或可接受 LDM/LCM | 预算只够训一个小 MLP |
| 6 | 评估可行性 | 能做下游 + 至少一种硬约束/专家 | 完全无法评 L3/L4 |
| 7 | 风险 | 隐私/毒性/双用途已有对策 | 医学可识别风险无方案 |
| 8 | 替代路线 | 已用四维度表比较 FM/CM/DiT/LDM | 盲追开源明星名字 |
经验规则:2 个以上 No-Go,先别训扩散,回去补问题定义或基线;全 Go 但仍犹豫,先用默认采样栈做最小可行实验,用 L3 说话。
7.2 技术选型速查
Section titled “7.2 技术选型速查”| 你的瓶颈 | 优先尝试 | 别先做什么 |
|---|---|---|
| 分辨率/显存 | LDM | 像素空间巨型 U-Net |
| 采样太慢 | DPM++ / FM / LCM | 一上来改全部数据与骨干 |
| 要 scale 大数据 | DiT + 强预训练 | 小数据从零训 DiT |
| 条件不听指挥 | 查 CFG、条件 dropout、数据对齐 | 先换 FM 碰运气 |
| L1 好 L3 差 | 查分布偏移、增强比例、泄漏 | 继续只刷 FID |
| 像但不可合成/不可折叠 | 加 L4 硬过滤进训练或后处理 | 加大模型装瞎 |
7.3 最小可行实验(1–2 周)协议
Section titled “7.3 最小可行实验(1–2 周)协议”- 冻结评估脚本(L1 子集 + 一个 L3 主指标)。
- 跑一个强非扩散基线。
- 跑一个最简扩散 / LDM 基线(用第 6 章默认采样栈)。
- 多种子 × 分层报告。
- 只有 L3 有正向信号,才进入 FM / LCM / DiT 等替换实验。
8. 本章 Checklist
Section titled “8. 本章 Checklist”- 能画出 L1 → L4 四层框架图,说清每层回答什么问题
- 能说出每层各 2–3 个指标 + 及格线
- 知道 L2 = 联合关系 = 生物学精髓,只看 L1 会翻车
- 理解 L3 必须和真实-only baseline 比
- 明白 L4 = 主观盲评 + 客观硬约束,二者不可互相替代
- 能说出四类任务的最硬指标:蛋白 = scTM、分子 = 对接 + SA、scRNA = gene-gene + TSTR、图像 = 下游 + 医生盲评
- 能点名至少 4 种评估陷阱及防御法
- 能独立填完整张 Go/No-Go 表,并有”先基线后扩散”的纪律
9. 自测 4 问
Section titled “9. 自测 4 问”Q1. 有一篇论文只报了 FID = 8.2,声称击败所有基线。作为审稿人,你会追问哪三件事?
参考要点
至少追问:(1) 有没有下游任务(L3)证据,能不能提升真实测试集性能;(2) 有没有 Precision-Recall 拆解”像”和”全”,会不会是 mode collapse 刷低了 FID;(3) 用的什么特征抽取器,生物图像用 ImageNet Inception 是否合适,样本量够不够(≥ 10K)。
Q2. 蛋白结构生成的 self-consistency 属于 L2 还是 L3?
参考要点
它跨 L2/L3。几何自洽本身偏 L2(结构层);而 scTM 作为”这个序列能否折回该结构”的硬证据更偏 L3。社区常把它当必报金标准,不必死抠归层——关键是没有它就等于没评估。
Q3. 你的 scRNA 生成模型验证集 loss 单调下降到很低。能不能因此说”模型收敛了、可以交付”?
参考要点
不能。val loss 下降只说明更贴合训练分布(等于用训练目标当验收),不说明能用。scRNA 必须查 L2:UMAP 真假重叠、top-100 gene-gene 相关是否 > 60%、稀有类型有没有被平均掉。gene-gene 相关塌了,loss 再低也一钱不值。
Q4. 课题是”提出 100 个可合成的新颖主骨架供化学家挑选”。扩散是好起点吗?
参考要点
是。这正是”要多样候选池而非唯一答案”的典型场景,符合 Go 信号。但要配齐 L4 硬约束(SA < 5、PAINS/Brenk 过滤)保证”可合成”,配齐 Novelty 指标保证”新颖”,否则容易生成一堆合法但不可合成、或只是训练集近邻的废物。
10. 与其他章节的关系
Section titled “10. 与其他章节的关系”- 第 1 章 生成直觉:本章把第 1 章的 Go/No-Go 雏形升级为四层评估框架 + 完整决策表。
- 第 5 章 五大机制族:本章 §7.2 选型速查里提到的 FM / LCM / DiT / LDM,机制细节在第 5 章。
- 第 6 章 训练与采样旋钮:本章”最小可行实验”用的默认采样栈来自第 6 章;L1 好 L3 差时的排查也要回到第 6 章的旋钮。
- 第 8 章 生物读者轨道:本章各任务评估菜单的完整案例(尤其 RFdiffusion 三段式)在第 8 章展开。
11. 延伸阅读
Section titled “11. 延伸阅读”| 文献 / 资源 | 为什么看 | 阅读深度建议 |
|---|---|---|
| Heusel et al., FID, 2017 | 理解分布距离指标的原始定义 | 看懂在比什么即可 |
| Watson et al., RFdiffusion, 2023 | 蛋白生成 + self-consistency 评估的范本 | 重点看评估与验证部分 |
| Preuer et al., FCD, 2018 | 分子生成的领域专用分布指标 | 了解为何要换特征网络 |
| 生成模型 Precision-Recall 相关工作 | 拆解”保真”与”覆盖”两个维度 | 概念理解 |
说明:本章聚焦评估方法论与选型逻辑;具体指标的完整推导与工具用法,按需查阅原始文献与工具文档。
主题色
字体
字号
视觉效果
即将离开本站
你将前往外部网站:
该网站与本站无关,本站不对其内容、安全性或可用性负责。确定后将在新标签页打开。