论文模型设置与实验数据:scBERT

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 引入了一些创新设计,以增强其在细胞类型注释任务中的表现:

  1. 嵌入设计

    • BERT 的嵌入包括 token 嵌入位置嵌入,而 scBERT 的嵌入设计在借鉴 BERT 的基础上结合了基因领域的特点。
    • token 嵌入:BERT 中的 token 是离散变量(代表单词),而 scBERT 的输入是连续变量(代表单细胞中基因的表达值),并伴有生物学和技术噪声。我们借鉴 NLP 中的词袋技术,将基因表达值分箱为离散值,不仅减少了数据噪声,还保留了基因表达频率的信息。
    • 基因嵌入:由于基因的绝对位置无意义,scBERT 使用 gene2vec 生成的嵌入作为基因身份的相对嵌入,捕获基因的共表达关系。共表达的基因会具有更相似的嵌入表示,这种分布式表示有助于描述基因-基因相互作用(扩展数据图 1c)。
  2. 去除数据预处理的依赖

    • 当前的大多数单细胞方法需要在原始数据上进行预处理(如高变基因选择、手动标记基因选择或 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)。

数据预处理

对于以基因表达矩阵形式提供的数据:

  1. 进行了 log 归一化 (大小因子为 10,000)。
  2. 质量控制:过滤表达基因少于 200 的细胞异常值。

对于 scBERT 的输入,未进行维度缩减或高变基因选择,scBERT 可处理超过 20,000 个基因并保持完整基因级解释能力。


对比方法

基准测试实现了三类注释方法的 SOTA 算法:

  1. 基于标记基因:SCINA、Garnett 和 scSorter。
  2. 基于相关性:Seurat、SingleR、CellID 和 scmap。
  3. 监督学习:scNym 和 SciBet。

以下为部分算法简述:

  • scNym:半监督方法,利用目标数据进行领域适配,性能优异但需重新训练。
  • SciBet:监督学习方法,通过 E 检验筛选基因,构建多项式模型进行分类。
  • Seurat:流行的单细胞分析管道,通过参考数据集进行样本映射。
  • SingleR:基于参考数据集,迭代计算 Spearman 系数以区分细胞类型。
  • CellID:无聚类方法,提取细胞基因特征。
  • scmap:通过余弦和欧几里得距离映射细胞类型。
  • SCINA:假设标记基因的双峰分布以注释细胞类型。
  • Garnett:基于用户定义的细胞层次结构和标记基因,通过弹性网络回归注释。
  • scSorter:结合标记基因与 HVG 聚类,注释细胞类型。

后续将复现实验并执行模型代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/61893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins的环境部署

day22 回顾 Jenkins 简介 官网Jenkins Jenkins Build great things at any scale The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project. 用来构建一切 其实就是用Java写的一个项目…

怎么编译OpenWrt镜像?-基于Widora开发板

1.准备相应的环境,我使用的环境是VMware16ubuntu20.04,如图1所示安装编译所需的依赖包; sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-…

Python 获取微博用户信息及作品(完整版)

在当今的社交媒体时代,微博作为一个热门的社交平台,蕴含着海量的用户信息和丰富多样的内容。今天,我将带大家深入了解一段 Python 代码,它能够帮助我们获取微博用户的基本信息以及下载其微博中的相关素材,比如图片等。…

MySQL底层概述—1.InnoDB内存结构

大纲 1.InnoDB引擎架构 2.Buffer Pool 3.Page管理机制之Page页分类 4.Page管理机制之Page页管理 5.Change Buffer 6.Log Buffer 1.InnoDB引擎架构 (1)InnoDB引擎架构图 (2)InnoDB内存结构 (1)InnoDB引擎架构图 下面是InnoDB引擎架构图,主要分为内存结构和磁…

Linux---ps命令

​​​​​​Linux ps 命令 | 菜鸟教程 (runoob.com) process status 用于显示进程的状态 USER: 用户名,运行此进程的用户名。PID: 进程ID(Process ID),每个进程的唯一标识号%CPU: 进程当前使用的CPU百分比%MEM: 进程当前使用的…

企业OA管理系统:Spring Boot技术实现与案例研究

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了企业OA管理系统的开发全过程。通过分析企业OA管理系统管理的不足,创建了一个计算机管理企业OA管理系统的方案。文章介绍了企业OA管理系统的系统分析部…

Charles抓包工具-笔记

摘要 概念: Charles是一款基于 HTTP 协议的代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果来达到分析抓包的目的。 功能: Charles 是一个功能全面的抓包工具,适用于各种网络调试和优化场景。 它…

