MSA Transformer
过去的蛋白质语言模型以单个序列为输入,MSA Transformer以多序列比对的形式将一组序列作为输入。该模型将行和列注意力交织在输入序列中,并在许多蛋白质家族中使用mask语言建模目标进行训练。模型的性能远超过了当时最先进的无监督学习方法,其参数效率远高于当时最先进的蛋白质语言模型。
来自:MSA Transformer, ICML2021
目录
- ESM-MSA-1b概述
- 输入
- 绑定行注意力
- 预训练
- 结果
- 无监督接触图预测
- 有监督接触图预测
ESM-MSA-1b概述
ESM-MSA-1b是一个在UR50上训练的掩码语言模型,ESM-MSA-1b在三种下游任务:无监督氨基酸接触图预测、有监督氨基酸接触图预测和二级结构预测上均达到了当时的SOTA水平。
模型采用随机mask,其中,Transformer做了改进,使内存占用降低。模型与普通Transformer的区别是,其特殊的轴向注意力机制,见图1所示。对于蛋白质通用规律的学习,MSA信息中同源序列不同位置上的氨基酸对于当前的氨基酸的权重信息并不大,当前氨基酸最重要的关注点还是同一序列其他氨基酸(行)和同源不同序列同一位置的其他氨基酸(列),因此注意力限制在横纵这两条轴向范围就可以了,可以大大降低时间复杂度。

