Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >密苏里大学许东团队提出S-PLM模型,通过序列和结构对比学习的语言模型进行蛋白质预测

密苏里大学许东团队提出S-PLM模型,通过序列和结构对比学习的语言模型进行蛋白质预测

作者头像
智药邦
发布于 2025-02-05 07:21:13
发布于 2025-02-05 07:21:13
3850
举报
文章被收录于专栏:智药邦智药邦

蛋白质在各种生化过程中起着至关重要的作用。大型蛋白质语言模型(PLM)通过加速蛋白质功能的确定和具有所需功能的蛋白质的设计,在重塑蛋白质研究方面具有良好的潜力。PLM的预测和设计能力依赖于从蛋白质序列中获得的表示。然而,大多数PLM缺乏关键的3D结构信息,这限制了PLM在各种应用中的预测能力,特别是在高度依赖3D结构的应用中。

2024年12月12日,美国密苏里大学许东教授团队在Advanced Science上发表文章S-PLM: Structure-Aware Protein Language Model via Contrastive Learning Between Sequence and Structure。

作者提出了S-PLM,这是一种3D结构感知的蛋白质语言模型(PLM),它利用多视图对比学习来对齐协调潜在空间中蛋白质的序列和3D结构。S-PLM利用Swin-Transformer在AlphaFold预测的蛋白质结构上嵌入结构信息,并将其融合到蛋白质语言模型ESM2的序列嵌入中。实验证明了S-PLM的性能超越了现有方法。

如图1所示,S-PLM预训练架构由两个编码器组成(图1a),一个编码蛋白质序列,另一个编码三维蛋白质结构。本研究采用单字母氨基酸序列作为蛋白质序列的输入。由于残基间距离包含了蛋白质结构的全面和必要的信息,因此使用主链Cα接触图来表示蛋白质的三维结构。在预训练过程中,S-PLM同时输入氨基酸序列和主链Cα接触图。通过序列编码器将蛋白质序列信息转换为残基级嵌入,通过结构编码器(Swin-Transformer)将接触图信息转换为蛋白质级嵌入。然后,将序列和接触图转换为单独的蛋白质水平嵌入。最后,使用对比学习训练S-PLM模型,以最小化同一批序列和接触图的对比损失。S-PLM模型的目标是最大化同一蛋白质序列和结构的嵌入对齐,并明确分离不同蛋白质之间的序列和结构的嵌入去对齐。受SimCLR方法的启发,本工作采用了CLIP方法进行对比语言图像预训练。除了CLIP跨不同模态的对齐和去对齐之外,模型还考虑了同一模态内的去对齐。例如,如图1a所示,模型还强调不同蛋白质的序列(s1与s2)和接触图(c1与c2)的嵌入之间的不相似性。

图1 S-PLM结构图

S-PLM的序列编码器通过将结构感知模块集成到ESM2模型中来实现(图1b)。有几种方法可以实现这个结构感知模块。一种选择是通过调整预训练的权值来微调ESM2模型,这在集成结构信息的同时保留了ESM2编码器的原始架构。或者,可以使用适配器调优,其中适配器模块集成到ESM2模型的top-K Transformer层中。这些适配器模块作为结构感知组件,仅在预训练过程中进行训练。如图1b所示,结构感知模块由瓶颈结构和跳过连接组成,在一个Transformer层中定位两次:在多个头部注意力投影之后和在两个前馈层之后。使用适配器调优来实现S-PLM的序列编码器具有几个优点。首先,集成的适配器模块非常紧凑。它比ESM2原有的Transformer模块包含更少的参数,减轻了培训负担。其次,它允许连续训练以添加新的蛋白质特征(例如蛋白质功能),以用于模型的未来扩展,而不会忘记先前学习的特征,因为S-PLM预训练保留了ESM2模型的序列表示能力,而ESM2主干模型(架构及其权重)完好无损。

