Lecture 17 · 生物学 AI 的训练数据:蛋白质序列、结构与基因组 · Training Data for AI in Biology

Training Data for AI · Lecture 17。个人学习讲义与配套实验,按主题整理并持续修订。

课程源码 ZIP ↓

个人整理的学习笔记,非官方讲义;课程来源与整理说明见课程介绍。配套示例未逐一运行验证。

本篇目录

对应 Maps to:Stanford CS525 Winter 2026 Training Data for AI,2/23 客座讲座 Training data for AI in biology:Cade Gordon Lessons in Sequence Modeling: The Oldest Living Dataset(46 页 slides);Jonah Kallenbach Training Data for AI in Biology: Protein Structure & Small Molecules(50 页 slides,另有 HTML 版本)。阅读(Gordon):ESM-1b(Rives et al.)、ESMFold(Lin et al. 2023)、ESM3(Hayes et al.)、Evo(Nguyen et al. 2024)、Evo 2(Brixi et al. 2025);阅读(Kallenbach):AlphaFold 2(Jumper et al. 2021)、RFdiffusion(Watson et al. 2023)、AlphaFold 3(Abramson et al. 2024)、Boltz-2(Passaro et al. 2025)。 依据说明:Kallenbach 的 slides 文字完整,是本讲后半部分的骨架。Gordon 的 slides 文字很少(大部分是图),我依据它的三个论点和各页标题,结合论文的摘要组织内容;slides 里只以图的形式出现的结论(例如”只靠扩大规模反而让零样本适应度预测变差”)讲义里标明是”slides 的结论”。几篇 bioRxiv 和期刊论文我无法打开全文,相关数字核对过摘要、论文主页或多个一致的公开来源(例如 Evo 2 的 9.3 万亿个核苷酸、ESM3 的 27.8 亿个蛋白质);AlphaFold 2 自蒸馏的细节来自论文的方法部分(经二手资料核对)。第 8 节”统一的视角”、第 9 节”延伸与前沿”和全部代码是我补充的。 配套代码 Code:code/lecture17/(numpy;3 个脚本 + 1 个模块;最长的约 3 秒) 预计阅读时间:2.5 小时(含运行代码)


0. 本讲导航 · How to read this lecture

0.1 学习目标 Learning goals

  1. 说清楚生物数据的三个层次——序列、结构、功能 / 结合——以及它们之间巨大的规模差距:序列有几亿到几十亿条,结构只有约 22 万个,可靠的功能标签更少。
  2. 理解 Gordon 的第三个论点:进化给了数据一个天然的层级,按序列相似度聚类(UniRef)就是生物学版的语义去重;会解释 ESM-2 为什么”在 UniRef50 的簇上均匀采样、再从簇里取一条 UniRef90 的序列”。
  3. 理解训练 / 测试划分里的同源泄漏:随机划分为什么会严重高估模型,以及 AlphaFold、CASP 怎样避免它。
  4. 理解零样本适应度预测的原理和它对数据的依赖:序列的数量、冗余、加权(有效序列数),以及 Gordon et al. 的”偏好”。
  5. 理解 AlphaFold 的数据工程:PDB 和 CASP、按 40% 相似度聚类、自蒸馏;共进化信号依赖有效的序列数。
  6. 理解小分子的数据为什么更难:表示、活性悬崖、没有进化信号、标签噪声(不同来源之间 R² = 0.31),以及”化学 AI 是不是过拟合奥运会”。

0.2 先修与本讲范围 Prerequisites & scope

默认你已经会 Assumed本讲不展开 Not covered
第 4、6 讲:去重;第 14 讲:评测的泄漏和噪声分子生物学的细节(剪接、调控、表观遗传)
掩码语言模型 vs 自回归语言模型AlphaFold 的网络结构(Evoformer、结构模块)
逻辑回归、Spearman 相关扩散模型做蛋白质设计的数学

0.3 本讲地图 Map

§1  为什么是生物学:"最古老的活数据集"
§2  数据从哪里来:DNA、蛋白质、结构、小分子
§3  进化的层级与 UniRef:领先的数据过滤          ← 代码 01 演示 1
§4  划分与同源泄漏                               ← 代码 01 演示 2
§5  序列模型:卡在 BERT 时代?零样本适应度与"偏好"  ← 代码 02
§6  结构:PDB、CASP、AlphaFold 的数据工程、共进化   ← 代码 03 演示 1
§7  小分子与结合:吵闹的标签与过拟合奥运会         ← 代码 03 演示 2
§8  一个统一的视角
§9  延伸与前沿
§10–14  小结、常见误区、练习、延伸阅读、下一讲预告

0.4 关于数字

论文的数字来自论文和 slides。代码的数字来自一个合成蛋白质宇宙(protein_world.py):

  • 蛋白质 = 长度 40 的氨基酸序列。每个家族有一个”适应度景观”——Potts 能量:每个位点对 20 种氨基酸的偏好(有的位点高度保守),加上三维结构里相互接触的位点对之间的耦合(共进化)。
  • 家族成员沿一棵进化树产生:从祖先出发,每条分支上”随机突变 + 自然选择”(Metropolis 接受)。越晚分开的序列越相似。
  • 数据库:家族大小是长尾的;一部分分支被”反复测序”,留下大量几乎相同的序列——这就是真实数据库的冗余。
  • 结合亲和力的演示用一个单独的”药物化学”小世界(40 个靶点、60 个化学骨架、每次测量属于一个有系统偏移的实验)。

所有模型都很简单(谱、逻辑回归、平均场 DCA、岭回归),但数据现象(冗余、泄漏、有效序列数、标签噪声)和真实世界同构。代码固定了随机种子,同一台机器上重复运行输出逐字相同。


1. 为什么是生物学 · Why biology

1.1 一个奇迹

