个人推荐指数:⭐️⭐️

scAgent 简介

scAgent 是一个基于大语言模型(LLM)的通用单细胞注释框架,能够实现跨组织的细胞类型注释、发现新型细胞类型,并支持增量学习扩展到新细胞类型。该工具由浙江大学和哈佛大学的研究团队开发,发表于 arXiv(2025年4月)。

scAgent 的核心能力包括:

  • 跨组织细胞类型注释:在 35 种人类组织和 160 多种细胞类型上实现高精度注释
  • 新型细胞发现:能够识别参考数据中未见过的新型细胞类型(如癌细胞)
  • 增量学习:高效学习新细胞类型,仅需少量样本即可扩展模型能力
  • 批次效应校正:在存在批次效应的情况下仍能准确注释

scAgent 由三个核心模块组成:

规划模块(Planning Module):基于 DeepSeek-R1 671B 大语言模型,接收用户查询和 scRNA-seq 数据,生成详细的执行计划。

动作空间(Action Space):包含 scRNA 模型(scGPT)、MoE-LoRA 插件、增量训练工具和嵌入分析工具。

记忆模块(Memory Module):存储数据集、嵌入向量和系统历史记录,支持高效的知识检索和管理。


方法原理

整体架构

scAgent 是一个基于 LLM 的自主智能体系统,可形式化表示为:

1
scAgent = (P, A, M)

其中 P 表示规划模块(Planning Module),A 表示动作空间(Action Space),M 表示记忆模块(Memory Module)。

用户通过自然语言界面提交查询和数据文件,系统自动规划执行方案并返回结构化的自然语言答案。

工作流程:

  1. 用户提交 scRNA-seq 数据和自然语言查询
  2. 规划模块分析任务,制定执行计划
  3. 根据计划调用动作空间中的工具
  4. 结合记忆模块中的知识完成任务
  5. 返回结构化的注释结果

规划模块

规划模块基于 LangGraph 框架实现,其运行动态可形式化为:

1
S_{t+1} = f(S_t, A_t, E_t)

其中 S_t 表示当前系统状态,A_t 表示时间 t 的动作,E_t 表示时间 t 的环境信息(用户查询和输入的 scRNA-seq 数据)。状态转移函数 f 控制系统演化,S 包含工具库和记忆状态,A 包括请求分析、工具调用、信息检索和用户交互等操作。

规划模块的核心特性:

  • 使用 DeepSeek-R1 671B 作为规划 LLM,具有强大的推理能力
  • 通过预定义的提示词(prompts)引导规划过程
  • 可以调用动作空间的工具和记忆模块的信息来辅助规划
  • 支持多轮迭代优化执行计划

规划流程的三种场景:

场景一(细胞注释):当 scAgent 接收用户查询后,首先利用 LLM 分析用户需求,判断是细胞注释场景还是扩展新类型场景。在细胞注释场景中,scAgent 处理输入的 scRNA-seq 数据,使用动作空间中的 scRNA 模型和训练好的 MoE-LoRA 插件获取输入嵌入。获取嵌入后,使用嵌入分析工具评估细胞是否可能是新型细胞。如果特征空间中的距离足够近,scAgent 将输入细胞视为已知类型,并使用 scRNA 模型和 MoE-LoRA 插件预测具体类型。

场景二(新型细胞检测):如果距离较远,scAgent 将进一步使用 LLM 比较输入嵌入与记忆模块中的现有嵌入,然后做出是否为新型细胞类型的最终决定。如果结果是新型细胞类型,scAgent 会询问用户是否愿意将数据共享到记忆模块。如果用户同意,将进行增量训练。

场景三(扩展新类型):在扩展新类型场景中,scAgent 更新记忆模块中的数据集和嵌入向量,以及动作空间中的 MoE-LoRA 插件。

最后,scAgent 使用 LLM 组织结果并以自然语言形式呈现给用户。