在推理阶段,S-PLM可以灵活地接受序列或接触图作为输入,并根据特定的下游任务产生相应的各级嵌入。这种多功能性使S-PLM能够根据给定任务的特定输入数据和要求进行调整并提供合适的表示。在本文和后续研究中,S-PLM模型主要从蛋白质序列中生成序列嵌入。因此,预训练的S-PLM序列编码器在部署之前生成残差级嵌入,用于下游任务。整个序列编码器可以完全冻结或可学习。为了充分利用S-PLM在监督蛋白预测任务中的潜力,作者基于S-PLM的序列编码器开发了几种轻量级调优策略,所有这些策略都被纳入轻量级调优工具箱,包括微调顶层、适配器调优(图1c)和LoRA调优(图1d)。

模型的序列编码器是基于预训练的ESM2模型开发的。考虑到计算资源和模型容量的限制,作者选择ESM2-t33-650M-UR50D作为基础PLM模型,该模型有6.5亿个参数。首先对每个氨基酸进行独热编码,然后使用33层Transformer编码器对输入蛋白序列进行标记。每个位置的嵌入维数为1280。在此过程中,将BEGIN令牌和END令牌添加到序列中,并与氨基酸令牌一起通过Transformer,并且使用PAD令牌填充序列。通过Transformer层,输出是每个残基1280维向量的张量,嵌入BEGIN和END标记以及填充序列的嵌入。每个残基的嵌入用于下游任务中蛋白质的残基水平表示。每个残基嵌入的平均值(不包括填充标记)用于对比学习训练和下游任务的蛋白质水平嵌入。然后,将两个投影层应用于蛋白级嵌入,将该维度转化为最终输出的蛋白级嵌入,输出维数为256。

由于接触图包含完整的蛋白质结构信息,具有固有的不变性,且易于实现,因此采用接触图来表示三维蛋白质结构。因此,作者的结构编码器是专门设计来编码蛋白质接触图的,应用Swin-Transformer (swinv2-tinty-patch4-window8-256),因为它能够更有效地从接触图表示中提取特征。为了满足图像网络需要三个输入通道的要求,将接触映射转换为具有三个通道的表示。通过计算一个序列中每个氨基酸的Cα原子之间的坐标距离,生成原始接触图。通常,如果两两距离在选定的阈值内,则接触映射值为1,表示残基之间的接触;否则,它的赋值为0。对每个通道应用距离阈值,并将原始接触映射转换为连续相似矩阵,每个通道的距离阈值为22埃,与AlphaFold2中使用的值相同。通过对Swin-Transformer表示层的嵌入进行平均,得到结构的蛋白级嵌入,用于对比学习训练。然后,对蛋白级嵌入应用两个投影层,将其维数变换为最终输出的蛋白级嵌入,其维数为256维,与序列中最终输出的蛋白级嵌入相同。

本研究中对比学习的目的是使来自同一蛋白质的序列嵌入和结构嵌入更加接近,并进一步排斥来自不同蛋白质的潜伏空间嵌入。为了实现这一点,对序列和结构编码器的最后一个投影层获得的蛋白质水平嵌入应用了多视图对比损失函数SimCLR,其中的NT-Xent对多视图对比损失函数进行了改进,该损失函数有助于最大化同一个蛋白质两个视图中蛋白质嵌入的对齐,并尽量减少蛋白质嵌入与其他蛋白质嵌入的相似性。

训练数据库从Swiss-Prot文库中获取蛋白质的氨基酸序列,并保存为FASTA格式。蛋白质的三维结构从AlphaFold2库中获得。基于AlphaFold2预测的3D结构,使用内部Python代码确定了单个蛋白质的Cα-Cα接触图。从Swiss-Prot文库中随机选择50万个蛋白进行训练,选择41500个蛋白进行验证。验证集中与训练集中相似的序列没有被删除。考虑到Swiss-Prot文库的庞大规模(总共有542378个蛋白质),这种相似性可以忽略不计。在预训练过程中,截断大于512个残基的输入蛋白,只对序列和接触图谱的前512个残基进行再训练。