Gordon 用一个故事开场:Victoria Gray 是第一批接受 Casgevy 治疗的镰状细胞病患者。Casgevy 是第一个获批的基于 CRISPR 的基因编辑疗法(2023 年)。镰状细胞病完美地体现了分子生物学的中心法则怎样一级一级地传递:

DNA →转录 mRNA →翻译 蛋白质序列 → 三维结构 → 功能\text{DNA}\ \xrightarrow{\text{转录}}\ \text{mRNA}\ \xrightarrow{\text{翻译}}\ \text{蛋白质序列}\ \to\ \text{三维结构}\ \to\ \text{功能}

β-珠蛋白基因的一个核苷酸的改变,让蛋白质的一个氨基酸从谷氨酸变成缬氨酸;这个疏水的氨基酸让血红蛋白在缺氧时聚集成长纤维,红细胞变成镰刀形,引起疾病。

1.2 Gordon 的三个论点

  1. 生物序列数据天生就适合分词:DNA 是 4 个字母的序列,蛋白质是 20 个字母的序列——对语言模型来说,“只是换了一个分词器”。
  2. 生物序列模型还卡在 BERT 时代:大多数模型是掩码语言模型,每个下游能力都要专门的数据或”算术”去引出(§5)。
  3. 生物数据的过滤领先于机器学习的数据过滤:进化给了数据一个天然的层级(§3)。

他的标题”最古老的活数据集”很贴切:今天的每一条蛋白质序列,都是几十亿年”突变 + 选择”的实验结果。天然序列编码了适应度景观:保守的位点说明它重要,一起变化的位点对说明它们在三维空间里相互接触。生物 AI 的大部分成就,都是从这个数据集里读出这些信号。


2. 数据从哪里来 · Where the data comes from

2.1 DNA

获取方式说明数据库
单一物种测序(isolate)培养一种生物,提取 DNA,用 Illumina(短读长)或 PacBio / Nanopore(长读长)测序,得到一个干净的基因组NCBI RefSeq(Evo 2 的 9.3 万亿个 token 的主体);GTDB(原核生物基因组,每个物种一个,Evo 1 的训练集)
宏基因组测序(metagenomic)把一份环境样本(海水、土壤、肠道)里的所有 DNA 一起测,再用计算方法拆成几千个片段化的基因组MGnify、Tara Oceans;IMG/VR、IMG/PR(噬菌体和质粒)

宏基因组的数据”嘈杂得多,也多样得多”(slides)。

2.2 蛋白质

几乎所有蛋白质序列都不是直接测出来的,而是从 DNA 计算翻译来的:在基因组或转录组里找开放阅读框,再翻译成氨基酸序列。

数据库规模说明
UniProt / Swiss-Prot约 57 万条人工审阅的条目,带功能注释——“金标准”,很小但质量高
UniRef100 / 90 / 50上亿到几亿条UniProt 按序列相似度聚类(§3);ESM-2 的训练集
MGnify、JGI IMG数亿条宏基因组的蛋白质预测,ESM 宏基因组图谱的主体
PDB约 22 万个结构实验测定的三维结构;ESMFold、AlphaFold 用它评测

2.3 结构

Kallenbach 的数字:PDB(Protein Data Bank)1971 年创立时只有 7 个结构,免费、开放获取;2025 年约 22 万个。测定方法:X 射线晶体学约占 85%(要先长出蛋白质晶体,分辨率 1–3 Å,约 25 个诺贝尔奖与之相关);核磁共振约 7%(只适合 40 kDa 以下的小蛋白);冷冻电镜是近十年的革命(不需要晶体,能看更大的复合物)。每个结构都是几个月到几年的实验工作。“没有 PDB,就没有 AlphaFold。”

2.4 小分子与结合

ChEMBL、BindingDB、PubChem 汇集了几百万条”蛋白质-小分子”的活性测量,来自成千上万篇论文和专利,实验条件各不相同(§7)。

2.5 规模的不对称

数据量级获取成本
蛋白质序列10⁸–10⁹测序很便宜,翻译是计算
基因组 DNA10¹³ 个核苷酸(Evo 2:9.3 万亿)同上
实验结构2 × 10⁵每个几个月到几年
深度突变扫描(DMS)每个实验几千个突变;公开的几百个实验每个实验几周到几个月
结合亲和力10⁶–10⁷ 条,而且很吵每个分子要合成和测试

生物 AI 的基本策略由此而来:在便宜而海量的序列数据上自监督预训练,用昂贵而稀少的结构和功能数据去训练或评测下游能力。


3. 进化的层级与 UniRef · Evolution’s hierarchy and UniRef

3.1 冗余

原始的序列数据库极其冗余:被研究得多的物种(人、小鼠、大肠杆菌、病原体)和热门的蛋白质有大量几乎相同的条目;宏基因组让少数大家族变得极其庞大。protein_world.py 的自检:150 个家族、20580 条序列;去掉完全相同的还剩 14552 条;按 90% 相似度聚类 5084 个簇,按 50% 聚类 674 个簇;最大的家族 1666 条,中位数 83 条。

3.2 UniRef:生物学的语义去重

UniRef(2007 年起)按序列相似度对 UniProt 做层级聚类:UniRef100 合并完全相同的序列(以及它们的片段),UniRef90 把相似度 ≥ 90% 的序列聚成一簇,UniRef50 把 UniRef90 的代表序列再按 50% 聚类。每个簇有一条代表序列。聚类工具(CD-HIT、MMseqs2)本质上是贪心的:遍历序列,和已有的某个代表足够相似就并入它的簇,否则自己成为新的代表。