动作空间

动作空间包含多种工具,支持不同的注释任务:

scRNA 模型

  • 使用 scGPT 作为主要的 scRNA 模型,该模型在超过 3300 万个细胞上预训练
  • scGPT 是一个预训练的 Transformer 编码器,将细胞的基因表达谱编码为潜在表示,用于细胞相似性评估
  • 添加多层感知机(MLP)分类头用于细胞类型注释任务
  • 系统保持对其他深度学习模型的可扩展性

MoE-LoRA 插件

  • 结合低秩适应(LoRA)和混合专家(MoE)架构,每个 LoRA 模块作为特定组织的专家
  • 共享基础模型的预训练权重,仅微调低秩适配器层
  • 实现高数据效率,仅需少量组织特异性训练数据
  • 支持无限扩展,可持续添加新插件
  • 组织特异性插件:工具库目前拥有超过 30 个针对特定组织(如胃、肝、肾、胸部、子宫等)的插件
  • 在注释时,scAgent 自动加载目标组织对应的插件,实现组织适应性预测
  • 通过隔离的插件参数防止灾难性遗忘,支持增量插件更新

嵌入分析工具

  • 离群点检测:利用欧几里得距离测量目标细胞嵌入与现有细胞类型簇中心之间的不相似度,用于识别可能的新细胞类型
  • 嵌入比较:利用余弦相似度量化两个细胞嵌入之间的相似性,并与记忆模块中已有的细胞特征进行比对,辅助决策

增量训练工具

  • 增量训练工具:在发现新细胞类型后,该工具能利用少量标记样本优化 MoE-LoRA 模块参数,使模型学会在下次准确标注该类型
  • 数据更新工具:负责将新获取的数据与现有数据集混合,并同步更新记忆模块中的数据集、插件及其他相关信息

记忆模块

记忆模块作为动态知识库,存储三类信息:

数据集

  • 公开数据集(CELLxGENE、Tabula Sapiens 等)
  • 持续积累的用户上传数据
  • 用于 MoE-LoRA 插件训练

嵌入向量

  • 使用 Milvus 向量数据库存储,支持高效检索
  • 包含两类嵌入:
    • 标准嵌入:由 scRNA 模型(不带 MoE-LoRA 插件)生成的隐藏状态
    • LoRA 增强嵌入:由带 MoE-LoRA 插件的 scRNA 模型生成的隐藏状态
  • 提供多角度特征视角用于嵌入分析
  • 用于新型细胞检测时的特征比较

系统历史

  • 查询日志
  • 工具执行序列
  • 缓存数据
  • 这些历史记录辅助决策并提高系统效率

技术实现细节

MoE-LoRA 架构详解

MoE-LoRA 是 scAgent 实现跨组织泛化和增量学习的核心技术,结合了低秩适应(LoRA)和混合专家(MoE)两种架构。

LoRA 原理

LoRA 通过引入可训练的低秩分解矩阵来高效微调 scRNA 模型,参数更新公式为:

1
W = W_0 + ΔW = W_0 + BA

其中:

  • W_0 ∈ R^(d×k) 表示冻结的原始参数,d 和 k 分别表示输入和输出维度
  • ΔW 表示可训练参数,可分解为两个低秩矩阵的乘积
  • B ∈ R^(d×r) 和 A ∈ R^(r×k),r 是低秩矩阵的秩

LoRA 将参数更新复杂度从 O(dk) 降低到 O(dr+rk),当 r << min(d,k) 时特别有效。

MoE 原理

MoE 架构通过门控网络动态激活特定的”专家”(子模块),在不显著增加计算成本的情况下提高模型性能:

1
y = Σ(i=1 to n) g(x)_i · e_i(x)

其中:

  • n 表示专家数量
  • g(x)_i 是第 i 个专家的门控网络输出
  • e_i(x) 是第 i 个专家对输入 x 的输出

门控网络 g(x) 可表示为:

1
g(x) = Softmax(x · W_r)

MoE-LoRA 结合

在 MoE-LoRA 架构中,每个 LoRA 模块作为一个专家,门控网络为每个专家分配混合权重,实现灵活的即插即用预测:

1
W = W_0 + ΔW_{MoE-LoRA} = W_0 + Σ(i=1 to n) g(x)_i · B_i A_i

插件类型

MoE-LoRA 插件分为两类:

  • 组织特异性插件:使用特定组织的数据训练,目标是组织内的细胞类型分类
  • 组织分配插件:将输入细胞分配到对应组织,联合训练 MoE-LoRA 组件和分类头

训练配置

  • 每个插件包含 5 个专家,每个专家对应一个秩为 8 的 LoRA 模块
  • 分类头维度设为 200,超过当前 162 种细胞类型,确保即插即用兼容性
  • 使用交叉熵损失函数
  • Adam 优化器
  • 余弦学习率衰减,防止训练后期步长过大

设计优势

  • 可扩展性:添加新组织类型只需扩展独立插件,避免全模型重训练的计算负担
  • 兼容性:通过参数隔离设计,缓解增量学习中的灾难性遗忘问题
  • 高效性:适合大规模单细胞 RNA 数据分析,为数百万单细胞的高通量分析提供经济高效的解决方案

嵌入分析工具详解

离群点检测

离群点检测用于识别与数据集大多数细胞显著不同的细胞。该工具使用基于距离的方法测量目标细胞嵌入与现有细胞类型簇质心之间的差异,采用欧氏距离:

1
D_E(x, μ) = √(Σ(i=1 to n) (x_i - μ_i)²)

其中:

  • x 表示目标细胞嵌入
  • μ 表示簇的均值向量
  • n 是嵌入空间的维度

如果细胞与簇质心的欧氏距离超过预定义阈值,则被标记为离群点。该阈值根据数据集特征动态调整,确保在不同生物学背景下的稳健检测。

嵌入比较

嵌入比较用于量化两个细胞嵌入之间的相似性,便于识别密切相关的细胞类型。该工具使用余弦相似度:

1
similarity(x, y) = (x · y) / (||x|| ||y||)

其中 x 和 y 是两个细胞的嵌入。相似度分数接近 1 表示高度相似,接近 0 表示显著差异。该指标在高维空间中特别有效,能够捕捉基因表达模式的细微差异。

新型细胞检测算法

scAgent 使用两个特征提取器获取嵌入:

双特征提取器

  • F_g:通用特征提取器,使用自监督学习(SSL)在大规模单细胞数据上预训练,捕捉细胞多样性的通用表示
  • F_s:特异性特征提取器,从 F_g 初始化,在已知细胞类型的标注数据上微调,生成针对特定分类任务优化的嵌入

对于基因表达矩阵 X ∈ R^(n×g)(n 是细胞数,g 是基因数),嵌入生成为:

1
2
E_g = F_g(X) ∈ R^(n×d)
E_s = F_s(X) ∈ R^(n×d)

其中 d 表示嵌入空间的维度。

双向量数据库

系统使用两个向量数据库 D_g 和 D_s,分别对应 F_g 和 F_s,存储所有已知细胞类型 C = {C_1, C_2, …, C_k} 中各个细胞的嵌入。

最近邻检索

对于新细胞 x_novel,计算其嵌入并在 D_g 和 D_s 中进行最近邻检索:

1
2
e_{g,novel} = F_g(x_novel)
e_{s,novel} = F_s(x_novel)

检索 top-m(如 m=10)个最近邻,形成集合 N_g 和 N_s,包含最近邻的细胞类型和相似度分数。

LLM 辅助判断

检索结果 N_g 和 N_s 被格式化为结构化提示,提供给 LLM 评估 x_novel 是否代表新型细胞类型。LLM 整合多源信息,在新型细胞和已知细胞嵌入接近时表现出色。

