一个问题,交给 AI Agent
2024 年,scGPT 在 Nature Methods 发表——一个在 3300 万人类单细胞上预训练的 GPT 风格 Transformer,拥有 5130 万参数,代表着单细胞基因组学进入"基础模型"时代。
我想知道一件事:对于手头只有几千个细胞的普通研究者,scGPT 真的比 Seurat 的 KNN 或一个简单的逻辑回归更好吗? 这个问题没有现成答案——原始论文测试的数据集规模都在 1.5 万到 2.5 万细胞之间, 而最经典的 PBMC3k(2638 个细胞)几乎没有被系统性地测试过。
我把这个问题交给了 AI Agent。 它接到任务后,自主规划了整个研究流程:微调 scGPT、设计 benchmark、对比 7 种方法、撰写论文。 我没有写一行代码。
AI Agent 独立完成了整个微调流程
AI Agent 接到任务后,自主规划了五个执行阶段:环境配置、数据预处理、模型加载、分类头训练、评估。 它独立定位并修复了 6 个依赖冲突 bug——这些 bug 我自己可能要花几天才能找到。 每一步都有可复现的代码,全程我没有介入。
环境配置与依赖修复
scvi-tools 与 jaxlib 0.6.2 存在 API 不兼容,导致 ImportError。 TOSICA 的 h5py 依赖与环境冲突。最终用 PyTorch 原生重新实现了 scVI/scANVI 和 TOSICA 的核心架构。
PBMC3k 数据预处理
标准 Scanpy 流程:过滤低质量细胞 → 归一化至 10k counts → log1p 变换 → 选取 top 2000 高变基因(seurat_v3 flavor)。 所有 7 种方法使用完全相同的预处理矩阵,保证公平比较。
scGPT 预训练权重加载
使用官方发布的 scGPT_human whole-human checkpoint,
在 3300 万人类细胞上预训练。骨干网络完全冻结,
只训练一个两层 MLP 分类头(512 → 256 → 8)。
分类头训练
AdamW 优化器(lr=1e-3,weight decay=1e-2),余弦学习率退火, 70/15/15 分层划分(train/val/test),固定随机种子 42。 输入为 top 256 高变基因的 scGPT tokenized 表示。
评估结果
在 396 个测试细胞上,冻结骨干 + MLP 头的 scGPT 达到 90.7% 准确率。 这是零任务特定架构设计下的结果——预训练表示直接迁移,无需任何结构调整。
AI Agent 设计并执行了 7 方法 × 7 指标的系统性 Benchmark
微调完成后,AI Agent 没有停下来。它自主提出: "仅凭 scGPT 一个结果无法得出结论,需要与经典方法系统性对比。" 于是它设计了整个 benchmark 框架,选定 7 种方法,统一预处理,统一评估协议—— 从 51M 参数的预训练基础模型,到 14 秒训练完的三层 MLP,再到不需要任何训练的 PCA+KNN。
所有方法使用相同的预处理数据、相同的 70/15/15 分层划分(seed=42)、 相同的 396 个测试细胞。主要评估指标为 Macro F1—— 它能正确处理类别不平衡(巨核细胞 n=2 vs CD4 T 细胞 n=172)。
| 方法 | Accuracy | Macro F1 | Macro P | Macro R | Bal. Acc | ARI | NMI |
|---|---|---|---|---|---|---|---|
| 1Deep MLP † | 0.9470 | 0.9479 | 0.9438 | 0.9532 | 0.9532 | 0.8880 | 0.8762 |
| 2Seurat (PCA+KNN) | 0.9419 | 0.9397 | 0.9333 | 0.9477 | 0.9477 | 0.8855 | 0.8683 |
| 3TOSICA ‡ | 0.9343 | 0.9263 | 0.9274 | 0.9302 | 0.9302 | 0.8672 | 0.8562 |
| 4scVI/scANVI ‡ | 0.9268 | 0.9017 | 0.9197 | 0.8939 | 0.8939 | 0.8632 | 0.8380 |
| 5PCA + KNN | 0.9419 | 0.9012 | 0.9407 | 0.8842 | 0.8842 | 0.8817 | 0.8614 |
| 6scGPT (pretrained) | 0.9066 | 0.8969 | 0.9107 | 0.8870 | 0.8870 | 0.8155 | 0.8057 |
| 7PCA + LogReg | 0.9343 | 0.8893 | 0.9246 | 0.8762 | 0.8762 | 0.8771 | 0.8547 |
† Deep MLP 为三层 MLP(hidden=512),非 Transformer(CPU 限制)。 ‡ TOSICA 与 scVI/scANVI 为重新实现版本(依赖冲突)。 主要指标:Macro F1(处理类别不平衡)。
AI Agent 给出了一个反直觉的答案
实验结束后,AI Agent 自主分析了所有结果,并提出了"数据规模依赖假说"—— 这个结论不是我告诉它的,是它从数据里自己推导出来的: 预训练的优势是数据规模和复杂度依赖的。 在 PBMC3k 这样小规模、类型分离良好的数据集上, 一个 14 秒训练完的三层 MLP(Macro F1=0.948)超过了一个 51M 参数的预训练基础模型(Macro F1=0.897)。
这与 scGPT 原始论文并不矛盾——原始论文在 hPancreas(~1.6 万细胞)、 Multiple Sclerosis(~2.5 万细胞)、Myeloid(~1.8 万细胞)上展示了优势。 PBMC3k 作为一个已经被用了多年的教程数据集,对所有方法来说都太简单了。 AI Agent 的结论是反直觉的,但数据支持它。
AI Agent 独立完成了论文写作
benchmark 结束后,我说了一句话:"把这个写成论文。"
AI Agent 自主选择了 NeurIPS 2024 格式,撰写了 Abstract、Introduction、Related Work、 Methods、Results、Discussion、Conclusion,生成了 4 张出版级图表,编译 LaTeX—— 0 个编译错误,10 页,30 条参考文献。
论文的核心贡献是:在小数据集场景下,首次系统性地对比了 scGPT 与 6 种竞争方法, 并提出了"数据规模依赖假说"——预训练优势随数据集规模和复杂度增加而显现。 这个假说是 AI Agent 从数据中自主归纳的,不是我预设的结论。
论文结构
Abstract — 7 方法 × 7 指标 benchmark,核心发现:小数据集上经典方法与 MLP 超越 scGPT 预训练。
Introduction — 基础模型在单细胞基因组学的兴起,以及"何时预训练有用"这一实践问题的重要性。
Related Work — scGPT、Geneformer、scBERT、TOSICA、scVI/scANVI、Seurat 的系统性综述。
Methods — 数据集、评估协议、7 种方法的详细描述(含重新实现的说明)。
Results — 总体排行榜、scGPT 逐类别分析、多指标雷达图、计算成本对比。
Discussion — 何时用 scGPT,何时用经典方法,研究局限性,未来方向。
Conclusion — 数据规模依赖假说,实践建议,开源代码。