Gordon 的论点:这就是机器学习里的语义去重(SemDeDup,Abbas et al. 2023,用嵌入向量的相似度去掉语义上重复的样本)——生物学早就有了,因为进化给了一个天然的、可量化的相似度:序列相似度近似反映了分开的时间。家族 → 亚家族 → 物种 → 菌株,每一级都是一个自然的去重粒度。

slides 的两个例子:ESM-1 的论文(Meier et al. 2021)专门讨论了训练数据集的选择(不同的聚类阈值);ESM-2 的论文(Lin et al.)则让”一条序列离训练数据有多远”变得可以量化,并看它和模型表现的关系。

3.3 代码:同样的预算,怎样采样

代码 01 演示 1:训练一个 Pfam 式的”谱库”(每个家族一个位置特异的谱),在每个家族新进化出的 20 条序列上测困惑度(越低越好;均匀分布是 20)。四种采样方式:

采样方式训练预算不同的序列困惑度:全部小的一半家族大的一半家族
原始数据库,均匀采样400030297.318.556.25
UniRef100(去掉完全相同的)400034957.118.216.15
只用 UniRef50 的代表序列40006257.117.356.88
UniRef50 簇均匀 → 簇内随机 UniRef90(ESM-2)400022836.556.666.44

(预算 1000 时的排序相同:10.66 / 10.44 / 9.58 / 9.40。)

  1. 原始数据库被大家族和反复测序的分支占据,小家族分到的序列太少(8.55)。UniRef100 帮助不大——近乎相同的序列(差一两个位点)仍然很多。
  2. 只用 UniRef50 的代表序列覆盖了所有家族,但每个簇只有一条序列被反复使用:大家族的谱变得”过度自信”(6.88,比原始数据库的 6.25 还差)。
  3. ESM-2 的做法两头都好:在簇上均匀保证了覆盖,簇内随机保证了多样性(同一个簇每次给出不同的成员)。

这和第 6、7 讲的去重、第 10 讲的数据混合是同一个问题:“每个领域占多少”和”每个领域内部多不多样”要分开控制。


4. 划分与同源泄漏 · Splits and homology leakage

4.1 问题

在生物数据上,“随机划分训练集和测试集”几乎总是错的。一条测试序列和训练集里的某条序列可能只差几个氨基酸——它们是同一个蛋白质在两个近缘物种里的版本。模型只要”记住亲戚的答案”,就能在测试集上拿高分。这是第 14 讲”测试集污染”在生物学里的形式,而且比语言模型里的污染普遍得多:它不是偶然的泄漏,而是数据本身的结构。

4.2 代码:随机划分 vs 按簇 vs 按家族

代码 01 演示 2:一个”功能”标签(疏水残基的比例是否高于中位数,像”耐热性”这样由整体组成决定的性质;10% 的标签被实验噪声翻转)。三种模型:最近邻(找最相似的训练序列、抄它的标签,像 BLAST 注释)、记住每个位点的逻辑回归(800 维)、只看氨基酸组成的逻辑回归(20 维):

划分方式测试序列和训练集的最高相似度(中位数)最近邻逻辑回归:每个位点逻辑回归:氨基酸组成
随机划分(80 / 20)95%0.7120.7950.856
按 50% 相似度的簇划分55%0.6140.6950.863
按家族划分20%0.5420.6730.852

随机划分时,几乎每条测试序列都有一个 95% 相似的近亲在训练集里。按家族划分后,最近邻掉到接近瞎猜,记位点的模型掉了 12 个百分点;只看组成的模型几乎不变——它学到的是一条可以迁移的规律。随机划分不仅高估了分数,还低估了模型之间的差别(0.061 vs 0.179)。

4.3 生物学里的做法

  • 按相似度聚类后划分:把整簇放进测试集(ESM-2 保留 0.5% 的 UniRef50 簇做验证,并去掉训练集里和验证序列相似的序列)。
  • 按时间划分:AlphaFold 用某个日期之前发布的 PDB 结构训练,之后的做测试。
  • 前瞻式评测:CASP(Critical Assessment of protein Structure Prediction,1994 年由 John Moult 创立,两年一次)——实验学家先解出结构但不公开,预测者在结构公开之前提交预测,再和实验结果比较(GDT-TS 分数,0–100)。“真正的前瞻式评测——不可能有任何数据泄漏。” 这是第 14 讲 §5.5”预防污染”最彻底的形式,也是 AlphaFold 的突破能被所有人相信的原因。

5. 序列模型:零样本适应度与”偏好” · Sequence models

5.1 卡在 BERT 时代?

Gordon 的”修正主义 NLP 史”:语言模型从 BERT(掩码预测)走向 GPT(下一个词预测),生物序列模型却大多还在 BERT 那一边。他用”模型的预测任务”来区分它们:

模型预测任务数据
DNABERT 1 / 2k-mer 序列 → 被掩盖的 k-mer基因组
ESM-1b / ESM-2氨基酸序列 → 被掩盖的氨基酸ESM-1b:2.5 亿条序列、860 亿个氨基酸;ESM-2:UniRef(§3)
ESM3序列 + 结构 token + 功能类别 → 被掩盖的部分27.8 亿个蛋白质、7710 亿个不重复的 token;最大 980 亿参数
Evo核苷酸序列 → 下一个核苷酸OpenGenome:270 万个原核生物和噬菌体基因组,约 3000 亿个 token;70 亿参数、13.1 万个碱基的上下文
Evo 2同上约 9.3 万亿个核苷酸,覆盖所有生命域;400 亿参数、100 万个碱基的上下文

Evo 的标题是”数据和架构的共生”:单核苷酸分辨率、超长上下文的架构(StripedHyena),让它能利用整个基因组的数据。

5.2 每种能力都需要专门的”引出”方式

slides 第 36 页的结论:预训练数据并不能自然地引出我们关心的能力,每个下游任务都需要专门的数据或”算术”:

能力怎样从预训练模型里拿出来
突变的适应度(ESM-1v、Evo)比较似然:log p(突变) − log p(野生型)
接触预测(ESM-1)在注意力图上训练一个逻辑回归
结构预测(ESMFold)在模型上接一个结构模块再微调
DNA 分类微调
基因必需性(Evo)比较似然(插入终止密码子前后)
表达谱训练一个评分模型

这和语言模型从”预训练”走向”指令微调、RL”的历史(第 8、9 讲)形成对照:生物序列模型还没有一个统一的”后训练”范式。

5.3 零样本适应度为什么可行

直觉:天然序列是”突变 + 自然选择”的幸存者。如果某个位点上几乎从来没有出现过色氨酸,那么把它突变成色氨酸很可能会破坏功能——模型给它低概率,正好对应低适应度。ESM-1v(Meier et al. 2021)和 Evo 用这个原理,不看任何实验数据就能给突变排序,和深度突变扫描(DMS)测到的适应度相关。

代码 02 演示 1(6 个合成家族的平均;模型是一个位置特异的谱):

训练序列数10301003001000
Spearman0.5300.5940.6140.6250.646
训练数据(每个家族)Spearman有效序列数
300 条天然序列0.63235
+ 野生型的近亲被反复测序 1000 次(不加权)0.459
+ 同上,按相似度加权0.62135
  1. 天然序列越多越准。
  2. 冗余有害:野生型的近亲被反复测序后,谱被这一个分支主导——它反映的是”这几个物种恰好是什么样”,而不是”整个家族在进化中允许什么”。
  3. 按相似度加权(每条序列的权重 = 1 / 相似度 ≥ 80% 的邻居数)恢复了大部分。权重之和叫有效序列数(N_eff):1300 条序列的 N_eff 和 300 条天然序列一样,约 35——那 1000 条复制品几乎没有新信息。序列加权是生物信息学的老传统,比机器学习的”软去重”早了几十年。

5.4 Gordon et al.:“偏好”

slides 第 37 页的结论很反直觉:只靠扩大规模,反而会让零样本适应度预测变差(Gordon et al. 2024)。Gordon, Lu & Abbeel 的论文 Protein Language Model Fitness Is a Matter of Preference 给出了一个解释:模型对野生型序列的似然(“偏好”)能预测它在这个蛋白质上的零样本能力;过度偏好和偏好不足都有害。他们用影响函数(第 13 讲)追溯原因,发现同源序列在训练数据里造成了幂律式的长尾影响;对偏好不足的蛋白质,可以用无监督的微调补救。

代码 02 演示 2 用一个刻意简化的类比:一个”记忆型”的模型(训练序列周围的核混合,μ 越小越会记住训练序列):

模型Spearman(训练集里没有野生型)野生型的偏好Spearman(野生型出现 20 次)野生型的偏好
记忆型,μ = 0.5(平滑)0.428+2.00.386+4.6
记忆型,μ = 0.30.348+2.50.310+5.3
记忆型,μ = 0.150.248+3.00.218+6.0
记忆型,μ = 0.07(记得最牢)0.216+3.50.188+6.6
位置特异的谱0.629

越会记住训练序列,越偏爱野生型,预测越差。记住了训练集的模型,对一个突变的判断主要取决于”训练集里有没有一条恰好带着这个突变的近亲”,而不是”这个位点在进化中允许什么”。这个模拟不是真实的蛋白质语言模型,它只说明了”偏好越高、预测越差”在一个透明的模型里是怎么发生的;真实模型的机制见 Gordon et al.。

数据视角的启示:零样本能力依赖训练数据里同源序列的分布。去重、加权、按簇采样不只是为了”效率”,它们直接决定了模型学到的是”进化的规律”还是”数据库里恰好有什么”。


6. 结构:PDB、CASP 与 AlphaFold · Structure

6.1 结构预测的弧线

Kallenbach 的图:CASP 的中位数 GDT-TS 从 1994 年到 2016 年几乎是平的,PDB 结构数稳步增长;2018 年 AlphaFold 1 开始上升,2020 年 AlphaFold 2 在 CASP14 上达到 GDT-TS ≈ 92.4——达到实验的精度,解决了一个 50 年的大难题;2024 年诺贝尔化学奖。AlphaFold 蛋白质结构数据库现在有 2 亿多个预测结构,覆盖几乎所有已知的蛋白质序列。但它预测的是结构,不是动态或功能;而且它需要 PDB——50 年辛苦的实验工作。

6.2 AlphaFold 的数据工程

slides 第 22 页的标题是”AlphaFold:数据工程很重要”:

  1. 按 40% 的序列相似度聚类 PDB:先在簇之间均匀采样,再在簇内均匀采样——和 ESM-2 的 UniRef 采样是同一个思路,防止大量相似的结构(例如同一个蛋白质的几百个突变体结构)主导训练。
  2. 含噪学生式的自蒸馏(noisy student distillation):用训练好的模型预测约 35 万条来自 Uniclust30 的多样序列的结构,只保留高置信度的预测,然后从头训练一个新模型,混合 PDB 和这些预测结构(训练样本里约 75% 来自蒸馏集)。PDB 只有约 20 万个结构,蒸馏把”有标签的”训练样本扩大了好几倍,显著提高了精度。这是第 11 讲”合成数据”和第 8 讲”自举”的又一个例子——而且它有效,因为有置信度可以过滤。
  3. 用数据增强代替架构的等变性:AlphaFold 3 去掉了 AlphaFold 2 的不变点注意力(IPA),改用训练时的随机旋转和平移——“把对称性放进数据里,而不是放进架构里”。AlphaFold 3 还用 AlphaFold-Multimer 的预测做”交叉蒸馏”,减少在无序区域上的幻觉。