数据结构(顺序队列——c语言实现)

队列的概念: 队列是限制在两端进行插入和删除操作的线性表,允许进行存入的一端称为“队尾”,允许进行删除操作的一端称为“队头”。当线性表中没有元素时,称为“空队”。特点:先进先出(FIFO)。 …

Vulnhub靶场 Jangow: 1.0.1 练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 命令执行2. 反弹shell3. 提权4. 补充4.1 其他思路4.2 问题 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 介绍: Difficulty: easy…

Fakelocation Server服务器/专业版 Centos7

前言:需要Centos7系统 Fakelocation开源文件系统需求 Centos7 | Fakelocation | 任务一 更新Centos7 (安装下载不再赘述) sudo yum makecache fastsudo yum update -ysudo yum install -y kernelsudo reboot//如果遇到错误提示为 Another app is curre…

【Ubuntu24.04】服务部署(虚拟机)

目录 0 背景1 安装虚拟机1.1 下载虚拟机软件1.2 安装虚拟机软件1.2 安装虚拟电脑 2 配置虚拟机2.1 配置虚拟机网络及运行初始化脚本2.2 配置服务运行环境2.2.1 安装并配置JDK172.2.2 安装并配置MySQL8.42.2.3 安装并配置Redis 3 部署服务4 总结 0 背景 你的服务部署在了你的计算…

深入解析 EasyExcel 组件原理与应用

✨深入解析 EasyExcel 组件原理与应用✨ 官方:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 在日常的 Java 开发工作中,处理 Excel 文件的导入导出是极为常见的需求。 今天,咱们就一起来深入了解一款非常实用的操作 Exce…

Java爬虫:获取商品详情的实践之旅

在当今这个信息爆炸的时代,数据的价值日益凸显。对于电商行业来说,商品详情的获取尤为重要,它不仅关系到产品的销售,还直接影响到用户体验。传统的人工获取方式耗时耗力,而自动化的爬虫技术则提供了一种高效解决方案。…

C# 数据结构之【树】C#树

以二叉树为例进行演示。二叉树每个节点最多有两个子节点。 1. 新建二叉树节点模型 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace DataStructure {class TreeNode{public int Data { get;…

单片机_简单AI模型训练与部署__从0到0.9

IDE: CLion MCU: STM32F407VET6 一、导向 以求知为导向,从问题到寻求问题解决的方法,以兴趣驱动学习。 虽从0,但不到1,剩下的那一小步将由你迈出。本篇主要目的是体验完整的一次简单AI模型部署流程&#x…

【Spiffo】环境配置:VScode+Windows开发环境

摘要: 在Linux下直接开发有时候不习惯快捷键和操作逻辑,用Windows的话其插件和工具都更齐全、方便,所以配置一个Windows的开发环境能一定程度提升效率。 思路: 自己本地网络内远程连接自己的虚拟机(假定用的是虚拟机…

使用eclipse构建SpringBoot项目

我这里用eclipse2018版本做演示,大家有需要的可以下载Eclipse Downloads | The Eclipse Foundation 1.打开eclipse,选择存放代码的位置 2.选择 file >> new >> project >> 选择springboot文件下的 spring starter project 2.这里选择N…

C++ 日期计算器的实现(运算符重载)

目录 一、前言 二、正文 1.1 Date类框架 1.2 两个日期间的直接赋值 1.3判断两个日期是否相同 1.4判断两个日期是否不同 1.5日期加天数 1.6日期天数 1.7日期的前置和后置 1.8日期减天数 1.9自身日期减天数 2.1自身日期前置--和后置-- 2.2两个日期的差值为差距天数 2…

LLM的原理理解6-10:6、前馈步骤7、使用向量运算进行前馈网络的推理8、注意力层和前馈层有不同的功能9、语言模型的训练方式10、GPT-3的惊人性能

目录 LLM的原理理解6-10: 6、前馈步骤 7、使用向量运算进行前馈网络的推理 8、注意力层和前馈层有不同的功能 注意力:特征提取 前馈层:数据库 9、语言模型的训练方式 10、GPT-3的惊人性能 一个原因是规模 大模型GPT-1。它使用了768维的词向量,共有12层,总共有1.…

如何使用 Python 开发一个简单的文本数据转换为 Excel 工具

目录 一、准备工作 二、理解文本数据格式 三、开发文本数据转换为Excel工具 读取CSV文件 将DataFrame写入Excel文件 处理其他格式的文本数据 读取纯文本文件: 读取TSV文件: 四、完整代码与工具封装 五、使用工具 六、总结 在数据分析和处理的日常工作中,我们经常…