把一张白纸折成一只仙鹤,需要几百道精准的折痕;把一条氨基酸长链折叠成具有功能的三维蛋白质,则是自然界亿万年才完成的奇迹。现在,AI 想学这门手艺。RFdiffusion 就像一位苦练多年的折纸大师:给他一团被揉皱、毫无结构的纸球,他能一边观察纸面的纹路,一边一步步把纸展开、重新折好,最终变出一件全新的艺术品——一个自然界从未出现过、却真实可折叠的蛋白质结构。这不是“预测”已有的结构,而是“创造”全新的结构。 本篇文章将从折纸的视角出发,带你看懂扩散模型怎样“揉纸”(前向加噪)、怎样“展开”(反向去噪)、怎样根据客户要求定制折痕(条件生成),以及怎样把图纸上的设计变成实验室里真实存在的蛋白质。全程不使用公式之外的复杂术语,让零基础的读者也能建立直觉。

岗位关联

对 AI 从业者而言,RFdiffusion 是 AI for Science 领域“从理解到创造”的标杆案例:掌握结构生成,意味着你能用扩散模型解决蛋白质、材料、分子等科学设计问题,打开生物医药与合成生物学的全新职业赛道。

目录
  1. 可视化演示
  2. 扩散模型基础
  3. 架构核心设计
  4. 结构生成流程
  5. 典型应用场景
  6. 性能与优化
  7. 实验验证流程
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

演示去噪扩散从随机噪声生成蛋白质骨架、Cα与刚体方向参数化,以及ProteinMPNN序列设计与AF2自洽筛选流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

去噪生成骨架 从各向同性高斯噪声迭代去噪 x_{t-1} = predicted_noise(x_t) 逐步收敛到物理合理骨架

扩散模型基础

想成为折纸大师,第一课不是“折”,而是“拆”。老师傅会拿出一只折好的仙鹤,当着徒弟的面慢慢地、一下一下地把它揉皱:先是尾巴散了,然后翅膀塌了,最后整张纸变成一团看不出纹路的纸球。这个过程被完整录下来,再倒着播放,就是“从纸球复原仙鹤”的教学片。RFdiffusion 学艺的思路与此一模一样——它先学会“揉纸”,再学会“反着揉”。

在蛋白质的世界里,那张“纸”就是由成百上千个氨基酸骨架原子坐标构成的三维结构。正向过程叫前向扩散:从 t=0 的干净结构出发,每走一步就叠加一点高斯噪声,走 T 步之后,结构变成一团随机坐标,与原始结构毫无关系。反向过程叫反向去噪:模型学习每一步“刚才被加了多少噪声”,从而一点一点把结构拉回有序。

前向扩散可以一步到位写成解析式。设 $\bar\alpha_t$ 表示到第 t 步还保留的原始信号比例,则 t 步后的带噪结构 $x_t$ 可以表达为原始结构 $x_0$ 与标准高斯噪声 $\varepsilon$ 的加权和:

训练时,模型 $\varepsilon_\theta$ 的任务是对任意揉皱程度的结构,准确说出“这一步被加了什么噪声”。损失函数把模型预测与真实噪声之间的差距压到最小:

至此,徒弟手里有了一部“倒放教学片”:只要模型能精准说出“这一步老师用了多大力、往哪个方向揉”,大师就能在生成时沿着相反方向,把一团乱麻缓缓恢复成艺术品。这就是扩散模型的全部魔法——先学会破坏,再学会修复。