slides 第 49 页的 SimpleFold(Wang et al. 2025,slides 上写作 Jing et al.)把这个思路推到极端:一个比 AlphaFold 2 简单得多的通用 Transformer(slides:核心训练代码约 800 行、前向传播快约 25 倍;最大 30 亿参数),训练数据的主体是约 900 万个蒸馏出来的预测结构,再加上实验的 PDB 数据(slides 说”不在 PDB 上训练”,论文摘要写的是两者一起用),就接近了 AlphaFold 2 的精度。Kallenbach 的问题:“也许是数据,而不是架构?”

6.3 共进化与有效序列数

AlphaFold 2 的输入不只是序列,还有它的多序列比对(MSA):在序列数据库里搜索同源序列、对齐。MSA 里的共进化信号——两个位点一起变化——直接指向三维接触。在深度学习之前,平均场 DCA(Morcos et al. 2011)等方法就从 MSA 里估计接触。

代码 03 演示 1(平均场 DCA,3 个合成家族的平均;随机猜的精确率约 0.04):

MSA 里的序列3010030010003000
有效序列数2991218398476
接触精确率0.180.190.380.470.51
MSA接触精确率
100 条多样的序列(加权)0.29
+ 5 条序列各被测序 400 次,不加权(共 2100 条)0.19
+ 同上,加权(有效序列数 93)0.29

共进化是一个二阶统计量,需要很多相互独立的进化”实验”。冗余的复制品不仅没有帮助,不加权时还有害——协方差被那 5 条序列之间的差异主导,产生大量假的共变。AlphaFold 2 的论文也观察到:MSA 的有效深度很浅(中位数 N_eff 低于约 30)的蛋白质,预测的准确率明显下降。蛋白质语言模型(ESMFold)的动机之一,就是把几亿条序列里的进化信息压缩进模型参数,不再为每个蛋白质现场搜索 MSA;ESM 宏基因组图谱用它为 6 亿多条宏基因组蛋白质预测了结构。

6.4 从预测到设计

RFdiffusion(Watson et al. 2023)把问题反过来:从功能出发,设计结构,再设计序列。它用 RoseTTAFold 作为去噪网络,在蛋白质骨架上做扩散,能做无条件生成(全新的折叠)、基序支架(围绕一个功能位点构建蛋白质)、结合物设计、对称组装、部分扩散(在已有设计周围多样化),设计出的蛋白质经过了实验验证。它同样建立在 PDB 之上。


7. 小分子与结合:吵闹的标签 · Small molecules and binding

7.1 小分子

小分子是分子量通常小于 900 道尔顿的有机化合物:约 90% 的获批药物,还有农药、半导体、光伏材料、染料、催化剂……一个分子能改变世界(青霉素估计挽救了约 2 亿条生命)。它们的表示方式本身就是数据设计:

  • SMILES(1988):把分子写成字符串(乙醇 CCO,阿司匹林 CC(=O)Oc1ccccc1C(=O)O)——紧凑、通用,常被直接喂给机器学习模型;但一个小编辑就可能让字符串变得不合法,也没有自然的分词。
  • ECFP 指纹(Morgan 1965 → Rogers & Hahn 2010):把每个原子在不同半径内的局部环境哈希成比特,折叠成 1024 或 2048 位的向量——几十年来化学信息学的主流表示;稀疏、可解释,但不可微。
  • 神经图指纹(Duvenaud et al. 2015):把 ECFP 的每一步换成可微的对应物,端到端学习,开启了化学的图神经网络。

7.2 为什么小分子比蛋白质难

Kallenbach 列了五个原因:

  1. 标签更吵:活性数据来自协议各异的实验;结构数据更统一。
  2. 图,不是序列:SMILES 的线性化很脆弱。
  3. 活性悬崖:改一个原子,活性可能变化几个数量级;蛋白质的适应度景观更平滑。
  4. 没有进化信号:蛋白质有几亿条进化出来的序列可以自监督学习;小分子没有对应物。
  5. 数据极小、空间极大:类药分子约 10⁶⁰ 个,有标签的数据集很小,而且不同来源不一致。

7.3 数据质量危机

一个药物平均要约 10 亿美元、约 10 年。准确的结合预测会彻底改变药物发现,但数据本身是瓶颈:

  • 三种量不一样:IC₅₀(抑制 50% 活性所需的浓度,依赖实验条件,最常报告但最不可比)、Kᵢ(校正了底物浓度,更可比但仍依赖实验)、K_d(解离常数,热力学量,金标准但最难测)。同一对分子,三者可能相差 10–100 倍。
  • 不同来源之间的一致性:Kalliokoski et al.(2013)发现,同一对蛋白质-分子在不同来源的 IC₅₀ 测量之间 R² = 0.31,平均绝对误差 0.50 个对数单位(约 3 倍)。如果标签和它自己的 R² 只有 0.31,任何模型对这些标签的上限约为 R² ≈ 0.56(Brown, Muchmore & Hajduk 2009:Rmax⁡2=σ真实2/(σ真实2+σ实验2)R^2_{\max} = \sigma^2_{\text{真实}} / (\sigma^2_{\text{真实}} + \sigma^2_{\text{实验}}))。
  • 其他陷阱:正例偏差(数据集严重偏向已知的结合物,真正的阴性未知);口袋过拟合(模型记住特定的结合位点,而不是学到通用的结合物理);只靠配体的信号(大部分预测能力来自配体本身——大小、亲脂性——根本没用到蛋白质的信息);构象变化(结合时蛋白质和配体都会改变形状)。slides 的结论:“很多发表的模型并不比记住训练集更好——仔细的评测至关重要。”

7.4 代码:标签噪声与划分