提示模板包含三个部分:

  • 指令:明确说明任务是使用两个向量数据库的搜索结果判断单细胞样本是新型还是已知细胞类型
  • 示例:提供四个示例,说明如何分析距离和细胞类型模式以做出决定
  • 问题:呈现两个数据库的搜索结果占位符,提示 LLM 提供 JSON 格式的决定和解释

增量训练机制

分类头扩展

首先将 scAgent 分类头的维度扩展为 C_new = C_original + ΔC,其中 ΔC 表示为新型细胞类型预留的容量。实现中设置 C_new = 200,大大超过当前细胞类别数量。实验验证表明,这种维度扩展在保持预测准确性的同时,能够随着新型细胞类型的出现实现动态可扩展性。

参数冻结策略

在增量训练期间,冻结基础模型参数 W_0,仅优化 MoE-LoRA 模块参数 ΔW_{MoE-LoRA}。这种策略相比全模型微调减少了可训练参数,显著提高训练效率。冻结的基础参数 W_0 维持现有知识表示,有效缓解传统机器学习范式中的灾难性遗忘问题。

动态插件更新

该工具实现动态插件更新机制,新获取的知识被封装在 MoE-LoRA 组件中,支持持续学习而不影响已有能力。

向量数据库实现

Milvus 向量数据库

scAgent 使用 Milvus 向量数据库存储嵌入向量,这是一个为管理和查询大规模向量数据优化的开源平台。

Milvus 的优势:

  • 可扩展性:处理数十亿向量并保持实时响应
  • 低延迟:支持高维相似性搜索
  • 灵活部署:支持单机或分布式部署
  • 多种索引算法:适应不同工作负载

嵌入组织

Milvus 将 scRNA 模型的嵌入向量组织为两个子空间:

  • 标准嵌入:预训练模型输出作为基础表示
  • LoRA 增强嵌入:MoE-LoRA 插件的任务特异性表示,提高适应性

索引方法

系统使用 IVF-FLAT 索引方法存储向量。IVF-FLAT 是一种倒排文件索引,使用 k-means 算法将向量空间划分为簇,将每个向量分配到最近的簇质心。

查询机制

查询时,Milvus 采用近似最近邻(ANN)搜索,计算相似度(如欧氏距离)并使用预构建索引快速检索 top-k 个最近嵌入。这使 scAgent 能够在大规模数据集上高效执行实时新型细胞检测。

数据准备

CELLxGENE 数据集(CG 数据集)

  • 来源:CELLxGENE 平台
  • 规模:100 万细胞,35 种人类组织,162 种细胞类型
  • 预处理:基于细胞类型进行分层采样,手动调整样本大小确保每种细胞类型和组织按比例表示

Tabula Sapiens 数据集(TS 数据集)

  • 来源:Tabula Sapiens 项目
  • 规模:约 50 万细胞,24 种人类组织
  • 特点:提供比 CG 数据集更细粒度的注释
  • 预处理:包括归一化、过滤和质量控制

数据划分

两个数据集均按 8:1:1 的比例划分为训练集、验证集和测试集,确保所有细胞类型在每个子集中都有代表。

模型训练配置

scAgent 训练

  • 冻结 scRNA 模型的原始参数
  • 仅训练 MoE-LoRA 插件
  • 每个插件包含 5 个专家,每个专家对应秩为 8 的 LoRA 模块
  • 分类头维度设为 200
  • 使用交叉熵损失函数
  • Adam 优化器
  • 余弦学习率衰减
  • 采用早停策略,训练至收敛

基线方法配置

  • scGPT:使用预训练权重初始化,冻结原始参数,仅训练 MoE-LoRA 架构和 MLP 分类头(扩展至 200 维)
  • scBERT:分类头扩展至 200 维以支持多分类任务
  • scTab (10X data):使用原始 CG 数据集(下采样前)训练的权重
  • scTab:修改分类头维度,在两个数据集上重新训练
  • MLP:隐藏层数设为 2 以防止过拟合
  • Linear:严格遵循原始配置