xt=αˉt x0+1−αˉt ε,ε∼N(0,I)x_t = \sqrt{\bar\alpha_t}\,x_0 + \sqrt{1-\bar\alpha_t}\,\varepsilon,\qquad \varepsilon \sim \mathcal{N}(0, I)
  1. 噪声预测器 $\varepsilon_\theta$神经网络参数为 $\theta$,输入带噪结构 $x_t$ 和时间步 t,输出它猜测的“刚才被加的噪声”。
    εθ(xt,t)\varepsilon_\theta(x_t, t)
  2. 均方误差把模型预测的噪声与真实噪声 $\varepsilon$ 做差、平方再求平均。预测得越准,损失越小。
    ∥ε−εθ(xt,t)∥2\left\|\varepsilon - \varepsilon_\theta(x_t, t)\right\|^2
  3. 期望运算符对所有随机的 t、干净结构 $x_0$ 和噪声 $\varepsilon$ 取平均,等价于让模型在“任意揉皱程度”上都能做出准确判断。
    Et, x0, ε\mathbb{E}_{t,\, x_0,\, \varepsilon}

架构核心设计

折纸大师有个职业习惯:拿到作品先摆正。无论客户把纸鹤旋转 90°,还是从桌子左边挪到右边,大师心里那套“嘴朝前、翅膀朝两侧”的坐标始终不变。他判断折痕是否标准,从来不只看绝对位置,而是看相对方向。

蛋白质的三维结构同样依赖参考系。同一个蛋白质转到不同方向,坐标数值全变,但内在形状一点没变。RFdiffusion 给每个氨基酸残基配了一个局部坐标系,叫做“帧”(frame):帧由旋转矩阵 $\mathbf{R}$ 和平移向量 $\mathbf{t}$ 组成,残基的侧链方向、相邻残基的相对位置都放在这个局部坐标系里描述。

这种设计让网络具有 SE(3) 等变性:整体旋转或平移输入结构,输出结构也跟着旋转平移,而内部几何关系完全不变。帧之间用等变图注意力网络交互——注意力权重只依赖“残基之间的距离”这种旋转不变的量:

依靠“指南针 + 距离”这套坐标系,RFdiffusion 的网络无论面对哪个方向摆放的纸鹤,都能给出同样靠谱的折痕判断。SE(3) 等变性不是锦上添花,而是让模型不必浪费算力去记忆“绝对位置”这种无关信息,把所有力气都花在真正重要的相对几何上。此外,网络中还会串联序列设计模块,在生成骨架的同时给出配套的氨基酸序列,就像大师折完鹤之后不忘用笔点上眼睛。

Fi=(Ri, ti),dij=∥tj−ti∥2\mathbf{F}_i = \left(\mathbf{R}_i,\ \mathbf{t}_i\right), \qquad d_{ij} = \left\|\mathbf{t}_j - \mathbf{t}_i\right\|_2
  1. 残基帧 $\mathbf{F}_i$每个残基一个帧,由旋转矩阵 $\mathbf{R}_i$ 和平移向量 $\mathbf{t}_i$ 组成。帧就像折纸上每道折痕处钉着的一枚“小指南针”。
    Fi\mathbf{F}_i
  2. 旋转矩阵 $\mathbf{R}_i$描述该残基局部坐标系相对于全局坐标系的朝向,属于 SO(3) 旋转群。纸张翻转不影响它与其他折痕的夹角。
    Ri∈SO(3)\mathbf{R}_i \in \mathrm{SO}(3)
  3. 平移向量 $\mathbf{t}_i$描述残基在空间中的位置,相当于指南针钉在纸面的哪个点。
    ti∈R3\mathbf{t}_i \in \mathbb{R}^3
  4. 等变距离 $d_{ij}$两个残基本质的远近,用平移向量之差的欧氏距离衡量。整体旋转后,距离数值纹丝不动,所以它天然等变。
    dijd_{ij}

结构生成流程

接到“折一只仙鹤”的委托,大师的起手式不是动纸,而是先让脑子里的纸屑飞一会儿。他由一团原本完全随机的结构出发,沿着反向扩散的路径,一步步让折痕生长出来。

生成的结构没有标准答案。给定随机噪声 $x_T \sim \mathcal{N}(0, I)$ 作为起点,模型从 t=T 一步步算到 t=0。每一步都先用噪声预测器 $\varepsilon_\theta$ 估算“上一步揉进纸里的噪声”,然后从当前结构中把它减掉,再补一点点随机性,得到更干净的 $x_{t-1}$:

实际生成时还可以注入约束。比如客户指定“嘴和翅膀尖必须落在这几个位置”,模型就在每步去噪之后,把约束区域的坐标用已知坐标覆盖回去,再对覆盖后的结构重新加噪进入下一步。这种“每步纠正”的手法叫修复式补全(inpainting),相当于大师每次展开纸后都用尺子量一下关键折痕,偏了立刻掰正:

千百次“判断—展平—校正”循环之后,纸球终于显露出仙鹤的轮廓。RFdiffusion 生成一个约 100 残基的蛋白质结构通常只要几十秒到几分钟,但每一步都遵循着从训练中学到的折纸逻辑——它不是乱揉,而是给混沌的纸团一个“变得有序”的方向。

xt−1=1αt(xt−1−αt1−αˉt εθ(xt,t))+σt z,z∼N(0,I)x_{t-1} = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{1-\alpha_t}{\sqrt{1-\bar\alpha_t}}\,\varepsilon_\theta(x_t, t)\right) + \sigma_t\,z,\qquad z \sim \mathcal{N}(0, I)
  1. 瞬态干净估计 $\hat{x}_0$由当前带噪结构反推的“这一轮想象中的干净结构”。
    x^0\hat{x}_0
  2. 约束覆盖下标 $\mathcal{M}$ 表示被指定的 motif 残基集合,将这些残基的坐标直接替换为已知的目标坐标,其余区域保持模型生成。
    [M][\mathcal{M}]
  3. 重新加噪进入下一步覆盖后的结构再加适量噪声作为下一步输入,如此反复直到 t=0,最终得到既满足约束又整体可折叠的结构。相当于“量完折痕继续折”。
    x^0[M]=x0(M)\hat{x}_0[\mathcal{M}] = x_0^{(\mathcal{M})}

典型应用场景

大师出师后,工作室门口排起了长队,委托主要分三类:第一类,客户手里只有几道关键折痕,比如“鹤的嘴尖”和“翅膀边缘”,要求补全整件作品;第二类,客户拿来了另一件作品,要求设计一个刚好嵌进去的榫卯;第三类,客户要求设计一个单元图案,能无限拼接成一面巨大的装饰墙。

第一类对应 Motif 骨架搭建。酶、抗体等功能蛋白的核心功能往往依赖几个关键残基的精确空间排布,比如催化三联体。传统方法想在这几个点周围“长出”合适的新骨架非常困难,而 RFdiffusion 把 motif 坐标作为约束,在反向扩散的每一步强制对齐,轻松完成“给定钉子,设计桌子”。

第二类对应结合蛋白设计。把靶蛋白表面的热点区域当作“锁孔”,RFdiffusion 生成一个能紧紧贴合的“钥匙”蛋白。第三类对称寡聚体设计则在生成过程中加入对称约束,让同一个单体反复出现、自组装成环形或笼形结构,是疫苗展示平台的理想骨架。对称操作可以用数学语言描述为:

从关键折痕补全,到榫卯嵌合,再到无限拼接,三类委托共享同一套手艺:在噪声中不断校正结构,让它既满足客户约束,又符合蛋白质折叠的物理规律。这也是 RFdiffusion 被称为“结构生成”而非“结构预测”的原因——它在创造从未存在过的折纸作品。