代码 03 演示 2:40 个靶点、60 个化学骨架(每个 10 个衍生物);真实的亲和力 = 骨架的整体活性 + 分子大小 + 靶点偏移 + 特异性交互;每个分子主要在 2 个靶点上测过;每次测量属于一个有系统偏移的实验。两个来源对同一批配对的测量之间 R² = 0.31(噪声是我为了接近 Kalliokoski et al. 的数字而选的);一个来源和真实值之间 R² = 0.53——这就是任何模型的上限。

划分方式模型R²(对测量值)R²(对真实值)
随机划分只看配体0.230.53
配体 + 靶点(含 5120 维交互项)0.110.43
(知道真实值的模型)0.511.00
按化学骨架划分只看配体0.06−0.06
配体 + 靶点−0.01−0.35
按靶点划分只看配体0.210.36
配体 + 靶点0.170.21
  1. 随机划分时,只看配体的简单模型反而更好:同一个化学系列同时出现在训练集和测试集里,记住”这个系列整体有多强”就能拿到大部分分数;复杂模型的交互项在 1000 多个样本上过拟合了。
  2. 按化学骨架划分,两个模型都失败了:随机划分上的分数主要是对化学系列的记忆。
  3. 按靶点划分,复杂模型学到的交互项在没见过的靶点上全都用不上。

这就是 Kallenbach 那张”化学 AI 是不是一场过拟合奥运会?“的意思。

7.5 数据还是架构?

  • Boltz-2(Passaro et al. 2025):完全开源(权重和训练代码),同时预测三维复合物结构和结合亲和力;在 PDB 结构和 ChEMBL 等来源的结合数据上训练(作者说原始的公开结合数据因实验差异和噪声不能直接用,需要专门的整理、采样和监督方式);接近绝对结合自由能(ABFE)计算的精度,快约 1000 倍。
  • AlphaFold 3(Abramson et al. 2024):基于扩散的结构模块;小分子、DNA、RNA、离子都是一等公民——“共折叠”一切。
  • HERMES(Leash Bio):一个简单的交叉注意力结构(ESM2 + ChemBERTa),在他们自己平台产生的海量 DNA 编码化合物库(DEL)筛选数据上训练,在结合预测上和 Boltz-2 有竞争力。

Kallenbach 的五条结论:(1) 在好数据上训练的简单模型,会打败在坏数据上训练的复杂模型;(2) 数据 + 评测 → 突破:PDB 和 CASP 成就了 AlphaFold,ChEMBL 和 PDBBind 成就了结合预测;(3) 表示很重要;(4) 结合预测很难:吵闹的标签、有偏的数据、评测陷阱;(5) 开放问题:复杂的生物物理方法(AF3、Boltz-2)是否会打败在海量数据上训练的简单模型——还是两者可以兼得?


8. 一个统一的视角(补充) · A unified view

生物数据最独特的地方是:它自带一个天然的、可以量化的相似度——进化距离(序列相似度)。去重、采样、加权、划分,全都建立在它上面。把本讲的做法和这门课的其他讲次对照:

生物学里的做法通用的概念相关讲次
UniRef100 / 90 / 50 的层级聚类语义去重第 4、6 讲
ESM-2:簇上均匀 → 簇内随机分别控制”每个领域占多少”和”领域内部的多样性”第 10 讲(数据混合)
序列加权、有效序列数 N_eff软去重;“有效数据量”不等于条数第 7 讲(重复与数据受限)
按簇 / 按时间划分;CASP测试集污染;前瞻式评测第 14 讲
AlphaFold 的自蒸馏(按置信度过滤)合成数据 + 过滤第 11 讲
SimpleFold 主要在约 900 万个预测结构上训练蒸馏第 9、12 讲
零样本适应度 = 似然之差用模型的似然当信号第 6 讲(困惑度过滤)
“偏好”与同源序列的影响记忆、数据归因第 13 讲
IC₅₀ 的来源之间 R² = 0.31标签噪声给分数设了上限第 14 讲
只看配体的捷径捷径特征、虚假相关第 2 讲
HERMES:自己产生海量筛选数据有目的地收集数据第 15 讲(机器人)

一句话总结:在生物学里,“数据从哪里来、彼此有多相似”几乎决定了一切——模型学到的是进化的规律还是数据库的偏差,评测测到的是泛化还是记忆,都取决于对这种相似度的处理。


9. 延伸与前沿 · Beyond the original lecture

本节是我补充的。

标准化的评测。 ProteinGym(Notin et al. 2023)把几百个深度突变扫描实验整理成统一的零样本适应度基准,并提供按序列相似度控制的评测方式;它让”哪个蛋白质模型更好”的比较变得可信,和第 14 讲讨论的基准建设是同一类工作。

自己产生数据。 结合预测的瓶颈在标签,越来越多的团队选择自己产生一致、大规模的数据(DNA 编码化合物库筛选、高通量的突变扫描、自动化实验室),而不是整理来源各异的公开数据——这和第 15 讲”机器人必须收集而不是爬取数据”是同一个逻辑,也印证了 Kallenbach 的第一条结论。

预测结构作为训练数据。 AlphaFold 数据库的 2 亿多个预测结构正在被用作下游模型的训练数据(SimpleFold 就是一例)。这带来第 11 讲的老问题:生成模型的系统性错误(例如在某类蛋白质上自信地出错)会被下游模型继承;按置信度过滤能缓解,但不能消除。

基因组模型的数据组成。 基因组语言模型面对的选择和文本模型很像:编码区和非编码区、原核和真核、重复序列各占多少(第 10 讲的数据混合),以及怎样处理极度冗余的物种和菌株(本讲 §3)。