- 图1左,注意力稀疏结构。通过将注意力限制在行和列上,计算成本从 O ( ( L M ) 2 ) O((LM)^{2}) O((LM)2)降低到 O ( L M 2 ) + O ( L 2 M ) O(LM^{2})+O(L^{2}M) O(LM2)+O(L2M),其中 M M M是MSA中的行数, L L L是列数。
- 中间:未绑定的行注意力对MSA中的每个序列使用不同的注意力。绑定行注意力对MSA中的所有序列使用单个注意力图,从而约束了接触结构。
- 右:一个MSA Transformer块。所描绘的架构来自最终模型。
输入
Transformer是强大的序列模型,能够将信息从任何位置传递到任何其他位置。然而,它们并不适用于一组对齐的序列。在MSA中简单地连接长度为 L L L的 M M M个序列将允许跨所有序列的注意力,但 ( M L ) 2 (ML)^{2} (ML)2的自注意力map将占用大量内存。MSA Transformer主要贡献是将Transformer预训练扩展到在MSA上运行,同时将其结构视为 M × L M\times L M×L特征矩阵。
作者将输入MSA描述为矩阵 x ∈ R M × L x\in\mathbb{R}^{M\times L} x∈RM×L,其中行对应MSA中的序列,列对应对齐序列中的位置,条目 x m i x_{mi} xmi取整数值1,编码序列 m m m在位置 i i i处的氨基酸同一性(与参考氨基酸相同)。编码输入后,每一层都有一个 R M × L × d \R^{M\times L\times d} RM×L×d状态作为输入和输出。对于Transformer的核心,作者采用了Ho等人(2019)和Child等人(2019年)的轴向注意力方法。这种方法将注意力交替放在2D状态的行和列上(见图1)。MSA上注意力的这种稀疏模式使列注意力的注意力成本为 O ( L M 2 ) O(LM^2) O(LM2),行注意力的注意力为 O ( M L 2 ) O(ML^2) O(ML2)。
对于token embedding,将不同氨基酸用整数表示,形成一个整型向量。词库包括20种标准氨基酸、5种非标准氨基酸和4种特殊字符,共29种氨基酸token。
对于position embedding,标准Transformer位置嵌入是添加到序列中每个位置的1D信号。最常用的是固定正弦或可学习位置嵌入。Rives等人发现,学习位置嵌入通常会使蛋白质语言模型的下游性能更好。MSA是一个2D输入,因此必须考虑两种类型的位置嵌入。对于所有训练过的模型,作者提供了一个1D序列位置嵌入,它独立地添加到MSA的每一行。这使得模型能够区分不同的对齐位置。对于一个模型,作者还为MSA的每一列独立添加了一个位置嵌入,这允许模型区分不同的序列(如果没有这个,模型会将输入序列视为一个无序集)。作者还确保序列中的第一个位置始终是参考,这样就可以通过位置嵌入来唯一识别它。最后发现,引入列位置嵌入会略微提高性能。
绑定行注意力
轴向注意力的标准实现允许输入的每一行和每一列都有独立的注意力图。然而,在MSA中,每个序列都通常应该具有相似的结构。为了利用这种共享结构,作者假设将MSA中的序列之间的行注意力图绑定起来是有益的。另一个好处是,绑定注意力将行注意力的内存占用从 O ( M L 2 ) O(ML^2) O(ML2)减少到 O ( L 2 ) O(L^2) O(L2)。
预训练
模型在2600万MSA的数据集上进行训练。通过使用HHblits搜索UniClust30,为每个UniRef50序列生成MSA。MSA的平均深度为1192。
模型使用masked training方法进行训练,直接输出的是每一个masked token处为各种氨基酸的概率。然而主要目标并不是得到这些概率,而是要通过训练后的attention map预测蛋白质二、三级结构。
- 二级结构:基于MSA Transformer的特征表示向量(representation)预测8种折叠,准确率为72.9%。
- 三级结构:基于MSA Transformer各层、各注意力头的attention map,训练logistic回归模型,对蛋白质三级结构进行预测。
结果
无监督接触图预测
Rao等人表明,蛋白语言模型在没有监督的情况下能够捕捉蛋白质结构信息。可以通过在有限数量的蛋白质结构上训练一个小的逻辑回归来实现,同时可以根据注意力头的残基之间的注意力来预测残基 i i i和 j j j之间接触的概率。
使用相同的验证方法。对trRosetta数据集中的20个训练结构进行逻辑回归拟合。然后,这被用来预测trRosetta数据集中另外14842个结构上的蛋白质接触概率(不包括训练结构)。本质其实还是有监督。
有监督接触图预测
作者将MSA Transformer作为监督结构预测管道的一个组件进行评估。根据Rives等人的研究,使用0.001的学习率训练了一个具有32个激活块的深度残差网络。使用15051个MSA和结构的trRosetta训练集对网络进行分箱成对距离分布(distogram)的监督(给接触距离做了更细粒度的分箱标签)。输入残差网络的特征是,查询序列中,两个氨基酸embedding的concat。
相关文章:
MSA Transformer
过去的蛋白质语言模型以单个序列为输入,MSA Transformer以多序列比对的形式将一组序列作为输入。该模型将行和列注意力交织在输入序列中,并在许多蛋白质家族中使用mask语言建模目标进行训练。模型的性能远超过了当时最先进的无监督学习方法,其…...
Vue.js组件开发-实现全屏焦点图片带图标导航按钮控制图片滑动切换
使用 Vue 实现全屏焦点图片带图标导航按钮控制图片滑动切换 步骤 创建 Vue 项目:可以使用 Vue CLI 快速创建一个新的 Vue 项目。设计组件结构:创建一个包含图片展示区域和导航按钮的组件。实现图片滑动切换逻辑:通过点击导航按钮切换图片。…...
Linux系统上安装与配置 MySQL( CentOS 7 )
目录 1. 下载并安装 MySQL 官方 Yum Repository 2. 启动 MySQL 并查看运行状态 3. 找到 root 用户的初始密码 4. 修改 root 用户密码 5. 设置允许远程登录 6. 在云服务器配置 MySQL 端口 7. 关闭防火墙 8. 解决密码错误的问题 前言 在 Linux 服务器上安装并配置 MySQL …...
Vue 3 30天精进之旅:Day 10 - Vue Router
在现代单页面应用(SPA)中,路由管理是必不可少的一部分。Vue Router是Vue.js官方的路由管理库,它使得在Vue应用中实现路由变得简单而灵活。今天的学习将围绕以下几个方面展开: Vue Router概述安装和基本配置定义路由路…...
人工智能如何驱动SEO关键词优化策略的转型与效果提升
内容概要 随着数字化时代的到来,人工智能(AI)技术对各行各业的影响日益显著,在搜索引擎优化(SEO)领域尤为如此。AI的应用不仅改变了关键词研究的方法,而且提升了内容生成和搜索优化的效率&…...
keil5如何添加.h 和.c文件,以及如何添加文件夹
1.简介 在hal库的编程中我们一般会生成如下的几个文件夹,在这几个文件夹内存储着各种外设所需要的函数接口.h文件,和实现函数具体功能的.c文件,但是有时我们想要创建自己的文件夹并在这些文件夹下面创造.h .c文件来实现某些功能,…...
BMC PSL function(22)-printf()
printf() 含义:Print text formatted to the C library printf() routine specification Format printf(format,[arg1,......,argn]) Parameter ParameterDefinitionformattext, variable names, and control characters that specify the content and format of output t…...
【数据结构】_复杂度
目录 1. 算法效率 2. 时间复杂度 2.1 时间复杂度概念 2.2 准确的时间复杂度函数式 2.3 大O渐进表示法 2.4 时间复杂度的常见量级 2.5 时间复杂度示例 3. 空间复杂度 3.1 空间复杂度概念 3.2 空间复杂度示例 1. 算法效率 一般情况下,衡量一个算法的好坏是…...
pytorch实现循环神经网络
人工智能例子汇总:AI常见的算法和例子-CSDN博客 PyTorch 提供三种主要的 RNN 变体: nn.RNN:最基本的循环神经网络,适用于短时依赖任务。nn.LSTM:长短时记忆网络,适用于长序列数据,能有效解决…...
Java 16进制 10进制 2进制数 相互的转换
在 Java 中,进行进制之间的转换时,除了功能的正确性外,效率和安全性也很重要。为了确保高效和相对安全的转换,我们通常需要考虑: 性能:使用内置的转换方法,如 Integer.toHexString()、Integer.…...
力扣动态规划-14【算法学习day.108】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…...
数据结构day02
1 线性表的定义和基本操作 1.1 线性表的定义 分析: 1.1.1 问题一:我们为什么探讨线性表的定义和基本操作 在研究数据结构时,需要重点关注三个方面:逻辑结构、物理结构以及数据的运算。在本节内容里,我们首先来介绍线…...
随笔 | 写在一月的最后一天
. 前言 这个月比预想中过的要快更多。突然回看这一个月,还有点不知从何提笔。 整个一月可以总结为以下几个关键词: 期许,保持期许出现休息 . 期许 关于期许,没有什么时候比一年伊始更适合设立目标和计划的了。但令人惭愧的…...
JVM方法区
一、栈、堆、方法区的交互关系 二、方法区的理解: 尽管所有的方法区在逻辑上属于堆的一部分,但是一些简单的实现可能不会去进行垃圾收集或者进行压缩,方法区可以看作是一块独立于Java堆的内存空间。 方法区(Method Area)与Java堆一样,是各个…...
一文读懂fgc之cms
一文读懂 fgc之cms-实战篇 1. 前言 线上应用运行过程中可能会出现内存使用率较高,甚至达到95仍然不触发fgc的情况,存在内存打满风险,持续触发fgc回收;或者内存占用率较低时触发了fgc,导致某些接口tp99,tp…...
MYSQL 商城系统设计 商品数据表的设计 商品 商品类别 商品选项卡 多表查询
介绍 在开发商品模块时,通常使用分表的方式进行查询以及关联。在通过表连接的方式进行查询。每个商品都有不同的分类,每个不同分类下面都有商品规格可以选择,每个商品分类对应商品规格都有自己的价格和库存。在实际的开发中应该给这些表进行…...
HTB:Administrator[WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机…...
开源项目Umami网站统计MySQL8.0版本Docker+Linux安装部署教程
Umami是什么? Umami是一个开源项目,简单、快速、专注用户隐私的网站统计项目。 下面来介绍如何本地安装部署Umami项目,进行你的网站统计接入。特别对于首次使用docker的萌新有非常好的指导、参考和帮助作用。 Umami的github和docker镜像地…...
FBX SDK的使用:基础知识
Windows环境配置 FBX SDK安装后,目录下有三个文件夹: include 头文件lib 编译的二进制库,根据你项目的配置去包含相应的库samples 官方使用案列 动态链接 libfbxsdk.dll, libfbxsdk.lib是动态库,需要在配置属性->C/C->预…...
VisionMamba安装
1.安装python环境 conda create -n mamba python3.10.13 -y conda activate mamba2.安装torch环境 conda install cudatoolkit11.8 -c nvidia pip install torch2.1.1 torchvision0.16.1 torchaudio2.1.1 --index-url https://download.pytorch.org/whl/cu1183.安装其他包 c…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx
“Reactive Stream Processing in Industrial IoT using DDS and Rx” 是指在工业物联网(IIoT)场景中,结合 DDS(Data Distribution Service) 和 Rx(Reactive Extensions) 技术,实现 …...