S=⋃k=1n(Rsym(k) x(1)+tsym(k))\mathbf{S} = \bigcup_{k=1}^{n} \left( \mathbf{R}_{\mathrm{sym}}^{(k)}\, \mathbf{x}^{(1)} + \mathbf{t}_{\mathrm{sym}}^{(k)} \right)
  1. 单体结构 $\mathbf{x}^{(1)}$对称寡聚体的基本单元,相当于装饰墙上的一块单位瓷砖。
    x(1)\mathbf{x}^{(1)}
  2. 对称操作对单体施加第 k 次旋转 $\mathbf{R}_{\mathrm{sym}}^{(k)}$ 和平移 $\mathbf{t}_{\mathrm{sym}}^{(k)}$,得到第 k 个拷贝。
    Rsym(k) x(1)+tsym(k)\mathbf{R}_{\mathrm{sym}}^{(k)}\, \mathbf{x}^{(1)} + \mathbf{t}_{\mathrm{sym}}^{(k)}
  3. 并集运算把这 n 个拷贝在空间里拼起来,形成完整寡聚体。相邻拷贝相差 $360^\circ/n$ 的旋转角。
    ⋃k=1n\bigcup_{k=1}^{n}

性能与优化

折纸大师也要算营业成本:有的委托耗时三分钟,有的要三天;有的作品一次成型,有的报废十张纸。RFdiffusion 的“成本账”由两个关键数字决定:设计成功率和 GPU 算力。

设计成功率指的是生成的结构中有多少能通过 AlphaFold2 等结构预测工具的“体检”:把生成的氨基酸序列喂给 AlphaFold2,如果它预测出的结构与 RFdiffusion 生成的骨架高度一致,就说明这个设计是“可折叠”的,不是纸上谈兵。在此基础上,motif 区域的骨架偏差也是硬指标——功能位点的原子坐标必须分毫不差:

算力方面,原版扩散需要几百步反向采样,每步都过一遍 SE(3) Transformer,属于 GPU 密集型任务。优化手段包括:减少采样步数(步数蒸馏)、裁剪不需要的残基区域、用小模型预筛选再放大。掌握成本账之后,大师就能合理接单:先用快速低步数模式批量撒网,再用 RMSD 和 AlphaFold2 双重筛选,最后只对少数高分候选做精细去噪。这套“广撒网、精捕捞”的流水线,把结构生成从实验室玩具变成了工程化工具。

RMSDM=1∣M∣∑i∈M∥xigen−xiref∥2≤1 A˚\mathrm{RMSD}_{\mathcal{M}} = \sqrt{\frac{1}{|\mathcal{M}|}\sum_{i \in \mathcal{M}} \left\|\mathbf{x}_i^{\mathrm{gen}} - \mathbf{x}_i^{\mathrm{ref}}\right\|^2} \le 1\,\text{Å}
  1. motif 集合 $\mathcal{M}$关键功能残基的坐标集合,如催化位点或结合热点。
    M\mathcal{M}
  2. 坐标差生成结构中每个 motif 残基与参考目标坐标的距离。
    xigen−xiref\mathbf{x}_i^{\mathrm{gen}} - \mathbf{x}_i^{\mathrm{ref}}
  3. 均方根求和对全部 motif 残基求平均后再开根号,得到整体偏移量。
    1∣M∣∑i∈M∥⋅∥2\sqrt{\frac{1}{|\mathcal{M}|}\sum_{i \in \mathcal{M}} \|\cdot\|^2}
  4. 1 埃阈值1 埃等于 0.1 纳米,大约是一个原子的半径。RMSD 小于 1 埃说明生成骨架把功能位点“钉”得几乎分毫不差。
    ≤1 A˚\le 1\,\text{Å}

实验验证流程

图纸上的仙鹤再传神,客户最终要的是能摆在桌上的实物。RFdiffusion 交出的数字结构只是“图纸”,真正的裁判是实验室:大肠杆菌里能不能表达、能不能溶、能不能测定出结构、三维结构是否真如设计的那般。

标准的验证流水线分四步。第一步是计算筛选:用 AlphaFold2 对生成序列做回环验证,统计 pLDDT 置信分数,只保留高分候选。第二步是基因合成与重组表达:把编码序列送进大肠杆菌,诱导表达目标蛋白。第三步是纯化与表征:用亲和层析和分子筛检测蛋白是否可溶、是否形成正确大小的寡聚体。第四步是结构测定:用 X 射线晶体学或冷冻电镜测出真实结构,与设计模型比对。

