Yang, F., Wang, W., Wang, F. et al. scBERT as a large-scale pretrained deep language model for cell type annotation of single-cell RNA-seq data. Nat Mach Intell 4, 852–866 (2022). https://doi.org/10.1038/s42256-022-00534-z
论文地址:scBERT as a large-scale pretrained deep language model for cell type annotation of single-cell RNA-seq data | Nature Machine Intelligence
论文代码:https://github.com/TencentAILabHealthcare/scBERT
目录
摘要
scBERT 模型概述
a. 无标签数据的自监督学习与任务特定数据的微调
b. scBERT 嵌入示意图
数据集
代码细节
摘要
基于单细胞RNA测序(scRNA-seq)数据对细胞类型进行注释是研究疾病进展和肿瘤微环境的前提。现有的注释方法通常存在缺乏精心整理的标记基因列表、处理批次效应不当以及难以利用潜在基因-基因交互信息的问题,削弱了这些方法的泛化性和鲁棒性。作者开发了一种基于预训练深度神经网络的模型,即单细胞双向编码表示转换器(scBERT),以克服这些挑战。遵循BERT的预训练和微调方法,scBERT通过在大量未标记的scRNA-seq数据上进行预训练,获得了对基因-基因交互的通用理解;然后将其转移到未知和用户特定的scRNA-seq数据的细胞类型注释任务中进行有监督的微调。广泛而严格的基准研究验证了scBERT在细胞类型注释、新型细胞类型发现、对批次效应的鲁棒性和模型解释性方面的卓越表现。
scBERT 模型概述
a. 无标签数据的自监督学习与任务特定数据的微调
在自监督预训练阶段,无标签数据来自于 PanglaoDB。将掩码表达嵌入和基因嵌入作为输入并输入到 Performer 模块中。通过重构器生成输出,对被掩码的基因的输出用以计算重构损失。在监督微调阶段,将任务特定的 scRNA-seq 数据输入到预训练的编码器中。输出表示经过一维卷积层和分类器,生成细胞类型预测结果。符号 "⊕" 表示逐元素加法。
Performer 编码器 是在预训练和微调阶段共享的组件,而重构器和分类器在预训练和微调阶段分别独立使用。
b. scBERT 嵌入示意图
预处理后的 scRNA-seq 数据首先被转换为离散化表达值,非零表达值会被随机掩码。以第一个基因为例,其基因嵌入 EG1(通过 gene2vec 得到的基因身份嵌入,归入第一分箱)和表达嵌入 EB2(基因表达值归入第二分箱并被转换为与 EG1 相同的维度)被求和后输入到 scBERT 中,生成基因的表示。
这些表示随后用于预训练或微调阶段。
BERT 的启发
最初的 BERT 模型提出了一种革命性的技术,通过预训练生成通用的语言知识,并利用微调将知识迁移到不同配置的下游任务中。受此启发,我们开发了一种新颖且统一的架构——scBERT(如图 1),专注于 scRNA-seq 数据。scBERT 在多种来源的数百万无标签 scRNA-seq 数据上进行预训练,学习通用的 scRNA-seq 知识,然后通过简单地接入分类器并基于参考数据集监督微调参数,完成细胞类型的分配。
模型优势
- 预训练:帮助模型学习基因-基因相互作用的一般语法,从而消除数据集间的批次效应,提高模型的泛化能力(扩展数据图 1a)。
- 微调:确保每个基因的输出嵌入能够编码与参考数据集转录组特征更相关的上下文信息。通过挖掘高级隐式模式,scBERT 为查询细胞计算其属于参考数据集中任何细胞类型的概率(扩展数据图 1b)。如果没有细胞类型能被高置信度分配,查询细胞会被标记为“未分配”,以避免错误标注并支持发现新的细胞类型。
创新设计
相比于原始 BERT 模型,scBERT 引入了一些创新设计,以增强其在细胞类型注释任务中的表现:
-
嵌入设计
- BERT 的嵌入包括 token 嵌入 和 位置嵌入,而 scBERT 的嵌入设计在借鉴 BERT 的基础上结合了基因领域的特点。
- token 嵌入:BERT 中的 token 是离散变量(代表单词),而 scBERT 的输入是连续变量(代表单细胞中基因的表达值),并伴有生物学和技术噪声。我们借鉴 NLP 中的词袋技术,将基因表达值分箱为离散值,不仅减少了数据噪声,还保留了基因表达频率的信息。
- 基因嵌入:由于基因的绝对位置无意义,scBERT 使用 gene2vec 生成的嵌入作为基因身份的相对嵌入,捕获基因的共表达关系。共表达的基因会具有更相似的嵌入表示,这种分布式表示有助于描述基因-基因相互作用(扩展数据图 1c)。
-
去除数据预处理的依赖
- 当前的大多数单细胞方法需要在原始数据上进行预处理(如高变基因选择、手动标记基因选择或 PCA),由于这些方法无法高效建模高维数据,不可避免地引入人工偏差或过拟合问题,严重影响模型的泛化能力。
- scBERT 通过 Transformer 的大感受野高效利用 scRNA-seq 数据中的全局信息,捕获长距离基因-基因相互作用,从而学习细胞的综合全局表示。
- 为克服 Transformer 输入序列长度(512)的限制,scBERT 使用 Performer 替代原始 BERT 中的 Transformer 编码器,从而扩展模型至超过 16,000 个基因输入。这种设计允许全基因水平的解释,无需使用高变基因或降维操作,让具有判别力的基因和交互关系自然显现(扩展数据图 1d)。
通过以上设计,scBERT 实现了基因表达模式和长程依赖的无偏数据驱动发现,并提供了稳定且鲁棒的性能,而无需依赖超参数调节(扩展数据图 1e)。这种特性使得 scBERT 成为细胞类型注释任务中的强大工具,同时支持探索新的细胞类型。
数据集
由于模型训练分为两个阶段:无标签数据的自监督学习和特定任务数据的微调,因此这两个阶段使用的数据集来源不同,以避免数据泄漏。在第一阶段,大量无标注数据用于学习通用模式;而在第二阶段,则需要带有高质量标注的细胞标签的特定任务数据,以系统评估 scBERT 和其他 SOTA 方法的性能。
为此,我们选择了以下数据集:
- 提供高度可信的细胞类型标注,
- 且已被大多数细胞类型标注方法广泛引用,用于性能评估的 scRNA-seq 数据集。
Panglao 数据集
Panglao 数据集来自 PanglaoDB 网站 (https://panglaodb.se/)。PanglaoDB 集成了 209 个来源于不同实验平台的人类单细胞数据集,覆盖 74 种组织,共计 1,126,580 个细胞。本研究中,在第一阶段预训练时使用了 PanglaoDB 的 scRNA-seq 数据。由于采用自监督学习策略,此阶段未使用任何标注或细胞标签,模型输入仅需基因及其表达水平数据。
Zheng68k 数据集
Zheng68k 是一个经典的 PBMC 数据集,由 10X CHROMIUM 平台生成,广泛用于细胞类型注释性能评估。该数据集包含约 68,450 个细胞,分为 11 种亚型,包括:
- CD8+ 细胞毒性 T 细胞 (30.3%)
- CD8+/CD45RA+ 初始细胞毒性细胞 (24.3%)
- CD56+ NK 细胞 (12.8%)
- CD4+/CD25 调节性 T 细胞 (9.0%)
- CD19+ B 细胞 (8.6%)
- 其他稀有类型细胞。
该数据集中细胞类型分布不均,部分细胞类型间高度相关,使区分变得困难。
胰腺数据集
胰腺数据集包括 Baron、Muraro、Segerstolpe 和 Xin 数据集,统一了细胞类型标签,包含四种细胞类型。具体来源:
- Baron 数据集:从 GEO 下载 (GSE84133),实验方法为 inDrop。
- Muraro 数据集:从 GEO 下载 (GSE85241),实验方法为 CEL-Seq2。
- Segerstolpe 数据集:从 ArrayExpress 下载 (E-MTAB-5061),实验方法为 Smart-Seq2。
- Xin 数据集:从 GEO 下载 (GSE81608),实验方法为 SMARTer。
这些数据集基于不同实验平台生成 (补充表 1)。
MacParland 数据集
MacParland 数据集来自人类肝组织,包含 20 种肝细胞类型,由 10X CHROMIUM 平台对 8,444 个细胞进行转录组测序生成。数据从 GEO 下载 (GSE115469),并根据作者提供的方法生成细胞类型注释。
心脏数据集
心脏数据集包括两个部分:
- 大规模心脏数据集 (用于预训练):含 451,513 个细胞,来自四个平台 (Harvard-Nuclei、Sanger-Nuclei 等),从 HCA 数据门户 下载。
- Tucker 数据集 (用于评估):含 287,269 个细胞,从 Broad Institute 下载。
肺部数据集
该数据集来自人类肺组织,分析与 COVID-19 相关的疾病机制。包含来自 12 位供体的样本,由 10X Genomics 测序生成,数据量为 39,778 个细胞 (九种细胞类型)。数据下载自 Figshare。
人类细胞图谱数据集
人类细胞图谱数据集包含 15 个主要器官 (如皮肤、心脏、肝脏) 中的 27 种细胞类型,共计 84,363 个细胞,由 HiSeq X Ten 测序生成。数据下载自 GEO (GSE159929)。
本研究中使用的所有数据均为公开数据,其使用方法在方法部分有详细说明。
- Panglao 数据集:从 PanglaoDB 下载。
- Zheng68k 数据集:从 10x Genomics 官网的“Fresh 68K PBMCs”部分 下载(编号:SRP073767)。
- 胰腺数据集:从 Hemberg Lab 的 GitHub 页面 下载,包括以下数据:
- Baron 数据集(编号:GSE84133)
- Muraro 数据集(编号:GSE85241)
- Segerstolpe 数据集(编号:E-MTAB-5061)
- Xin 数据集(编号:GSE81608)。
- MacParland 数据集:从 NCBI GEO 数据库 下载(编号:GSE115469)。
- 心脏数据集:从以下链接下载:
- Human Cell Atlas 数据库
- Broad Institute 数据库。
- COVID-19 肺部数据集:从 Figshare 下载。
- 成人 Human Cell Atlas 数据集(包含15个主要器官):从 NCBI GEO 数据库 下载(编号:GSE159929)。
数据预处理
对于以基因表达矩阵形式提供的数据:
- 进行了 log 归一化 (大小因子为 10,000)。
- 质量控制:过滤表达基因少于 200 的细胞异常值。
对于 scBERT 的输入,未进行维度缩减或高变基因选择,scBERT 可处理超过 20,000 个基因并保持完整基因级解释能力。
对比方法
基准测试实现了三类注释方法的 SOTA 算法:
- 基于标记基因:SCINA、Garnett 和 scSorter。
- 基于相关性:Seurat、SingleR、CellID 和 scmap。
- 监督学习:scNym 和 SciBet。
以下为部分算法简述:
- scNym:半监督方法,利用目标数据进行领域适配,性能优异但需重新训练。
- SciBet:监督学习方法,通过 E 检验筛选基因,构建多项式模型进行分类。
- Seurat:流行的单细胞分析管道,通过参考数据集进行样本映射。
- SingleR:基于参考数据集,迭代计算 Spearman 系数以区分细胞类型。
- CellID:无聚类方法,提取细胞基因特征。
- scmap:通过余弦和欧几里得距离映射细胞类型。
- SCINA:假设标记基因的双峰分布以注释细胞类型。
- Garnett:基于用户定义的细胞层次结构和标记基因,通过弹性网络回归注释。
- scSorter:结合标记基因与 HVG 聚类,注释细胞类型。
后续将复现实验并执行模型代码。