10. 小结 · Summary

  1. 规模的不对称:序列 10⁸–10⁹ 条(测序便宜),实验结构约 22 万个,可靠的功能和结合标签更少。生物 AI 的基本策略是在海量序列上自监督预训练,用稀少的结构和功能数据训练或评测下游能力。
  2. 进化的层级是天然的去重:UniRef100 / 90 / 50;ESM-2 在 UniRef50 的簇上均匀采样、再从簇里取一条 UniRef90 序列,兼顾覆盖和多样性(代码:困惑度 6.55 vs 原始数据库 7.31)。
  3. 同源泄漏:随机划分时测试序列几乎都有近亲在训练集里(相似度中位数 95%),“抄近亲的答案”看起来像学会了;要按簇、按家族、按时间划分,CASP 用前瞻式评测彻底避免泄漏。
  4. 零样本适应度来自”天然序列是自然选择的幸存者”;它依赖序列的数量和多样性,冗余有害、加权有效(有效序列数);越会记住训练序列的模型越偏爱野生型、预测越差(Gordon et al. 的”偏好”)。
  5. AlphaFold 的数据工程:按 40% 相似度聚类采样、含噪学生式的自蒸馏、用数据增强代替等变架构;共进化信号依赖有效序列数,不是条数。
  6. 小分子更难:没有进化信号、活性悬崖、表示脆弱;结合数据的来源之间 R² 只有 0.31,任何模型的上限约 0.56;随机划分上的高分常常来自对化学系列的记忆。
  7. Kallenbach 的结论:在好数据上训练的简单模型会打败在坏数据上训练的复杂模型;数据 + 评测(PDB + CASP)带来突破。

11. 常见误区 · Common pitfalls

  1. “数据库越大越好,直接全拿来训练。” 冗余让大家族和被研究得多的物种主导训练(代码 01 演示 1)。
  2. “去掉完全相同的序列就算去重了。” 近乎相同的序列(差一两个位点)同样冗余(代码 01 演示 1:UniRef100 帮助很小)。
  3. “随机划分训练集和测试集。” 在生物数据上几乎总是高估(代码 01 演示 2)。
  4. “MSA 里的序列越多越好。” 要看有效序列数;不加权的冗余序列甚至有害(代码 03 演示 1)。
  5. “更大的蛋白质语言模型一定更会预测突变效应。” slides 的结论恰恰相反:只靠扩大规模可能更差(代码 02 演示 2 的类比)。
  6. “结合预测模型的 R² 还不到 0.5,说明模型太差。” 先看标签和它自己的一致性:R² = 0.31 的标签,上限约 0.56(代码 03 演示 2)。
  7. “复杂的模型(加了靶点信息)一定比只看配体的模型好。” 在随机划分上未必,在新骨架、新靶点上两者都可能失败(代码 03 演示 2)。

12. 练习 · Exercises

练习 1(采样) 代码 01 演示 1 里,“只用 UniRef50 的代表序列”在大的一半家族上的困惑度(6.88)比”原始数据库均匀采样”(6.25)还差,在小的一半家族上却好得多(7.35 vs 8.55)。(a) 解释两个方向各自的原因。(b) 如果训练预算缩小到只有 UniRef50 簇数的一半,ESM-2 式采样的优势还在吗?

参考答案

(a) 小家族:原始数据库里小家族的序列很少,均匀采样时它们几乎分不到训练量;按簇采样保证每个簇都有份。大家族:只用代表序列时,每个簇只有一条序列被反复使用(预算 4000、只有 625 条不同的序列),谱对这一条序列过度自信,在家族的新成员上表现差;原始数据库虽然分配不均,但大家族得到了大量不同的成员。

(b) 预算小于簇数时,每个簇最多被抽到一两次,“簇内随机”和”用代表序列”几乎没有区别(每次都是不同的簇);ESM-2 式采样相对代表序列的优势会消失,但相对原始数据库的优势(覆盖小家族)仍然在。簇内多样性的价值只有在同一个簇被多次使用时才显现——这和第 7 讲”重复几个 epoch 之后,新数据的价值才变大”是同一个道理。

练习 2(有效序列数) 一个 MSA 有 5 条序列:A、A′、A″ 彼此相似度都 ≥ 80%,B、C 和其他序列的相似度都低于 80%。(a) 按 similarity_weights 的规则算每条序列的权重和有效序列数。(b) 如果再加入 100 条 A 的复制品,有效序列数变成多少?(c) 用这个结果解释代码 02 演示 1 里 1300 条序列的有效序列数只有约 35。

参考答案

(a) A、A′、A″ 各有 3 个相似的邻居(包括自己),权重各 1/3;B、C 各 1。有效序列数 = 1/3 × 3 + 1 + 1 = 3。

(b) A 簇变成 103 条,每条权重 1/103,加起来仍然是 1;有效序列数仍然是 3。

(c) 代码里加入的 1000 条是野生型 5 个近亲的近似复制,它们和原来 300 条天然序列里的近亲落进同一个簇,整簇加起来只算很少的有效数量;而 300 条天然序列本身来自一棵只有 64 个物种的进化树,有效序列数本来就只有约 35。所以加不加复制品,N_eff 都约等于 35——复制品没有提供新的进化信息。

练习 3(R² 的上限) 假设两个来源的测量都是 yk=y+ϵky_k = y + \epsilon_k,噪声独立、方差相同(σ2\sigma^2),真实值的方差是 τ2\tau^2。(a) 证明两个来源之间的相关系数是 ρ=τ2/(τ2+σ2)\rho = \tau^2 / (\tau^2 + \sigma^2)。(b) 已知两个来源之间 R2=0.31R^2 = 0.31,求一个完美知道真实值的模型对某个来源的 R2R^2。(c) 代码 03 演示 2 里这个数是 0.53,为什么和你算的略有不同?

参考答案

