当前位置: 首页 > article >正文

ProGen生成功能蛋白序列

LLM在包括蛋白质设计等各种生物技术应用中展现出了潜力。ProGen是一种语言模型,它能够生成在大型蛋白质家族中具有可预测功能的蛋白质序列,这类似于针对不同主题生成语法和语义正确的自然语言句子。该模型在来自超过19,000个家族的2.8亿个蛋白质序列上进行训练,并通过指定蛋白质属性的控制标签进行生成。ProGen可以进一步针对经过筛选的序列和标签进行微调,以提高可控蛋白质生成性能。针对五个不同溶菌酶家族进行微调的人工蛋白质,其催化效率与天然溶菌酶相似,与天然蛋白质的序列同一性低至31.4%。正如以分支酸变位酶和苹果酸脱氢酶所展示的那样,ProGen可以很容易地应用于多种蛋白质家族。

原文请参考:Large language models generate functional protein sequences across diverse families, Nature Biotechnology, 2023

目录

  • 背景概述
  • 训练数据构建
  • ProGen:条件语言模型
  • ProGen训练

背景概述

受自然语言模型的启发,开发了ProGen,这是一种在数百万条原始蛋白质序列上进行训练的蛋白质语言模型,它可以生成跨越多个家族且具有多种功能的人工蛋白质。ProGen证明基于深度学习的语言建模可用于从头生成功能与天然蛋白质相当的人工蛋白质序列。

ProGen通过学习预测在给定原始序列中前面氨基酸的情况下,下一个氨基酸出现的概率来进行迭代优化。ProGen从一个庞大且多样的蛋白质序列数据库中以无监督的方式进行训练。训练完成后,只需给出提示,ProGen就能从头为任何蛋白质家族生成全长蛋白质序列,这些序列与天然蛋白质具有不同程度的相似性。在常见的情况下,如果某个蛋白质家族有部分序列数据可用,可以使用预训练语言模型微调技术,利用家族特异性序列进一步提高ProGen捕捉与该蛋白质家族相对应的局部序列邻域分布的能力。

ProGen是一个拥有12亿参数的神经网络,它使用包含2.8亿个蛋白质序列的公开数据集进行训练。ProGen的一个关键组成部分是条件生成,即输入提供给语言模型的属性标签(例如,蛋白质家族:Pfam ID PF16754,Pesticin)控制序列生成。在自然语言中,这些控制标签可以是风格、主题、日期和其他实体(图1a)。对于蛋白质而言,控制标签是诸如蛋白质家族、生物学过程和分子功能等属性,这些属性在公共蛋白质数据库中的大部分序列中都有记录(图1b和补充图1)。
fig1

  • 图1a:条件语言模型是一种深度神经网络,它能够生成语义和语法正确,同时新颖多样的自然语言文本,并且可以通过输入控制标签来进行调控,这些标签可以控制文本的风格、主题及其他要素。
  • 图1b-c:与自然语言模型类似,ProGen是一种条件蛋白质语言模型-图b,它能够根据输入的控制标签-图c,跨蛋白质家族生成多样的人工蛋白质序列。
  • 图1d:ProGen使用包含来自数千个家族的2.8亿个自然进化蛋白质的大型通用蛋白质序列数据集进行训练,在该研究中,对其中五个不同的溶菌酶家族(lysozyme families)进行了实验。
  • 图1e:ProGen是一个拥有12亿参数的神经网络,基于Transformer架构,该架构使用自注意力机制对残基间的相互作用(residue–residue interactions)进行建模。ProGen通过最小化通用蛋白质序列数据集(universal protein sequence dataset)中下一个氨基酸(amino acid)预测问题的损失来训练。

supfig1

  • 补充图1:在训练和微调过程中,为模型训练提供带有相关控制标签的样本序列。将氨基酸序列( a 1 a_1 a1 a 2 a_2 a2,…… )与所需的控制标签( < c 1 > <c_1> <c1> < c 2 > <c_2> <c2>,…… )前置组合,构成tokens,让ProGen以自回归方式计算下一个token出现的概率。构建控制标签是为了提供有关分子功能、生物学过程、细胞组成或特定蛋白质家族的信息。

训练数据构建

为了训练ProGen,作者从UniParc、UniprotKB、Pfam和NCBI中收集了一个通用蛋白质序列数据集(图1d和补充表1)。
suptab1

  • 补充表1:用于训练和微调ProGen的公开可用数据集列表。训练数据集(a - c)总共包含2.8亿个unique的蛋白质,这些蛋白质与基于生物过程、分子功能相关关键词的101,100个标签相关联(d)。微调数据集(e - h)用于进一步提升ProGen在溶菌酶、分支酸变位酶和苹果酸脱氢酶蛋白质的局部序列邻域中生成蛋白质序列的能力。

该通用数据集包含2.81亿条非冗余蛋白质序列(来自超过19,000个Pfam家族)以及相关元数据(作为控制标签)。氨基酸词汇表采用IUPAC规定的25种标准氨基酸名称。控制标签分为两类:(1)关键词标签-keyword tags;(2)分类学标签-taxonomic tags。根据UniprotKB中受控的分层关键词词汇表(其中许多术语源自基因本体GO-Term)的定义,关键词标签包含1100个术语,涵盖细胞成分、生物过程和分子功能等方面。分类学标签则包含来自NCBI分类学的100,000个术语,涉及八个标准分类等级。汇总后的数据集被划分为一个包含2.8亿条序列的训练集,以及两个测试集:一个是包含来自20个蛋白质家族的100,000条序列的分布外测试集(OOD测试集),另一个是随机抽样得到的包含100万条序列的分布内测试集(ID测试集)。这些测试集不用于训练,而是用于评估模型。在训练数据库上完成模型训练后,模型会进一步在以下数据集上进行微调,以完成生成和分类任务。