本文中的轻量级调优策略是指对预先存在的模型进行特定且通常是参数有效的修改的训练方法,与完全微调训练模型相比,减少了所需的计算资源和内存。在S-PLM的序列编码器上实现微调顶层、LoRA和适配器调优,如图1所示,用于下游蛋白质序列预测任务。每项策略的详情如下:

  • 轻量调整序列编码器微调顶层:ESM2主干模型共有33层Transformer。这里的“顶层微调”是指只微调K≤33层的变压器顶层,其余的全部冻结。这里,K是构型中的一个超参数。
  • 序列编码器-LoRA的轻量级调优:LoRA指的是低秩自适应,它冻结了预训练的模型权重,并将可训练的秩分解矩阵注入Transformer体系结构的每一层。它可以显著减少下游任务的可训练参数的数量。
  • 适配器调优:将适配器模块集成到ESM2模型的Transformer层中。适配器模块在ESM2的一个Transformer层中定位了两次:在自注意力投影之后和在两次前馈之后。每个适配器模块由一个瓶颈结构和一个跳跃连接组成。瓶颈结构将输入数据压缩到降维空间,然后对数据进行重构,使其恢复到原始输入维。瓶颈结构使适配器模块相对于原始Transformer中的注意层和前馈层具有很少的参数。ESM2模型与结构感知模块的集成如图1b所示。与最初的适配器调优不同,作者将适配器模块应用到所有Transformer层中,这些适配器模块专门插入到ESM2的top-K Transformer层中。

对于受监督的下游任务,适配器调优是通过将一组额外的并行适配器集成到结构感知模块中来实现的,每个适配器专用于一个特定的任务,如图1c所示。这些适配器模块中的每个模块都与结构感知模块中的模块共享相同的体系结构,并捕获针对各种下游任务定制的输入特性的不同方面。这些模块独立处理相同的输入特征,提取独特的表示,然后组合。为了训练新的下游任务,将一个新的可训练适配器模块添加到并行适配器列表中,同时冻结所有先前添加的并行适配器。

作者将S-PLM与一些具有代表性的方法进行了比较,如表1所示,在蛋白质折叠分类、蛋白质超家族分类、蛋白质家族分类任务上,无论是否微调模型,无论top K取值多少,S-PLM准确度都高于对应的基线语言模型ESM2,而参数量却相差不大,因此效率也相差不大。结果表明,S-PLM超越了现有方法。

表1 与其他方法对比

作者设计了消融实验来验证模型设计的有效性。如表2所示,作者使用蛋白质功能预测中的三个数据集(生物过程BP,细胞组件CC,分子功能MF)对比了不同微调策略的影响,说明了作者设计的适配器微调的有效性。S-PLM在经过适配器微调和LoRA微调后准确度均高于使用ESM2。与适配器策略相比,LoRA策略的准确度虽然稍有降低,但其参数量显著减小,适用于轻量化部署的场景。以上结果说明了S-PLM的优越性。

表2 消融实验

作者还进行了案例分析。为了研究S-PLM是否可以将结构信息注入序列潜在空间,作者评估了CATH蛋白结构域的序列表示。由于本实验优先考虑结构信息,作者从每个CATH超家族中选择一个具有代表性的序列,以提供清晰的可视化。作者利用了CATHS40数据集,其蛋白质具有最大40%的序列同一性。作者的分析主要集中在CATH层次结构的类、体系结构和拓扑级别,不包括最后一级的同源超家族,后者主要由序列相似性驱动。作者将S-PLM生成的序列表示可视化并对仅依赖序列信息的模型进行基准测试,包括ESM2;S-PLM这两个语言模型,另外两个结构感知模型PromptProtein和ProstT5通过预测序列的3D结构或3D结构标记进行预训练(图3a)。图3a的每一行显示了一个层次结构中最具代表性的五个类别的蛋白质嵌入的t-SNE可视化。结果表明,S-PLM的序列表示比其他模型的嵌入更能清晰地分离CATH结构类。

作者进一步利用Calinski-Harabasz指数(CHI)来定量评估不同方法得到的嵌入在区分CATH结构类别方面的能力。CHI分数量化了簇间离散度之和与簇内离散度之和之间的比率。作者应用CATH分类来定义基真聚类,使用序列嵌入来计算聚类之间和聚类内部的离散度。如图2b所示,对于类、体系结构和拓扑级别,S-PLM的CHI比ProsT5高30%左右,比ESM2高300%左右。鉴于这些CATH分类是使用蛋白质结构建立的,该分析表明,所开发的S-PLM产生的序列嵌入具有固有的蛋白质结构意识,在有效区分具有不同结构特征的蛋白质方面超过了其他模型。仅使用序列的ESM2表现不佳,也表明其在明确获取蛋白质结构知识方面存在局限性。