(a) Cov(y1,y2)=Var(y)=τ2\mathrm{Cov}(y_1, y_2) = \mathrm{Var}(y) = \tau^2,Var(yk)=τ2+σ2\mathrm{Var}(y_k) = \tau^2 + \sigma^2,所以 ρ=τ2/(τ2+σ2)\rho = \tau^2 / (\tau^2 + \sigma^2)。

(b) ρ2=0.31\rho^2 = 0.31,ρ=0.557\rho = 0.557。完美模型对一个来源的 R2=Corr(y,y1)2=τ2/(τ2+σ2)=ρ=0.557R^2 = \mathrm{Corr}(y, y_1)^2 = \tau^2 / (\tau^2 + \sigma^2) = \rho = 0.557——这就是 slides 里的”约 0.56”,也就是 Brown et al. 的 Rmax⁡2R^2_{\max}。

(c) 代码里的噪声有两部分:每个实验的系统偏移(同一个实验里的测量共享)和独立的随机噪声;两个来源的偏移是分别抽的,而且样本是有限的(1364 个配对)。真实值的分布也不是正态的。所以 0.53 和 0.557 接近但不完全相同。

练习 4(划分设计) 你要发表一个”从蛋白质序列预测酶的催化类别”的模型。(a) 根据代码 01 演示 2,你会怎样划分数据?(b) 应该报告哪些基线?(c) 怎样让读者看到”模型的表现随和训练集的相似度怎样变化”?

参考答案

(a) 先按序列相似度聚类(例如 30% 或 50% 的阈值),按簇划分;如果可能,再加一个按时间的划分(某个日期之后才被注释的酶)。

(b) 最近邻(BLAST 式的注释转移)——它在随机划分上很强(演示 2:0.712),是判断”模型是否学到了可迁移的规律”的关键对照;一个只看简单特征的模型(例如氨基酸组成);以及多数类基线。

(c) 把测试序列按它和训练集的最高相似度分组(例如 <30%、30–50%、50–90%、>90%),分别报告准确率。演示 2 里随机划分的测试序列中位数相似度是 95%,按家族划分是 20%——不同相似度区间的结果可能完全不同。

练习 5(自蒸馏) AlphaFold 2 用自己的高置信度预测扩充训练数据。(a) 为什么要按置信度过滤?(b) 和第 11 讲的模型崩塌相比,为什么这里没有崩塌?(c) 如果模型在某一类蛋白质上自信地出错,自蒸馏会怎样?怎样发现这个问题?

参考答案

(a) 低置信度的预测错误多,把它们当作标签会把错误教给新模型;置信度和真实误差相关(pLDDT 是为此设计的),过滤后的数据大多是对的。

(b) 第 11 讲的崩塌发生在”只用上一代的输出、不断替换真实数据”时。AlphaFold 2 的蒸馏数据和 PDB 的真实结构混合训练,只做一轮,而且有置信度过滤——真实数据始终是锚点。

(c) 这些错误会被当作”高质量的标签”进入训练集,新模型会更自信地重复同样的错误(系统性偏差不会被平均掉——第 15、16 讲反复出现的模式)。要发现它,需要在独立的、前瞻式的数据上评测(CASP、发布日期之后的新 PDB 结构),并按蛋白质类别分别检查置信度和真实误差是否一致(校准)。


13. 延伸阅读 · Further reading

原课阅读(Gordon)

  • Rives et al., Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences(PNAS 2021):bioRxiv 622803。
  • Lin et al., Evolutionary-scale prediction of atomic-level protein structure with a language model(Science 2023):doi:10.1126/science.ade2574。
  • Hayes et al., Simulating 500 million years of evolution with a language model(ESM3):bioRxiv 2024.07.01.600583。
  • Nguyen et al., Sequence modeling and design from molecular to genome scale with Evo(Science 2024):bioRxiv 2024.02.27.582234。
  • Brixi et al., Genome modeling and design across all domains of life with Evo 2(2025):bioRxiv 2025.02.18.638918。

原课阅读(Kallenbach)

slides 里引用的工作

  • Gordon, Lu & Abbeel, Protein Language Model Fitness Is a Matter of Preference(ICLR 2025):bioRxiv 2024.10.03.616542。
  • Meier et al., Language models enable zero-shot prediction of the effects of mutations on protein function(ESM-1v,NeurIPS 2021)。
  • Suzek et al., UniRef: comprehensive and non-redundant UniProt reference clusters(Bioinformatics 2007)。
  • Abbas et al., SemDeDup: Data-efficient learning at web-scale through semantic deduplication(2023)。
  • Kalliokoski et al., Comparability of Mixed IC₅₀ Data – A Statistical Analysis(PLoS ONE 2013)。
  • Duvenaud, Maclaurin et al., Convolutional Networks on Graphs for Learning Molecular Fingerprints(NeurIPS 2015)。
  • Wang et al., SimpleFold: Folding Proteins is Simpler than You Think(2025):arXiv:2509.18480。
  • Elana Simon, The Illustrated AlphaFold(博客)。

本讲补充

  • Morcos et al., Direct-coupling analysis of residue coevolution captures native contacts across many protein families(PNAS 2011)——平均场 DCA。
  • Notin et al., ProteinGym: Large-Scale Benchmarks for Protein Design and Fitness Prediction(NeurIPS 2023)。

14. 下一讲预告 · Next lecture

这一讲里,“模型记住了训练数据”反复出现:同源序列让零样本预测变差,随机划分让记忆看起来像泛化。下一讲直接研究记忆本身——以及它带来的风险。

第 18 讲:隐私、记忆与数据投毒。 模型为什么会记住训练数据、为什么有时必须记住(长尾);怎样衡量一个模型泄漏了多少训练数据;网络规模的训练集怎样被少量恶意数据影响,以及去重、哈希校验、差分隐私等防御手段和它们的代价。我们会从防御的角度讲,代码只用无害的占位数据。

← 返回课程目录