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…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