每一步都是概率相乘的关系——计算过关不等于表达过关,表达过关不等于结构正确:

经典案例中,Baker 团队为流感病毒血凝素设计迷你结合蛋白时,从上千个生成候选中筛选出几十个进行实验,最终多个候选在皮摩尔浓度下中和病毒。每一件成功的“折纸实物”背后,都有一沓被揉皱丢弃的废稿——这正是科学设计的常态。

P(成功)=P(pLDDT≥80)×P(可溶表达)×P(结构吻合)\mathbb{P}(\text{成功}) = \mathbb{P}(\mathrm{pLDDT} \ge 80) \times \mathbb{P}(\text{可溶表达}) \times \mathbb{P}(\text{结构吻合})
  1. pLDDT 置信门槛AlphaFold2 对每个残基预测的局部距离误差置信度,取值 0 到 100。大于 80 分视为高置信,相当于专家初筛过目。
    pLDDT≥80\mathrm{pLDDT} \ge 80
  2. 可溶表达概率蛋白在大肠杆菌中能否正确折叠并保持可溶,这一步淘汰了大量“纸上好看、实际沉淀”的设计。
    P(可溶表达)\mathbb{P}(\text{可溶表达})
  3. 结构吻合概率表达出的蛋白真实结构与设计模型高度一致,包括 motif 区域的原子级吻合。
    P(结构吻合)\mathbb{P}(\text{结构吻合})
  4. 连乘关系三步层层过滤,解释了为什么从生成到实物往往需要同时尝试几十个设计。
    ×\times

AI 应用场景

场景一:抗体模拟物的从头设计

阶段:结构生成 → 序列设计 → 实验验证

解决的问题:传统抗体开发依赖动物免疫或噬菌体展示文库,周期长、筛选成本高,且难以针对保守表位设计。RFdiffusion 直接从靶蛋白表面热点出发生成高亲和力迷你结合蛋白,几天内即可获得候选,就像大师看一眼锁孔就能打出钥匙。

具体案例:Baker 实验室用 RFdiffusion 为流感病毒血凝素设计小分子量迷你结合蛋白,借助 AlphaFold2 筛选与酵母展示实验,获得皮摩尔级亲和力的中和剂。

场景二:酶催化位点的骨架重设计

阶段:功能位点分析 → Motif 约束生成 → 活性验证

解决的问题:天然酶的热稳定性与活性难以兼得,直接改造容易破坏催化几何。RFdiffusion 可以锁定催化残基的坐标不变,重新生成外围骨架,改善稳定性而不牺牲活性,相当于保留鹤嘴的折法、重做整对翅膀。

具体案例:科研团队将金属酶活性中心作为 motif,利用 RFdiffusion 设计全新金属酶骨架,再通过定向进化提升催化活性。

场景三:疫苗展示纳米颗粒设计

阶段:对称约束生成 → 自组装验证 → 免疫评价

解决的问题:疫苗需要将抗原高密度、有规律地展示给免疫系统。传统设计难以精确控制寡聚体的对称性与尺寸,RFdiffusion 的对称约束生成让 24 聚体、60 聚体纳米笼“按图纸自组装”成为可能。

具体案例:利用对称寡聚体骨架承载新冠病毒刺突蛋白抗原表位,构建自组装疫苗纳米颗粒,在动物实验中诱导出更强的中和抗体。

Python 演示

