DNABERT: 一个基于 Transformer 双向编码器表征的预训练 DNA 语言模型
本文结合 DNABERT 的原文,主要介绍了:
-
Overview of DNABERT -
开发 DNABERT 的背景 -
DNABERT 的 tokenization -
DNABERT 的模型架构 -
DNABERT 的预训练 -
基于微调 DNABERT 的应用
1. Overview of DNABERT
我们之前介绍了 BERT,它是一个基于 Transformer 双向编码器表征的预训练语言模型。(更多关于 BERT 的知识请查看:BERT: 一个双向理解语言序列的模型 & 第一个用于微调的预训练模型)
DNABERT 是一个基于 Transformer 双向编码器表征的预训练 DNA 语言模型,它是专门针对基因组 DNA 语言设计的预训练模型,它受到了 BERT 的启发,并且在 BERT 的基础上做了一定的修改,它和 BERT 都是采用”预训练—微调“范式的模型。
作者使用人类基因组大型无标记数据集对 DNABERT 进行预训练,基于上下游核苷酸背景获取对基因组 DNA 语言的通用理解。我们可以使用特定任务的小型带标记数据集对 DNABERT 进行微调,应用到各种基因组 DNA 语言分析任务上面。DNABERT 通过微调,在基因组调控元件预测方面取得了性能领先的表现,包括启动子、剪接位点和转录因子结合位点等预测。
DNABERT 发表在论文 DNABERT: pre-trained Bidirectional Encoder Representations from Transformers model for DNA-language in genome 中,原文链接:https://academic.oup.com/bioinformatics/article/37/15/2112/6128680?login=false。
DNABERT 的源代码、预训练模型和微调可以在 GitHub 找到:https://github.com/jerryji1993/DNABERT
By the way,DNABERT 微调代码用到的包存在版本 bug,看一看即可,不要浪费时间尝试了。如果想用 DNABERT 微调模型,可以使用迭代的 DNABERT-2,原文地址:https://arxiv.org/pdf/2306.15006,GitHub地址:https://github.com/MAGICS-LAB/DNABERT_2,我后续会介绍 DNABERT-2。
2. 开发 DNABERT 的背景
解读非编码区 DNA 语言是基因组研究的基本问题之一,但是由于多义性和遥远的语义关系的存在,基因调控非常复杂,传统的信息学方法往往无法捕捉到这些内容。
多义性和遥远的语义关系正是自然语言的关键属性,这启发了研究者借用自然语言模型来研究基因组 DNA 语言。
此外,将 DNA 语言建模应该考虑以下两点:
-
全局考虑所有上下文信息以区分多义的顺式作用元件; -
获取对 DNA 语言的通用理解,以“预训练-微调”范式应用到各种基因组 DNA 语言分析任务上。
鉴于上述内容,作者将(基于 Transformer 双向编码器表征的预训练语言模型)BERT 的思想改编到了基因组 DNA 语言模型的训练中,具体做法包括:
-
应用了 Transformer 的双向编码器,使用自注意力机制从整个输入序列全局捕获上下文信息; -
在人类基因组大型无标记数据集对模型进行预训练,获取对基因组 DNA 语言的通用理解。
3. DNABERT 的 tokenization
在介绍 DNABERT 的预训练之前,我们先介绍一下它的 tokenization。
DNABERT 使用 k-mer 表示法对 DNA 序列进行 tokenization,k-mer 表示法通过将每个脱氧核苷酸碱基与其后续碱基连接起来,包含了更丰富的上下文信息。
作者在本研究中预训练了 4 个模型:DNABERT-3、DNABERT-4、DNABERT-5、DNABERT-6,分别对应 3-mer、4-mer、5-mer、6-mer。
对于 DNABERT-k,它的词汇表(vocabulary)由 k-mer 的所有排列以及 5 个特殊 token 组成,总计 个 tokens。
5 个特殊 token:[CLS] 代表分类 token,[PAD] 表示填充 token,[UNK] 表示未知 token,[SEP] 表示分句 token,[MASK] 表示掩码 token。因此, DNABERT-k 词汇表中的标记。
更过关于 k-mer 和 tokenization 的知识请查看:从头实现一个处理 fasta 文件的 tokenizer
4. DNABERT 的模型架构
DNABERT 和 BERT 都是基于 Transformer 编码器设计的,两者的模型架构基本相同。
如上图所示:
DNABERT 使用 k-mer 作为输入(上图以 3-mer 为例),[CLS] token 是代表整个序列含义的标签,[SEP] token 是序列分隔符,表示序列结束,[MASK] token 表示预训练中的掩码 k-mer。
输入的 token 在嵌入层 embedding 为 Token Embedding,并添加 Positional Embedding 信息,两者组成 Input Embedding。
Input Embedding 被输入到 Transformer 编码器块中,总共有 12 个 Transformer 编码器块,每块有 768 个隐藏单元和 12 个注意力头。
对于最后隐藏状态的输出,开头第一个输出用于句子级别分类,单个掩码 token 的输出将用于 token 级分类。
5. DNABERT 的预训练
DNABERT 借鉴了 BERT 的思想,但对 BERT 的预训练过程做了一些修改:
-
删除了下一句预测; -
调整了序列长度,通过截断和采样从人类基因组中提取 10~510 bp 的序列; -
调整随机掩码处理:对输入的 token 序列进行随机掩码处理,单个掩码区域大小为 k 个连续 token 区域(k 为 k-mer 的 k),总掩码区域大小占序列全长的 15%。这样做是为了强制模型预测 k 个连续 token 区域,k 个连续 token 区域是和 DNA 语言场景相符合的,例如,一个功能元件一般是一小段序列。
注意:在微调中,不对输入的 token 序列进行随机掩码处理,直接将 token 序列输入到 Embedding 层。
损失函数:使用交叉熵损失函数对 DNABERT 进行预训练。
6. 基于微调 DNABERT 的应用
-
DNABERT-Prom 有效预测近端和核心启动子区域; -
DNABERT-TF 准确识别转录因子结合位点 -
DNABERT-viz 可以可视化重要区域、上下文和序列基序。
这里只列举一下,不具体介绍了,感兴趣的可以查看原文。
写在文末
人工智能技术日新月异,逐渐渗透进了各行各业。人工智能技术在生物领域有非常大的应用潜力,让我们一起学习,致力于人工智能推动生物发展。
为了促进交流,我创建了 AI in Bio 微信交流群,可以点击公众号主页底部进交流群一栏,获取交流群二维码,如果二维码失效,请给我留言,我会尽快更新。也可以先加我微信(微信ID:AIinbio),备注进交流群,然后我拉你进群。
感谢大家的支持与帮助!
本文由 mdnice 多平台发布
相关文章:
DNABERT: 一个基于 Transformer 双向编码器表征的预训练 DNA 语言模型
本文结合 DNABERT 的原文,主要介绍了: Overview of DNABERT 开发 DNABERT 的背景 DNABERT 的 tokenization DNABERT 的模型架构 DNABERT 的预训练 基于微调 DNABERT 的应用 1. Overview of DNABERT 我们之前介绍了 BERT,它是一个基于 Transfo…...
基于Hive和Hadoop的电商消费分析系统
本项目是一个基于大数据技术的电商消费分析系统,旨在为用户提供全面的电商消费信息和深入的消费行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 S…...
记一次炉石传说记牌器 Crash 排查经历
大家好这里是 Geek技术前线。最近在打炉石过程中遇到了HSTracker记牌器的一个闪退问题,尝试性排查了下原因。这里简单记录一下 最近炉石国服回归;由于设备限制,我基本只会在 Mac 上打炉石。并且由于主要打竞技场,所以记牌器是必不…...
精益驱动的敏捷开发
1. 什么是精益?精益能给软件开发带来什么? 精益是一种起源于制造业的管理哲学,尤其是从丰田的生产体系中发展而来。它的核心目标是通过最小化浪费、提高效率和优化流程来实现高效的生产。精益的核心原则包括: 消除浪费ÿ…...
SolidWorks机器转ROS2 URDF
文章目录 开发环境SolidWords插件使用生成urdf文件之后的处理CMakeLists文件修改package.xml变更Launch更改运行 开发环境 Linux系统:Ubuntu 22.04 Ros2版本:humble Solidwords版本:2023 (2019以上版本应该都是可以的)…...
(Linux驱动学习 - 6).Linux中断
一. Linux 中断 API 函数 1.中断号 每个中断都有一个中断号,通过中断号即可区分不同的中断,有的资料也把中断号叫做中 断线。在 Linux 内核中使用一个 int 变量表示中断号。 2.申请中断 - request_irq 函数原型: int request_irq(unsigne…...
SpringBoot驱动的明星周边产品电商解决方案
1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…...
C++、Ruby和JavaScript
C C最初被称为带类的C, 兼容C的语法,此既是C得以流行的前提,也是C某些语法被捆绑的根源。C的来源于C语言的递增运算符,代表增加,意义为扩展。 C的历史 C类的设计思想来源于Simula. Simula为模拟的意思,被称为最早的面向…...
32单片机 低功耗模式
以下是一个基于STM32的低功耗模式示例代码,展示如何将STM32微控制器置于低功耗模式,并在特定条件下唤醒它。这个示例使用的是STM32 HAL库。 ### 示例代码:进入睡眠模式并使用外部中断唤醒 c #include "stm32f4xx_hal.h" // 函数声明…...
501、二叉搜索树中的众数
1、题目描述 . - 力扣(LeetCode) 要求:给一个包含重复值的BST,找出并返回BST中的众数(出现频次最高的元素)。 注:如果树中有不止一个众数可以按任意顺序返回,即如果有多个众数多个都要返回。 ps࿱…...
【洛谷】P2330 [SCOI2005] 繁忙的都市 的题解
【洛谷】P2330 [SCOI2005] 繁忙的都市 的题解 题目传送门 题解 水最小生成树,发现可以水一堆黄题qaq 这题显然就是求最大边权最小的生成树,而用 Kruskal 很容易证明这就是最小生成树,考虑一下这个算法每次取的都是不构成环的最小边即可&a…...
第18场小白入门赛(蓝桥杯)
第 18 场 小白入门赛 6 武功秘籍 考察进制理解。 对于第 i i i 位,设 b i t i x bit_ix bitix ,每一位的最大值是 b j b_j bj ,也就是说每一位是 b j 1 b_j1 bj1 进制 ,那么第 i i i 位的大小就是 x ∑ j i 1…...
Redission · 可重入锁(Reentrant Lock)
前言 Redisson是一个强大的分布式Java对象和服务库,专为简化在分布式环境中的Java开发而设计。通过Redisson,开发人员可以轻松地在分布式系统中共享数据、实现分布式锁、创建分布式对象,并处理各种分布式场景的挑战。 Redisson的设计灵感来…...
初阶C语言-指针
1.指针是什么? 理解指针的两个要点: 1.指针是内存中一个最小单元的编号,也就是地址 2.口头语中说的指针,通常是指指针变量,是用来存放内存地址的变量 总结:指针就是地址,口语中说的指针通常是指…...
论文笔记:微表情欺骗检测
整理了AAAI2018 Deception Detection in Videos 论文的阅读笔记 背景模型实验可视化 背景 欺骗在我们的日常生活中很常见。一些谎言是无害的,而另一些谎言可能会产生严重的后果。例如,在法庭上撒谎可能会影响司法公正,让有罪的被告逍遥法外。…...
智能家居有哪些产品?生活中常见的人工智能有哪些?
智能家居有哪些产品? 1、智能照明设备类:智能开关、智能插座、灯控模块、智能空开、智能灯、无线开关。 2、家庭安防类:智能门锁、智能摄像机、智能猫眼、智能门铃。 3、智能传感器类:烟雾传感器、可燃气体传感器、水浸传感器、声光报警器…...
洗车行软件系统有哪些 佳易王洗车店会员管理系统操作教程#洗车店会员软件试用版下载
一、前言 【试用版软件下载可点击本文章最下方官网卡片】 洗车行软件系统有哪些 佳易王洗车店会员管理系统操作教程#洗车店会员软件试用版下载 洗车管理软件应用是洗车业务的得力助手,实现会员管理及数据统计一体化,助力店铺高效、有序运营。 洗车项…...
【Java】springboot 项目中出现中文乱码
在刚创建的springboot项目中,出现乱码,跟走着解决一下 1、Ctrl Shift S 打开idea设置,根据图片来,将③④这三个地方都修改为UTF-8 2、返回配置查看,解决...
开放式耳机是什么意思?漏音吗?开放式的运动蓝牙耳机推荐
目前运动耳机市场主要分为入耳式、骨传导和开放式三类。入耳式耳机占比30%-40%,虽目前占比较大,但因在运动场景下有闷塞感、出汗不适、屏蔽外界环境音带来安全隐患等缺点,占比会逐渐下降。 骨传导耳机占比也为30%-40%,其不堵塞耳…...
如何优雅的处理NPE问题?
1.什么是NPE? NPE,即NullPointerException,是开发中最常见的问题之一,有必要知道如何正确地处理NPE。 对于 Java 开发者来说,null 是一个令人头疼的类型,一不小心就会发生 NPE (空指针…...
Google Earth Engine(GEE)——run with profiler查看我们所运行程序的描述、计算指标、内存、峰值内存和数量
分析器显示有关特定算法和计算的其他部分消耗的资源(CPU 时间、内存)的信息。这有助于诊断脚本运行缓慢或由于内存限制而失败的原因。要使用探查器,请单击“运行”按钮下拉菜单中的“使用探查器运行”选项。作为快捷方式,按住 Alt(或 Mac 上的 Option)并单击运行,或按 C…...
Oto 多平台适配原理揭秘:从 Windows 到 Android 的底层实现
Oto 多平台适配原理揭秘:从 Windows 到 Android 的底层实现 【免费下载链接】oto ♪ A low-level library to play sound on multiple platforms ♪ 项目地址: https://gitcode.com/gh_mirrors/ot/oto Oto 是一个强大的跨平台音频播放库,支持从 W…...
RK3588/RK1820嵌入式AI模型选型与部署实战:9大模型场景化应用指南
1. 项目概述:嵌入式AI模型部署的十字路口作为一名在嵌入式AI领域摸爬滚打了十多年的老兵,我见过太多项目在模型部署这个环节上栽跟头。大家手里可能都握着RK3588、RK182X这类性能强悍的瑞芯微平台,硬件算力摆在那里,但真要把一个A…...
Python对象状态持久化:Memoripy库实现增量更新与断点续跑
1. 项目概述:一个让Python程序拥有“记忆”的魔法库如果你写过一些需要处理大量数据或者进行复杂状态管理的Python脚本,肯定遇到过这样的场景:程序运行到一半,因为网络波动、数据异常或者你手动中断,不得不从头再来。那…...
如何快速打造专业直播画面:OBS StreamFX插件终极指南
如何快速打造专业直播画面:OBS StreamFX插件终极指南 【免费下载链接】obs-StreamFX StreamFX is a plugin for OBS Studio which adds many new effects, filters, sources, transitions and encoders! Be it 3D Transform, Blur, complex Masking, or even custom…...
计算机科学论文降AI工具免费推荐:2026年计算机科学毕业论文降AI4.8元亲测99.26%知网达标完整指南
计算机科学论文降AI工具免费推荐:2026年计算机科学毕业论文降AI4.8元亲测99.26%知网达标完整指南 答辩前夕,AI率36%,学校要求15%以下。 用嘎嘎降AI(www.aigcleaner.com),4.8元,两小时搞定&…...
稀疏矩阵运算全解析:从基础算术到高效求解与性能调优
1. 稀疏矩阵运算操作全景解析在数值计算、机器学习、图形学乃至各类工程仿真领域,处理大规模数据时,我们总会遇到一个“熟悉的陌生人”——稀疏矩阵。它不像密集矩阵那样,每个元素都占据着内存空间,而是像一个精打细算的管家&…...
机械爪开发速查手册:从通信协议到PID控制的嵌入式实战指南
1. 项目概述:一份为开发者量身定制的“机械爪”速查手册最近在整理一个涉及硬件控制与嵌入式开发的项目时,我发现自己总是在几个关键的控制算法和通信协议上反复查阅资料,效率很低。后来在GitHub上偶然发现了kyrie-louy/openclaw-cheatsheet这…...
机器人全身控制与SLAM系统核心技术解析
1. 机器人全身控制技术解析Sprout机器人采用的全身控制策略(Whole-Body Policy)通过分层控制架构实现了稳定运动与精准操作的平衡。该系统将控制分为三个主要层级:骨盆姿态控制、上肢柔顺控制和高度调节。这种分层设计使得机器人能够在保持上…...
HiveWE魔兽地图编辑器:5分钟快速上手指南,告别卡顿创作新时代
HiveWE魔兽地图编辑器:5分钟快速上手指南,告别卡顿创作新时代 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为《魔兽争霸III》原版地图编辑器缓慢的加载速度和繁琐的操作而烦恼…...
