scMulan
清华大学提出首个自回归生成式单细胞基础模型,将细胞表达谱编码为c-sentence,用3.68亿参数GPT架构实现零样本细胞注释、批次整合和硅基扰动生成。
Overview
📄 第21期 | scMulan: A Multitask Generative Pre-Trained Language Model for Single-Cell Analysis
清华大学团队提出scMulan:将每个细胞视为一段由基因写成的"句子",用3.68亿参数的自回归语言模型学会"阅读"和"续写"细胞的语言——不做完形填空,而是逐字生成。这是单细胞基础模型从"理解"走向"生成"的关键一步。
🔬 为什么这篇文章重要?
单细胞转录组学进入"大模型时代"已是不争的事实。过去三年,我们见证了Geneformer用排序学习教会模型理解基因调控网络,scGPT用掩码语言模型统一了多组学分析任务,UCE开创了跨物种的通用细胞嵌入空间。这些方法各有建树,但共享一个根本性的技术前提:它们本质上都在做"完形填空"。
所谓完形填空,就是给模型一个被随机遮挡了部分基因的表达谱,让它猜出被遮住的是什么。这种掩码语言模型(Masked Language Model, MLM)范式源自自然语言处理中的BERT,训练效率高,收敛稳定。但它有一个难以逾越的天花板:模型只能被动地"填补空白",无法主动地"续写未来"。你想知道这个细胞的类型是什么,模型的底层逻辑仍然是"猜出被遮住的标签"。
scMulan提出了一个根本不同的思路:不做填空,改做生成。
就像GPT写文章时一个字一个字地往后接,scMulan让模型沿着每个细胞中基因表达的"句子",自回归地预测下一个高表达基因是谁、它的表达水平有多高。这个范式转换也许看起来只是训练目标的差异,但它带来了三个深刻影响:
第一,天然的多任务统一。同一个预训练模型,只需改变一个任务提示词——<PCT>表示"请注释细胞类型",<PERT>表示"请预测扰动结果"——就可以在不同下游任务间自由切换,完全不需要微调。这种"提示词即任务指令"的理念显然深受GPT系列模型的启发:GPT-3已经证明,足够大的语言模型可以把任何任务重新定义为"续写提示词"。
第二,表达量不再被浪费。Geneformer的训练策略是把基因按表达量排序后输入模型,但表达的具体数值被完全丢弃——高表达GATA3和低表达GATA3在Geneformer眼里是等效的排序信息。scMulan保留了这一关键维度:将表达水平离散化为10个等级,以独立嵌入的方式注入模型。这意味着一对看似相同的基因共现模式——"GATA3和TBX21同时表达"——在scMulan的表示空间里会根据各自的表达等级产生不同的嵌入向量。
第三,生成即预测。自回归模型的天性是"往下续写",这让scMulan获得了一项所有MLM模型都不具备的能力:条件生成。给定一个细胞的初始c-sentence和指定的扰动条件,模型能续写出药物处理后整个转录谱的预期变化。这意味着你可以在硅基世界里进行虚拟的基因敲除实验——不需要养细胞、不需要做测序,让语言模型根据它学到的"细胞语法"去"想象"某个基因被敲除后的细胞状态。
文章发表于RECOMB 2024(Research in Computational Molecular Biology,计算分子生物学领域历史最悠久的顶级会议之一),以book chapter形式收录于Springer LNCS系列。截至当前Semantic Scholar记录38次引用。从发表渠道来看——RECOMB而非Nature Methods或Nature Biotechnology——审稿人可能认为其方法论贡献大于生物学发现规模。这也恰恰说明scMulan是一次范式级别的探索,它的核心价值不在于某一个具体的生物学结论,而在于证明了"生成式单细胞模型"这条路走得通。
🧠 核心创新:c-sentence、双嵌入与自回归生成
scMulan的核心设计可以概括为三个关键技术要素:c-sentence编码体系、基因身份与表达强度的双嵌入表示、以及任务提示词驱动的自回归生成。
一、c-sentence:把每个细胞写成一句话
一个单细胞转录组,传统上是一个约两万维的浮点数向量。scMulan的做法令人联想到Cell2Sentence将细胞转化为文本句子的思路,但实现路径截然不同——scMulan不是在自然语言空间里操作,而是定义了一门专属的"细胞形式语言"。它的基本单元是一条结构化的c-sentence:
GENE_a##LEVEL_a GENE_b##LEVEL_b ... GENE_k##LEVEL_k <PCT> CT_coarse CT_fine <#E#>
编码过程可以拆解为三个步骤:
① 基因筛选与排序。对每个细胞,只保留表达量最高的前K个基因(K≤1000),按表达值从高到低排列。这是从约20000个基因到1000个的信息压缩,选择标准是"表达量",排序依据也是"表达量"。为什么不取全局排序如Geneformer那样?因为scMulan的目标不是重建完整表达谱,而是捕捉细胞身份的"签名基因集合"——前1000个高表达基因已经足以区分绝大多数细胞类型。
② 表达量离散化。对每个细胞的表达值做min-max归一化后(将整个细胞的表达范围线性映射到[0,1]),用等距分桶(linspace)映射为1到10的等级标签。等级0保留给特殊token——任务提示词、细胞类型标签和终止符——这些非基因token不携带表达量信息。这种离散化的代价是损失了精确的定量信息,但好处是让连续的表达谱变成了离散的"词汇表",天然适配语言模型的训练框架。
③ 拼接任务提示词。句子末尾附加一个任务token(如<PCT>表示"请预测细胞类型"),模型则沿着这个提示词自回归地续写出两个细胞类型标签——先粗粒度(如"T cell")再细粒度(如"CD4+ memory T cell")——最后以<#E#>作为生成终止信号。
scMulan的词汇表规模为1011个token,包含所有涉及的基因符号、细胞类型名称和特殊功能性标记。这个数字对比自然语言模型动辄数万的词汇表显得非常紧凑——"细胞语言"确实比人类语言要"简洁"得多,它的"单词"只有基因名和细胞类型名两大类。
二、双嵌入:基因身份 + 表达强度,加在一起才是完整信号
scMulan的Transformer主干是标准的GPT-2风格架构——12层、12个注意力头、隐藏维度768、GELU激活、因果自注意力(causal self-attention)。但嵌入层做了关键的双通道设计:
| 嵌入类型 | 编码内容 | 嵌入表规模 | 物理含义 |
|---|---|---|---|
Token Embedding (wte) |
"我是GATA3" | 1011 × 768 | 基因/细胞类型的语义身份 |
Expression Embedding (wee) |
"表达等级≈8/10" | 11 × 768 | 基因在当前细胞中的活动强度 |
| 最终输入 | wte[idx] + wee[level] | — | 身份与强度的联合编码 |
两个嵌入是相加而非拼接的关系。这在设计上意味着一件很重要的事:同一个基因的不同表达水平,在768维嵌入空间中占据不同的位置。高表达GATA3(level=9)和低表达GATA3(level=2)的嵌入向量,沿着Expression Embedding对应的方向发生了系统性偏移。注意力机制因此不仅能学到"GATA3和TBX21经常一起出现"这种共现模式,还能区分"高GATA3低TBX21"和"低GATA3高TBX21"这两种生物学上截然不同的细胞状态。
做个对比就更清楚了:Geneformer对所有表达了GATA3的细胞只提供一个嵌入表示(因为它丢弃了表达量的数值,只剩下"GATA3在排序中排第几"的上下文信号)。scMulan的双嵌入相当于比Geneformer多了一个信息通道——表达强度的维度被显式编码进了模型的第一层。
三、训练目标:双头预测,同时猜基因和猜表达量
scMulan在相当于1亿个人类细胞的转录组数据上预训练,数据来源覆盖人类细胞图谱(Human Cell Atlas)等大型公共图谱的多器官、多平台整合数据集。每次训练迭代中,模型接收一个c-sentence前缀,需要同时完成两个预测任务:
- 基因身份预测:下一个token是哪个基因/细胞类型?(1011路分类,由
lm_head输出) - 表达水平预测:该基因的表达等级是多少?(11路分类,由
epx_head输出)
两个交叉熵损失相加进行联合优化。这种双头设计迫使模型同时学习两件事:基因调控网络的拓扑结构(哪些基因倾向于共表达)和调控网络的定量动态(这些基因的表达强度如何变化)。如果说Geneformer学到的是"谁和谁是朋友",scMulan学到的是"谁和谁是朋友,以及他们有多亲密"。
预训练完成后总参数量为3.68亿。推理时每个细胞约占用2GB GPU显存,代码基于Karpathy的minGPT实现并集成了flash-attention进行注意力加速。特别值得一提的是,scMulan还支持华为昇腾NPU上的推理(inference_npu.py),这是单细胞大模型中少有的对国产硬件的适配。
与其他基础模型的系统对比
| 维度 | Geneformer | scGPT | UCE | scMulan |
|---|---|---|---|---|
| 预训练目标 | MLM(完形填空) | MLM | 对比学习 | AR生成 |
| 表达量建模 | ❌ 纯排序 | ✅ 分桶嵌入 | ✅ 原始值 | ✅ 分桶嵌入 |
| 跨物种泛化 | ❌ | ❌ | ✅ 蛋白语言模型桥接 | ❌(仅人类) |
| 零样本多任务 | ❌ 需微调 | ❌ 需微调 | ⚠️ 部分支持 | ✅ 提示词切换 |
| 生成伪转录组 | ❌ | ❌ | ❌ | ✅ |
| 参数量 | 10M | 51M | 650M | 368M |
| 预训练规模 | 30M细胞 | 33M细胞 | 36M细胞 | 100M细胞 |
scMulan在两个维度上独树一帜:它是目前唯一使用纯自回归生成范式的单细胞基础模型,也是目前唯一具备生成新转录组能力的模型。它的参数/数据规模虽然不是最大(UCE的650M参数更大),但在"能力边界"上走出了自己的路。代价也很明确:失去了UCE的跨物种泛化能力——因为scMulan没有像UCE那样利用蛋白质语言模型来对齐不同物种的基因空间。
📊 关键实验结果
零样本细胞注释:不需要参考数据
scMulan在7种人类器官上验证了零样本细胞类型注释——心脏、肺、肝脏、骨髓、血液、大脑、胸腺。对每个细胞,模型基于其c-sentence自回归地生成两个标签:粗粒度细胞类型(如"T cell"、"B cell")和细粒度亚型(如"CD4+ memory T cell"、"CD8+ effector T cell")。整个过程不依赖任何参考数据集、不进行任何微调——模型完全依靠预训练阶段从1亿细胞中学到的"细胞语法"来完成推理。
这个能力背后的机制值得多说一句:scMulan是在"续写"句子时顺带做注释的。它的底层逻辑不是"这个细胞的嵌入最接近哪个已知类型",而是"读完这个细胞前半部分的基因句子,最自然的后续词汇是CD4+ memory T cell"。这跟GPT读完一段话后回答主题问题的机制本质上是一致的。
批次整合:嵌入自带批次不变性
scMulan在生成细胞类型预测的同时,自然产出一个高质量的细胞嵌入向量——取Transformer最后一层中对应细胞类型token位置的隐藏状态。由于预训练数据本身就覆盖了多平台、多实验室的异质样本(不同测序深度、不同UMI计数分布、不同实验批次),模型学到的表示天然具有批次不变性。用户调用get_cell_embeddings_for_adata()即可获得兼容scanpy下游分析的嵌入矩阵,可直接用于UMAP可视化和聚类分析。
硅基扰动实验:让AI"脑补"敲除后果
scMulan最具前瞻性的能力是条件细胞生成。给定一个初始细胞的c-sentence和一个指定的扰动条件(如"敲除FOXP3"),模型能在自回归框架下续写出扰动后的完整转录谱。这种"硅基扰动"为高通量药物筛选提供了一种全新的计算范式:研究者无需做实验,先让AI"脑补"敲除或过表达某个基因的转录后果,再决定哪些靶点值得投入湿实验验证。论文中的初步验证表明,生成数据可以通过现有分析工具的检验,且能在一定程度上反映真实的底层生物学规律。
驱动因子发现:生成过程自带归因
自回归生成的另一个衍生好处是过程可追溯。模型的每一步预测都是透明的——你知道它先预测了GATA3(表达等级8),随后预测了TBX21(等级6),然后是RUNX3(等级5)。通过分析模型对每步预测的依赖性(可以借助captum等可解释性工具),研究者可以反向推断:在某个细胞状态从A转变为B的过程中,哪些基因扮演了"关键推手"的角色?这种基于生成轨迹的归因分析为机制研究提供了一个全新的计算视角。
⚠️ 局限与展望
scMulan本身的进化就是一个生动的故事。bioRxiv上该论文存在两个版本:v1(2024年1月上线,题为"scMulan: a multitask generative pre-trained language model for single-cell analysis",10位作者)和v2(2024年12月更新,题为"Toward mastering the cell language by learning to generate",扩至13位作者,新增了扰动建模的详细结果)。半年间标题从工具名变成了愿景陈述,作者列表也在扩充——这些都表明团队仍在持续深耕。
当前的主要局限包括:
- 器官与物种覆盖有限:当前仅支持7种人类器官的零样本注释,扩展到更多组织和小鼠等模式生物需要重新收集大规模训练数据
- 千基因截断的信息瓶颈:每个细胞最多保留1000个高表达基因,这意味着大量低表达转录本(包括许多转录因子和信号分子)的信息被系统性丢弃——对稀有细胞亚型的识别可能构成挑战
- 表达量离散化精度:10级分桶对于捕捉细微的表达差异(如2倍vs 3倍变化)可能不够灵敏,未来是否可以引入连续的expression embedding值得探索
- 硅基扰动可靠性:生成式扰动的准确性离替代湿实验还有相当距离,论文中的验证主要集中在与已知生物学一致性的定性层面
- 推理效率:3.68亿参数使得单细胞级别的逐个推理成为实际应用的速度瓶颈,模型蒸馏或量化可能是实用化的必经之路
但更值得关注的不是scMulan今天能做到什么,而是它代表了什么方向。自然语言处理从BERT的完形填空走到GPT的开放式生成,经历了大约三年时间。单细胞基础模型似乎也在走同样的路——从scBERT和Geneformer的MLM范式,到scMulan的AR生成范式。一个终极愿景隐约浮现:一个真正通用的"细胞语言模型",给定任意上下文——物种、组织、年龄、疾病状态、药物处理——就能直接生成符合生物学第一性原理的虚拟细胞。这个愿景也许还需要很多年,但scMulan证明了"细胞生成"这条路可以走。
📎 论文信息
- 📄 论文:scMulan: A Multitask Generative Pre-Trained Language Model for Single-Cell Analysis | RECOMB 2024 (LNCS, Springer)
- 🔗 论文链接:https://doi.org/10.1007/978-1-0716-3989-4_57
- 📝 bioRxiv预印本:https://doi.org/10.1101/2024.01.25.577152
- 💻 代码:https://github.com/SuperBianC/scMulan
- 👥 团队:Haiyang Bian, Yixin Chen, Xiaomin Dong, Chen Li, Minsheng Hao, Sijie Chen, Jinyi Hu, Maosong Sun, Lei Wei, Xuegong Zhang | 清华大学
- 📮 通讯作者:Lei Wei
第21期,2026年5月26日。单细胞大模型论文解读系列,每期深入一篇关键论文。
Publication
scMulan: A Multitask Generative Pre-Trained Language Model for Single-Cell Analysis