python76 行
import mathimport random # 简易扩散蛋白质结构生成演示# 用 2D 折叠链模拟蛋白质骨架,演示前向加噪与反向去噪 ANCHORS = [    (0.20, 0.30), (0.25, 0.50), (0.30, 0.30), (0.35, 0.50),    (0.40, 0.30), (0.45, 0.50), (0.50, 0.30), (0.55, 0.50),    (0.60, 0.30), (0.65, 0.50), (0.70, 0.30), (0.75, 0.50),    (0.80, 0.30),]T = 20          # 总扩散步数BETA = 0.06     # 每步噪声强度  def forward_diffuse(anchors, t):    alpha = 1 - BETA    alpha_bar = alpha ** t    noise = [[random.gauss(0, 1), random.gauss(0, 1)] for _ in anchors]    noisy = []    for (x, y), (nx, ny) in zip(anchors, noise):        noisy.append((math.sqrt(alpha_bar) * x + math.sqrt(1 - alpha_bar) * nx,                      math.sqrt(alpha_bar) * y + math.sqrt(1 - alpha_bar) * ny))    return noisy, alpha_bar  def predict_noise(noisy, anchors):    # 玩具去噪器:假设模型已学会把带噪结构拉回记忆中的折叠模板    pred = []    for i, (x, y) in enumerate(noisy):        ax, ay = anchors[i]        pred.append((x - ax, y - ay))    return pred  def reverse_diffuse(noisy, t):    alpha = 1 - BETA    alpha_bar = alpha ** t    alpha_bar_prev = alpha ** (t - 1) if t > 1 else 1.0    pred_noise = predict_noise(noisy, ANCHORS)    cleaner = []    for (x, y), (nx, ny) in zip(noisy, pred_noise):        x0 = (x - math.sqrt(1 - alpha_bar) * nx) / math.sqrt(alpha_bar)        y0 = (y - math.sqrt(1 - alpha_bar) * ny) / math.sqrt(alpha_bar)        cleaner.append((math.sqrt(alpha_bar_prev) * x0,                        math.sqrt(alpha_bar_prev) * y0))    return cleaner  def rmsd(a, b):    return math.sqrt(sum((ax - bx) ** 2 + (ay - by) ** 2                         for (ax, ay), (bx, by) in zip(a, b)) / len(a))  def main():    random.seed(42)    print("=== 前向扩散:干净折痕逐渐被揉皱 ===")    noisy = ANCHORS    for t in range(1, T + 1):        noisy, alpha_bar = forward_diffuse(ANCHORS, t)        if t % 5 == 0:            noise_ratio = math.sqrt(1 - alpha_bar)            print("t=%2d  噪声比例=%.3f  与初始结构RMSD=%.3f"                  % (t, noise_ratio, rmsd(noisy, ANCHORS)))    print("=== 反向去噪:从纸球逐步恢复折纸结构 ===")    for t in range(T, 0, -1):        noisy = reverse_diffuse(noisy, t)        if t % 5 == 0:            print("t=%2d  恢复结构RMSD=%.3f" % (t, rmsd(noisy, ANCHORS)))    print("最终RMSD=%.3f" % rmsd(noisy, ANCHORS))    print("结构生成完成!")  if __name__ == "__main__":    main()
目的:用 2D 折叠链模拟蛋白质骨架,跑一遍 DDPM 的前向加噪与反向去噪全流程,直观展示扩散结构生成“先破坏、再修复”的核心循环。
  1. alpha_bar = alpha ** t计算到第 t 步还保留的原始信号比例,对应公式里的 $\bar\alpha_t$。
  2. math.sqrt(alpha_bar) * x + math.sqrt(1 - alpha_bar) * nx干净坐标与高斯噪声按比例混合,实现一步到位的前向加噪。
  3. pred.append((x - ax, y - ay))玩具去噪器把“与模板的偏差”当作预测噪声,模拟 $\varepsilon_\theta$ 的输出。
  4. x0 = (x - math.sqrt(1 - alpha_bar) * nx) / math.sqrt(alpha_bar)反向公式的核心:从带噪结构中剥离预测噪声,还原干净估计。
  5. cleaner.append((math.sqrt(alpha_bar_prev) * x0, ...))把干净估计缩放到上一步的保留比例,让结构逐级“展开”。
  6. if __name__ == "__main__":可执行入口,直接运行即可看到 RMSD 从大变小、从乱到整的全过程。