性能评估

跨组织细胞类型注释

在 CELLxGENE 数据集(100 万细胞,35 种组织,162 种细胞类型)上的评估结果:

方法 准确率 宏 F1 加权 F1
scAgent 最优 89.31% 最优
scTab (10X data) - 82.58% -
scGPT - - -
scBERT - - -

scAgent 的优势:

  • 宏 F1 分数达到 89.31%,比第二名 scTab (10X data) 高出 6.73 个百分点
  • 训练数据量仅为 scTab (10X data) 的十分之一,数据效率更高
  • 在 8 个关键组织(子宫、胎盘、乳腺等)上加权 F1 分数超过 99%
  • 跨组织性能稳定,标准差约为 0.07

在 Tabula Sapiens 数据集(约 50 万细胞,24 种组织)上同样表现优异,证明了跨数据集的泛化能力。

新型细胞发现

在两个癌症数据集上测试新型细胞发现能力:

  • Liver Breast Cancer:乳腺癌患者肝组织数据
  • Kidney ccRCC:透明细胞肾细胞癌患者肾组织数据

结果:

  • scAgent 能够将 96% 的新型细胞(恶性细胞)标记为”未知”
  • 对已知细胞类型的注释准确率分别为 99%、100%、96% 和 80%
  • 在更困难的 Kidney ccRCC 数据集上,scAgent 准确率达 92.6%,而传统方法(threshold、OpenMax、DOC)仅为 2.7%-10.1%

增量学习

scAgent 支持高效的增量学习,能够快速扩展到新细胞类型:

  • 仅需 100 个样本即可学习新细胞类型
  • 学习新类型后不会影响对已有类型的注释性能
  • 通过 MoE-LoRA 架构的隔离参数设计防止灾难性遗忘

与其他方法的比较

特性 scAgent scTab scGPT scBERT
跨组织泛化 支持 支持 有限 有限
新型细胞发现 支持 不支持 不支持 不支持
增量学习 支持 不支持 不支持 不支持
数据效率
自然语言交互 支持 不支持 不支持 不支持

数据来源

scAgent 使用的训练和评估数据来自以下公开数据集:

CELLxGENE 数据集

Tabula Sapiens 数据集

癌症数据集(用于新型细胞发现评估):

  • Liver Breast Cancer:乳腺癌患者肝组织数据
  • Kidney ccRCC:透明细胞肾细胞癌患者肾组织数据

代码可用性

截至目前(2026年1月),scAgent 的代码尚未公开发布。论文作为 arXiv 预印本发表于 2025 年 4 月,作者可能会在正式发表后公开代码。

scAgent 依赖的开源组件:


总结

scAgent 通过将大语言模型的规划能力与专业的单细胞分析工具相结合,实现了通用的细胞类型注释。其主要创新点包括:

  1. 基于 LLM 的智能体架构,支持自然语言交互和自动任务规划
  2. MoE-LoRA 插件设计,实现高效的跨组织泛化和增量学习
  3. 嵌入分析工具,支持新型细胞发现和批次效应校正
  4. 记忆模块,实现知识的高效存储和检索

scAgent 为单细胞数据分析提供了一个灵活、可扩展的解决方案,特别适合需要处理多组织、多批次数据以及发现新型细胞类型的研究场景。


个人评价

个人认为 scAgent 是旧酒装新瓶,方法本质上依然使用传统的基于相似度的细胞注释思想,但包装了一系列高大上的概念(MoE,LoRA,Agent,记忆模块等等)。我认为不符合我对我心目中的 single cell + Agent 这两个概念的完美诠释。 Anyway,作者既然能做出来一个完整的 study,就值得肯定。但整篇文章我个人不是很推荐。


相关链接