在对溶菌酶蛋白进行微调时,作者从Pfam数据库中选择了五个蛋白质家族,分别是噬菌体溶菌酶(PF00959)、pesticin(PF16754)、氨基葡萄糖苷酶(PF01832)、糖苷水解酶家族108(PF05838)和转糖基酶(PF06737),共得到55,948条序列。在微调过程中,提供给模型的蛋白质是未比对的蛋白质序列,并在前面添加一个用于指定蛋白质家族的控制标签。

在对分支酸变位酶(CM)蛋白进行微调时,使用HHBlits和blastp程序,以大肠杆菌CM - 预苯酸脱水酶(P蛋白)的CM结构域(EcCM)的1-95位残基为查询序列进行搜索,得到20,214条序列。

在对苹果酸脱氢酶(MDH)蛋白进行微调时,选择了Interpro数据库中IPR001557的L - 乳酸/MDH蛋白家族,包含17,094条序列。

ProGen:条件语言模型

与那些为判别性蛋白质预测任务对氨基酸序列进行编码的基于 Transformer 的语言模型不同,ProGen 是一个专门用于自回归生成的解码器 Transformer:它以从左到右的方式逐个token地生成序列,下一个token的生成依赖于之前生成的所有tokens。

a = ( a 1 , . . . , a n a ) a=(a_1,...,a_{n_{a}}) a=(a1,...,ana)是长度为 n a − 1 n_{a}-1 na1的氨基酸序列,最后附加一个"end of sequence" token,令 c = ( c 1 , . . . , c n c ) c=(c_1,...,c_{n_c}) c=(c1,...,cnc)是描述符的集合,比如蛋白质家族或者源物种,即 “control tags”,通过这些(控制标签),作者希望实现对氨基酸序列生成的控制。设 x = [ c ; a ] x = [c; a] x=[c;a]为在氨基酸序列前添加控制标签序列后形成的序列。那么,对于长度为 n = n a + n c n = n_a + n_c n=na+nc n a n_a na为氨基酸序列长度, n c n_c nc为控制标签序列长度)的这种组合序列,其概率为 P ( x ) P(x) P(x)。语言建模将生成序列 x x x的问题分解为下一个token预测问题,其中token可以是氨基酸,也可以是控制标签。训练一个参数为 θ \theta θ的神经网络,并最小化数据集 D = ( x 1 , . . , x ∣ D ∣ ) D=(x^{1},..,x^{|D|}) D=(x1,..,xD)上的负对数似然。

在生成时,直到模型预测出 ‘end of sequence’ token 才停止。

ProGen训练

在训练过程中,作者纳入了每条序列及其反向序列。在每条序列前添加相应的控制标签子集。对于给定的一条序列,在不同数据库中可能存在多个版本,每个版本都有各自相关的控制标签。作者随机抽取一组控制标签,但在抽样时更倾向于SwissProt标签,因为它们经过人工验证。此外,会纳入一个只有序列而没有控制标签的样本,这样ProGen就能仅凭借序列数据来完成蛋白质的生成任务

作者将所有序列截断为最大长度512。长度小于512的序列会进行填充,并且用于padding的token会被排除在训练所用的损失函数计算之外。预训练期间,控制标签的平均token长度为8。我们的模型在TensorFlow中实现,使用batch大小为2048进行训练。


http://www.kler.cn/a/524029.html

相关文章:

  • 2007-2020年各省国内专利申请授权量数据
  • 【Matlab高端绘图SCI绘图模板】第006期 对比绘柱状图 (只需替换数据)
  • 2025-01-28 - 通用人工智能技术 - RAG - 本地安装 DeepSeek-R1对话系统 - 流雨声
  • PWM频率测量方法
  • SpringBoot或SpringAI对接DeekSeek大模型
  • lightweight-charts-python 包 更新 lightweight-charts.js 的方法
  • 蓝桥杯python语言基础(3)——循环结构
  • Linux 非阻塞IO
  • 《Memory Barriers a Hardware View for Software Hackers》阅读笔记
  • 【Linux】Linux C比较两个 IPv6 网关地址是否相等,包括前缀
  • SpringBoot-Vue整合百度地图
  • Attention Free Transformer (AFT)-2020论文笔记
  • 适配器模式——C++实现
  • 人工智能在医疗领域的应用有哪些?
  • LeetCode - #196 删除重复的电子邮件并保留最小 ID 的唯一电子邮件
  • 漏洞修复:Apache Tomcat 安全漏洞(CVE-2024-50379) | Apache Tomcat 安全漏洞(CVE-2024-52318)
  • C#@符号在string.Format方法中作用
  • HTML 标题
  • threejs实现烟花效果
  • 实现网站内容快速被搜索引擎收录的方法
  • Spring Boot 日志:项目的“行车记录仪”
  • 《Trustzone/TEE/安全从入门到精通-标准版》
  • 【MQ】如何保证消息队列的高可用?
  • Spring Boot多环境配置实践指南
  • Python面试宝典8 | 手写Python max 函数,从入门到精通
  • Kubernetes扩展