常见误区

误区很多初学者把 RFdiffusion 和 AlphaFold 归为一类,觉得它俩都是“输入序列、输出结构”,只是 RFdiffusion 更高级。

正解AlphaFold 是“照相机”,负责把已有的氨基酸序列翻译成它应有的三维结构;RFdiffusion 是“画家”,输入是一团随机噪声,输出的是全新的、自然界未必存在的结构。一个是理解,一个是创造,方向完全相反。

为何常见:两者都在做“蛋白质结构”这件事,界面和术语高度相似,新手很容易只看输入输出、不看概率本质。

误区既然起点是随机噪声,那 RFdiffusion 生成结构是不是就等于用随机数生成器乱拼坐标?结果全靠运气?

正解反向去噪的每一步都由训练好的噪声预测器引导,结构沿着“更像真实蛋白质”的方向演化,不是随机游走。即使没有约束条件,模型也会自然地避开主链冲突、链长异常等错误构象。

为何常见:扩散模型的名字里带着“噪声”,人们容易把“有随机性”误解为“完全随机”。

误区听到“SE(3) 等变性让网络对旋转平移不敏感”,就以为输出结构与输入朝向完全无关。

正解等变性是“输入旋转,输出跟着旋转;输入平移,输出跟着平移”,内部几何不变;不变性才是“怎么转结果都不变”。纸鹤整体转 90°,模型输出的结构也转 90°,而不是变成一只鸭子。

为何常见:“等变”和“不变”只差一个字,且都描述“对变换鲁棒”,极易混淆。

误区RFdiffusion 输出一段 PDB 坐标,看起来有板有眼,是不是直接照着做就能拿到蛋白质?

正解生成结果只是计算假说。AlphaFold2 回环验证、pLDDT 筛选、可溶表达、结构测定,每一关都会淘汰大量候选。经验上只有少部分设计能完整走完湿实验流程。

为何常见:AI 生成的结果视觉冲击力强,PDB 文件又是标准格式,容易让人忽略它只是“未经实验检验的图纸”。

误区既然扩散是一步一步去噪,那把 T 从 1000 压缩到 10,生成不就快 100 倍,何乐而不为?

正解步数压缩会直接降低结构质量,主链长度异常、侧链碰撞概率上升。工程上需要用蒸馏等手段重新训练模型,才能用更少步数保持质量,属于“用训练时间换推理时间”。

为何常见:只看推理时间不看质量曲线,是工程优化中最常见的直觉误区。

面试题

Q1. RFdiffusion 本质上属于哪一类生成模型?

单选题 · easy

  • A.自回归语言模型
  • B.扩散概率模型← 正确答案
  • C.对抗生成网络
  • D.变分自编码器

答案:B。RFdiffusion 基于去噪扩散概率模型(DDPM),通过“前向加噪、反向去噪”生成蛋白质结构。它不用语言建模,也非生成对抗或变分自编码路线。就像折纸大师学的是“揉皱—展开”的倒放逻辑,而非背诵现成图纸。

Q2. 前向扩散过程中,蛋白质结构会发生什么变化?

单选题 · easy

  • A.逐渐折叠成稳定形状
  • B.逐渐被噪声破坏瓦解← 正确答案
  • C.序列长度不断增加
  • D.氨基酸种类被替换

答案:B。前向扩散不断叠加高斯噪声,干净结构逐渐瓦解为随机坐标,对应把折好的作品慢慢揉成纸球。折叠发生在反向去噪阶段;加噪不改变序列长度和氨基酸种类。

Q3. 关于 SE(3) 等变性,下列说法正确的是?

单选题 · mid

  • A.输入旋转时输出保持不变
  • B.输入旋转时输出随之旋转← 正确答案
  • C.输出结果与输入完全无关
  • D.只有平移影响输出结果