图2 案例分析

在这项工作中,作者提出了S-PLM,一种通过蛋白质序列和3D结构之间的对比学习进行预训练的结构感知蛋白质语言模型。S-PLM序列编码器通过在预训练的ESM2模型上使用结构感知对比学习模块,生成融合三维结构信息的序列表示,同时保持ESM2原有的序列表示能力。重要的是,这种基于适配器的体系结构是可扩展的;未来如果需要加入新的蛋白质属性,如蛋白质功能、蛋白质-蛋白质相互作用等,现有的ESM2和结构感知对比学习模块可以保持不变。新属性可以通过简单地添加一个并行适配器并对更新的数据进行训练来集成。实验结果表明了S-PLM及其轻量级调优策略作为蛋白质分析和预测任务的替代PLM的潜力。

在未来,通过扩展使用更全面的蛋白质结构和序列数据库,S-PLM有望得到进一步改进。此外,作者提出的适配器调优方法为蛋白质语言模型的持续学习提供了坚实的基础。通过不断完善和扩展训练数据集,作者的目标是为S-PLM提供对不同生物背景下蛋白质结构的广泛理解。这种数据增强和模型改进的迭代过程有望推动基于序列的蛋白质表示学习的界限,使S-PLM在更广泛的蛋白质分析和预测任务中实现更高的效率。

参考文献:

Wang et al. S-PLM: Structure-Aware Protein Language Model via Contrastive Learning Between Sequence and Structure. Advanced Science. 2024

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智药邦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入学习Docker网络(看这篇就完全够了)
通过上述,将宿主机上的所有容器都连接到这个内部网络上,两个容器在同一个网络下,会从这个网关下各自拿到分配的ip,此时两个容器的网络是互通的。
小熊学Java
2023/07/16
1.4K0
深入学习Docker网络(看这篇就完全够了)
这就是你日日夜夜想要的docker!!!---------Docker四种网络模式解析
我们安装完Docker时,会发现系统已经自动创建了一个docker0网卡和其他Docker网络模式
不吃小白菜
2020/09/24
4000
这就是你日日夜夜想要的docker!!!---------Docker四种网络模式解析
Docker网络详解
Docker 网络 Docker网络原理 每启动一个Docker 容器,docker 将给docker 容器分配一个ip 只要启动了docker 就会有一个docker0 网络使用的是桥接模式,ev
PayneWu
2020/12/18
5030
Docker网络详解
docker网络之Bridge网络
为什么同一台机器上的两个容器IP可以互相通信? 在聊这个问题之前,我们先看一个日常生活中的例子来辅助理解,Docker Bridge网络在局域网中,多台电脑要想互相通信,需要一个交换机通过动态IP协议
友儿
2022/09/13
6180
docker网络之bridge
https://blog.csdn.net/u014027051/article/details/53908878/
charlieroro
2020/03/24
1.1K0
docker网络之bridge
Docker容器网络
Docker在安装后自动提供3种网络,可以使用``docker network ls`命令查看
Alone-林
2022/08/23
5570
Docker容器网络
云原生时代必须具备的核心技能之Docker高级篇(Docker网络详解)
  前面给大家项目的介绍了Docker的基础内容 Docker基础篇 接下来给大家系统的介绍下Docker高级篇的内容:网络核心、Docker实战、DockerCompose、Harbor以及Swarm。欢迎关注收藏哦
用户4919348
2022/01/06
7550
云原生时代必须具备的核心技能之Docker高级篇(Docker网络详解)
k8s1.13.0二进制部署-flannel网络(二)
Overlay Network:覆盖网络,在基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路连接起来。 VXLAN:将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头进行封装,然后在以太网上传输,到达目的地后由隧道端点解封装并将数据发送给目标地址。 Flannel:是Overlay网络的一种,也是将源数据包封装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VXLAN、AWS VPC和GCE路由等数据转发方式。
yuezhimi
2020/09/30
6760
k8s1.13.0二进制部署-flannel网络(二)
Linux network namespace(网络命名空间)认知
不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树
山河已无恙
2024/02/26
1.1K0
Linux network namespace(网络命名空间)认知
如何使用Calico实现跨主机Docker网络通信
户外依然大雨滂沱,只是这回彷彿不仅命运一人独自哭泣,不晓得由来,窗外的雨水似乎渗上我心头,有些寒冻,有些缩麻,还有些苦涩。城市万家灯火,橘黄街灯与家户里的温暖流洩,我总觉得这时候的我,最脆弱。-----《Unser Leben Unser Traum》
山河已无恙
2023/03/02
1.1K0
[Docker]手动配置docker网络
本文编写于 205 天前,最后修改于 153 天前,其中某些信息可能已经过时。 1.环境:Centos7 2.运行一个容器 [root@idc ~]# docker run -it --rm --name=mynetwork --net=none centos:latest /bin/bash #--net=none:docker不对容器进行网络配置,无网络配置 #--rm:容器停止后会清空容器,对容器的设置都将被清除 #容器运行后,再克隆一个会话进行下面的步骤 3.创建容器的网络命名空间 [root@id
贰叁壹小窝
2020/07/22
9250
Docker实践之09-高级网络配置
当Docker启动时,会自动在主机上创建一个名为docker0虚拟网桥,实际上是Linux的一个bridge,可以理解为一个软件交换机,它会在挂载到它的网口之间进行转发。 同时,Docker随机分配一个本地未占用的私有网段中的一个地址给docker0接口。比如典型的172.17.0.1,掩码为255.255.0.0。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16)的地址。 当创建一个Docker容器的时候,同时会创建了一对veth pair接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即一端在本地并被挂载到docker0网桥,名称以veth开头(例如vethb305ad8)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。 Docker创建了在主机和所有容器之间一个虚拟共享网络。
编程随笔
2022/09/16
1.4K0
Docker实践之09-高级网络配置
Docker 网络
当你安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host
Java_慈祥
2024/08/06
2070
Docker 网络
关于docker环境运行zabbix时,你可能不知道的事
关于docker环境运行zabbix时,可以快速的部署一套zabbix环境,不管是学习docker还是学习zabbix,都是可以作为一个实际项目来进行测试和练习,但是如果对docker的网络模式不熟悉,可能会遇到一些坑,本文就一些你可能不知道的事进行了测试,与试水,希望能给与大家帮助
用户6641876
2020/02/19
3.9K0
docker自定义ip地址(自定义网桥)
如果已经有/etc/docker/daemon.json文件,添加内容的时候就只需要添加大括号里面的内容就好了,不需要另外添加大括号。
用户9949933
2023/02/24
9500
Docker | 自定义网络(网关、子网地址)
热爱前端,也喜欢专研各种跟本职工作关系不大的技术,技术、产品兴趣广泛且浓厚,等待着一个创业机会。本号主要致力于分享个人经验总结,希望可以给一小部分人一些微小帮助。
甜点cc
2022/10/24
1K0
Docker | 自定义网络(网关、子网地址)
docker(网络)
我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要按照了docker,就会有一个docker0桥接模式,使用的技术是veth-pair技术!
崔笑颜
2020/11/03
5320
docker(网络)
Docker-进阶(容器网络、compose、harbor、swarm)
接着Docker-入门,上次了解了Docker的基本命令,镜像容器操作,自定义镜像两种方式(容器和DockerFile),数据卷实现容器数据持久化和容器间数据共享,都是日常工作中最常用的。
aruba
2022/09/28
1K0
Docker-进阶(容器网络、compose、harbor、swarm)
harbor修改了docker默认网卡失效原因
修改了docker的默认网段,但是harbor启动时候又会出现docker默认的网段,故现找下原因
SY小站
2020/06/15
1.5K0
Docker 网络
docker网络主要是解决容器联网问题,也是我们使用容器中最重要的一个环节,如果容器没有网络则无法向网络中提供服务。
星哥玩云
2022/09/15
4500
相关推荐
深入学习Docker网络(看这篇就完全够了)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档