答案:B。等变性的含义是输出跟随输入的变换而变换:纸鹤整体旋转 90°,模型输出的结构也旋转 90°,但内部相对几何不变。A 描述的是不变性,C 是无关性,D 只对了一半。

Q4. RFdiffusion 中每个残基的“帧”由哪两部分组成?

单选题 · mid

  • A.平移向量与旋转矩阵← 正确答案
  • B.氨基酸序列与长度
  • C.能量值与温度参数
  • D.溶剂分子坐标信息

答案:A。帧由旋转矩阵 R 和平移向量 t 构成局部坐标系,残基的相对方向放在帧里描述,天然满足 SE(3) 等变性。序列、能量和溶剂信息都不属于帧的定义。

Q5. Motif 骨架搭建任务中,模型的核心做法是?

单选题 · mid

  • A.删除 motif 区域重新设计
  • B.固定 motif 并补全其余结构← 正确答案
  • C.把 motif 翻译成氨基酸
  • D.用能量最小化替换 motif

答案:B。Motif 搭建把功能残基坐标作为约束,在反向去噪每一步覆盖回已知坐标,其余区域自由生成,即“给定钉子设计桌子”。删除或替换 motif 都会破坏功能位点。

Q6. 反向扩散中,噪声预测器 ε_θ 的作用是什么?

单选题 · mid

  • A.预测被加入的噪声并去除← 正确答案
  • B.预测下一个氨基酸类别
  • C.计算结构的自由能大小
  • D.将结构压缩为低维向量

答案:A。模型输入带噪结构和时间步 t,输出“这一步被加了什么噪声”,再按反向采样公式把噪声减掉。预测氨基酸、算自由能、做压缩都是其他模型的任务。

Q7. 下列哪些属于 RFdiffusion 的典型应用场景?

多选题 · mid

  • A.结合蛋白设计← 正确答案
  • B.对称寡聚体设计← 正确答案
  • C.序列比对分析
  • D.全新蛋白生成← 正确答案

答案:ABD。RFdiffusion 三大主流应用是结合蛋白(锁钥嵌合)、对称寡聚体(重复拼接)与全新蛋白生成(从纸球折出新品)。序列比对是生物信息学中的序列分析任务,不属于结构生成。

Q8. 关于结构生成后的验证流程,正确的说法有?

多选题 · hard

  • A.结构预测工具可辅助筛选← 正确答案
  • B.置信分数越高代表越可信← 正确答案
  • C.生成结构无需实验即可用
  • D.实验测定是最终确证手段← 正确答案

答案:ABD。AlphaFold2 回环验证、pLDDT 过滤、湿实验表达与结构测定构成完整流水线。生成结构只是图纸,不经实验确证不能作为最终产品,C 错误。

Q9. 训练损失公式中的 ε 指的是哪个量?

单选题 · hard

  • A.模型输出的结构坐标
  • B.前向过程加入的噪声← 正确答案
  • C.蛋白质的折叠自由能
  • D.氨基酸序列的独热编码

答案:B。损失函数 $\mathcal{L}=\mathbb{E}\|\varepsilon-\varepsilon_\theta\|^2$ 中,ε 是前向扩散真实加入的高斯噪声,ε_θ 是模型预测值。让两者尽量一致,模型就学会了“揉纸的力度”,从而能在反向时准确修复。

Q10. 关于 RFdiffusion 的结构生成过程,正确的有?

多选题 · extreme

  • A.结构生成需要多轮迭代去噪← 正确答案
  • B.帧的旋转矩阵属于SO3群← 正确答案
  • C.前向过程结束后接近纯噪声← 正确答案
  • D.反向过程不需要任何随机噪声

答案:ABC。生成从 t=T 到 t=0 逐轮去噪,帧的旋转矩阵属于 SO(3) 旋转群,前向足够多步后原始信号几乎归零、结构接近纯噪声。反向每一步通常会保留少量随机噪声 $\sigma_t z$ 以维持多样性,D 错误。