![]()
你可能没意识到一个很尴尬的事实:现在市面上那些号称能"读懂"RNA的AI模型,很多其实连一条完整的信使RNA都读不完。
这不是夸张。一条典型的成熟mRNA,动辄几千个核苷酸长。而目前主流的RNA基础模型,训练时用的上下文长度大多只有1024个token左右。这意味着什么?意味着一条2000多个核苷酸的mRNA塞进模型里,模型只能"看"到前面一截,后面的内容要么被砍掉,要么被硬塞进一个从没见过这么长输入的模型里,勉强运行。
这就像让一个只读过短篇小说的人去理解长篇小说的完整情节,你把书撕掉一半给他看,或者硬塞给他一本没删减的书但他脑子里的阅读习惯根本没为这个长度做过准备。他当然能读出点什么,但你不会相信他真正理解了故事的因果脉络。
RIBOSPAN这篇论文要解决的,就是这件事:怎么让一个AI模型,从头开始就是按照"读完整本书"的标准训练出来的,而不是读完短篇之后被迫拉伸去应付长篇。
为什么这事这么难:三个条件同时满足几乎没人做到
先说清楚mRNA这东西为什么重要。
信使RNA,简单说就是细胞里负责把DNA里的遗传信息"翻译"成蛋白质制造指令的分子。一条完整的mRNA分成三段:5'非翻译区(负责调控翻译怎么开始)、编码区(真正决定蛋白质长什么样的部分)、3'非翻译区(影响RNA稳定性和降解速度)。
这三段看起来各管各的,但实际上互相牵制得很厉害。编码区里的一个同义突变(不改变蛋白质序列,只是换了个"写法"),可能会改变RNA的折叠结构,进而影响到看似无关的3'区域的功能。这也是为什么mRNA疫苗和mRNA药物设计特别麻烦,你不能只优化一个局部指标,必须考虑整条链的相互作用。
这就带来一个核心矛盾:要理解mRNA的功能,模型必须能同时看到整条转录本的信息,而不是被切成一段一段分别处理。
现在的RNA基础模型基本分两条路。
第一条路是像RNA-FM、RiNALMo、AIDO.RNA这样的双向编码器,用的是双向自注意力机制。
> 双向自注意力:一种让模型在理解某个位置的信息时,能同时参考它前面和后面所有内容的机制,而不是像读书一样只能往前看。
这类模型的问题在于,上下文长度普遍卡在1024个token,根本装不下一条完整的长mRNA。
第二条路是像EVA这样的解码器模型,用因果注意力,靠自回归的方式一个一个生成token,能处理更长的序列,适合生成任务。但因果注意力有个硬伤:每个位置只能看到它前面的内容,看不到后面。这对生成没问题,但对"理解"RNA结构和功能就很吃亏,因为RNA的结构折叠、蛋白结合往往涉及序列中相距很远的两端同时参与,单向信息流天然处理不好这种双向依赖。
第三条路是一些为了塞下长序列而牺牲某些东西的高效架构。比如HydraRNA主要靠状态空间模块而不是纯注意力;RNAret用线性复杂度的双向保持机制;BiRNA-BERT用字节对编码把好几个核苷酸压缩成一个token。这些设计确实能处理更长的输入,但代价是:要么不再是每一层都做全局的两两交互,要么牺牲了单核苷酸级别的精度。
所以论文提出的核心诉求是:能不能同时做到三件事,单核苷酸级别的精确表示、每一层都是稠密的双向自注意力、模型规模足够大且原生支持完整转录本长度的上下文。
这三件事以前没人同时做到过。RIBOSPAN想成为第一个。
模型本身:16.1亿参数,原生一万个token的上下文
先看硬件配置。RIBOSPAN是一个32层的Transformer编码器,隐藏维度2048,总参数量16.1亿,原生预训练上下文长度是10240个token。
用的是单核苷酸级别的分词方式,也就是每一个A、C、G、U(在处理时统一转成T)各占一个token位置,不做任何压缩合并。
> 单核苷酸分词:把序列里的每一个碱基单独当作一个处理单元,不像某些方法把连续几个碱基打包成一个token。这样做的好处是位置分辨率精确到每一个碱基,代价是序列变长,计算量变大。
之所以坚持单核苷酸分词,是因为RNA里很多功能性的位点变化就是"差一个碱基"的事。如果分词的时候把几个碱基捏成一个token,相当于把显微镜的分辨率主动降低了,你可能压根看不清那个决定性的单点突变。这就好比检测文件里的错别字,如果你把检测粒度设成"每五个字看一次",那单字的错误你根本发现不了。
模型架构上用了RoPE位置编码和SwiGLU前馈网络,都是当前大语言模型里比较主流的设计选择,这里不算创新点,但保证了架构本身足够扎实。
真正的关键设计是"注意力隔离的序列打包"。
因为RNA序列长度差异极大,从几十个碱基的小RNA到上万个碱基的长转录本都有,如果每次训练都按最长序列的长度去处理,会浪费大量计算资源在填充的空白token上。RIBOSPAN的做法是把多条不同长度的RNA打包进同一个训练序列里,但同时用注意力掩码保证每条RNA的注意力计算只在自己内部进行,不会看到隔壁那条毫不相关的RNA的信息,位置编码也在每条序列的边界重新归零。
这就好比把好几个不同长度的包裹塞进同一辆货车里运输,但每个包裹之间用隔板严格分开,货车虽然装得更满更省油,但绝不会让A包裹的内容渗透进B包裹里。如果不做这个隔离,模型很可能学到"序列A后面接着序列B"这种完全是训练时拼接产生的假规律,而这在真实生物学里毫无意义。
训练数据:6760万条序列,857亿个核苷酸token
数据来源两个:RNAcentral(提供覆盖各种RNA类别的广泛数据)和Ensembl(提供带有完整CDS和UTR标注的高质量蛋白编码转录本)。
经过过滤、标准化、精确去重之后,最终训练集是6760万条RNA序列,857亿个核苷酸token。
数据里RNA类别的分布很不均衡,rRNA(核糖体RNA)占了三千多万条,是最大的一类,而piRNA只有二十万条左右。为了不让评估结果被这种不均衡带偏,验证集和测试集用了按类别配额抽样的方式,每类RNA至少保证一定数量的样本,蛋白编码转录本还按物种做了进一层的分层抽样。
训练策略:先15%掩码,再40%掩码的"持续预训练"
训练用的是掩码语言建模,也就是把序列里一部分核苷酸随机遮住,让模型根据上下文去猜被遮住的是什么。
> 掩码语言建模(MLM):训练时随机盖住输入序列的一部分内容,让模型学习用剩下的上下文去还原被盖住的部分。这是BERT系列模型最经典的自监督训练方式。
RIBOSPAN先用15%的掩码率训练一轮,然后在这个基础上继续训练,把掩码率提高到40%,做"持续预训练"。
为什么要这么折腾?因为15%的掩码率是标准设置,模型看到的大部分上下文都是完整的,比较容易靠局部信息猜出答案。而40%的掩码率相当于把将近一半的信息都藏起来,模型必须调动更远距离的上下文信息才能补全,这种"重度破坏"的训练场景,更接近实际应用里"从残缺信息还原设计意图"的需求,比如序列优化和重新设计任务。
这就像学开车,平时天气好的时候练车,遇到暴雨大雾的极端天气反而不知道怎么开。如果只用15%掩码训练,模型可能面对轻度信息缺失应付得很好,但一旦遇到大段序列被遮盖(比如设计任务里大幅度改写一段CDS)就会束手无策。40%掩码的持续训练,就是专门给模型补上这种"极端天气驾驶"的经验。
论文同时也训练了两个1024长度的基线模型作对照,一个是原生1024上下文,一个是同样做了40%掩码持续训练的1024版本,用来验证长上下文到底带来了多少实际收益。四个模型变体列在下表:
| 模型变体 | 原生上下文长度 | 掩码率 | 训练阶段 |
| RIBOSPAN-10K-15 | 10,240 | 15% | 预训练 |
| RIBOSPAN-10K-40 | 10,240 | 40% | 在10K-15基础上持续预训练 |
| RIBOSPAN-1K-15 | 1,024 | 15% | 预训练 |
| RIBOSPAN-1K-40 | 1,024 | 40% | 在1K-15基础上持续预训练 |
重建实验:短上下文模型硬拉到长文本,会有多惨
第一个核心实验是看模型能不能把被遮盖的核苷酸猜对。
用了两个指标,一个是掩码位置上的重建损失(数值越低越好),另一个是全局重建准确率(数值越高越好,衡量的是模型在整条序列所有有效位置上做argmax预测能正确恢复原始核苷酸的比例)。
结果非常清楚。当输入长度是1024个token的时候,各个模型表现都还不错,差距不大。但一旦把输入长度拉到10240个token,短上下文模型(无论是外部参照的AIDO.RNA-CDS,还是自家训练的RIBOSPAN-1K系列)的表现急剧下滑,靠的是直接用RoPE位置编码硬性外推,也就是位置编码天生只学过1024长度内的规律,硬拉到10倍长度去用,效果打折扣是必然的。
而原生用10240长度训练的RIBOSPAN-10K系列,在10240 token的输入下依然保持稳定的重建表现,甚至比在1024长度输入下的表现还要略好一点。
具体数字看下表(40%掩码,10240 token):
| 模型 | 重建损失 | 全局准确率 |
| AIDO.RNA-CDS | 1.19024 | 0.77791 |
| RIBOSPAN-1K-15 | 1.27385 | 0.77168 |
| RIBOSPAN-1K-40 | 1.06730 | 0.80264 |
| RIBOSPAN-10K-15 | 0.91122 | 0.83769 |
| **RIBOSPAN-10K-40** | **0.80033** | **0.85887** |
这组数字说明两件事:原生长上下文训练确实有效,硬外推的模型明显吃亏;40%掩码的持续训练确实提升了重度破坏场景下的还原能力,而且这种提升不是靠牺牲长上下文能力换来的,RIBOSPAN-10K-40在两方面都占优。
长上下文表征基准:光能"重建"还不够,还得看模型有没有"理解"上下文结构
重建准确率高只能说明模型会填空,不能证明模型真的理解了序列的上下文组织关系。论文为此专门设计了一个全新的评测基准,据其表述这是第一个系统评估RNA基础模型长上下文表征能力的基准。
设计思路挺巧妙。取一条完整的mRNA,在正中间挖出一小段区域(宽度约等于总长度的1/32),把这段区域内部的核苷酸顺序打乱,但保持成分不变(也就是A、C、G、T各有多少个不变,只是排列方式变了),周围的序列保持原样不动。这样就得到一对"原始序列"和"结构打乱序列"。
然后看模型的表征(也就是每个位置经过模型处理后得到的高维向量)在这两种情况下发生了什么变化。
具体有三个衡量指标。
第一个叫"额外上下文分离度"(ΔCS),衡量的是同一种核苷酸(比如都是A)在被打乱的区域和周围背景区域里,模型给它们的表征向量差异是不是变大了。理论上,如果模型真的在利用上下文信息,被打乱的区域和周围正常区域应该在表征空间里被区分开,数值越高说明模型对局部结构变化越敏感。
第二个叫"跨区域同碱基相似度"(Ccross),衡量打乱区域和背景区域里同种核苷酸的表征相似程度,数值越低说明区域分离得越干净。
第三个叫"远端表征扩散"(Ddistal),衡量的是这个局部的小改动,会不会"传染"到很远的、根本没被动过的位置上,数值越低说明改动的影响范围控制得越好,只在局部产生变化,不会莫名其妙地扩散到几千个碱基之外的地方。
这三个指标放在一起看,理想的模型应该是:ΔCS高(对局部变化敏感)、Ccross低(区域分离干净)、Ddistal低(影响范围可控,不乱扩散)。
结果发现,短上下文模型直接外推到10240长度时,ΔCS明显下降,Ccross明显上升,也就是模型对局部结构变化的敏感度和区分能力都在退化。用YaRN(一种推理时的位置编码缩放技术,不需要重新训练就能扩展模型可用的上下文范围)能大幅恢复ΔCS和Ccross,说明位置编码不匹配确实是退化的主因。
> YaRN:一种在推理阶段对旋转位置编码(RoPE)做频率插值调整的技术,让原本只训练过短序列的模型,能在不重新训练的情况下勉强适应更长的输入序列。
但YaRN的代价是Ddistal暴涨。也就是说,用YaRN恢复了模型对局部结构的敏感度,但同时让这个局部改动的影响范围失控地扩散到了远处本不该受影响的位置。这就像修好了一个漏水的水龙头,但顺带把整间浴室的水管都震裂了。看下面这组10240nt下的对比数据:
| 模型 | 设置 | ΔCS ↑ | Ccross ↓ | Ddistal |
| HydraRNA | 直接评估 | 0.313846 | 0.521605 | **0.000667** |
| AIDO.RNA-CDS | 基础版 | 0.208178 | 0.660208 | 0.004666 |
| AIDO.RNA-CDS | +YaRN | 0.446120 | 0.317370 | 0.025390 |
| RIBOSPAN-1K-15 | 基础版 | 0.221320 | 0.698757 | 0.006626 |
| RIBOSPAN-1K-15 | +YaRN | **0.451068** | 0.334152 | 0.016084 |
| RIBOSPAN-10K-15 | 原生10K | 0.405962 | 0.302668 | 0.000785 |
| RIBOSPAN-10K-40 | 原生10K | 0.405777 | **0.299277** | 0.001164 |
HydraRNA作为对照组也提供了一个有意思的信息。它主要靠状态空间模块(一种计算效率更高但不是纯粹注意力机制的序列建模方式),只有极少数层用了多头注意力。它的Ddistal低到几乎为零,说明它把改动的传播范围控制得非常死,但ΔCS也明显低于RIBOSPAN-10K系列,说明它对局部结构变化的敏感度不够,也就是控制传播的代价是牺牲了灵活捕捉上下文差异的能力。
而RIBOSPAN-10K系列,无论是15%还是40%掩码版本,都是ΔCS较高、Ccross较低、Ddistal也很低的组合,也就是既能敏感捕捉局部结构变化,又不会让这种敏感度失控地扩散到无关的远处位置。
这里能提炼出一个很有意思的道理:位置编码的外推技巧,能救回一部分"看起来像"长上下文理解的表面能力,但救不回模型对"这个改动应该影响多远"这件事的判断力。这种判断力,只有让模型在训练阶段就真的经历过完整长序列的输入,才能学到。就好比一个只在短跑训练场训练过的运动员,你给他吃兴奋剂能让他在马拉松赛道上跑得快一点,但他判断该在哪里省力、哪里冲刺的经验,这是兴奋剂给不了的,只能靠真正跑过马拉松才能积累。
RNA类型表征评估:不靠下游训练,直接看模型脑子里的"世界地图"画得好不好
前面的评测都是在特定任务上验证性能,但下游任务的效果好坏,一部分归功于预训练模型本身的质量,一部分归功于下游微调的技巧,这两者混在一起不容易分开评估纯粹的预训练表征质量。
论文因此设计了一个"冻结表征"评测:完全不做任何下游微调,直接把预训练模型的输出向量拿出来,看这些向量本身有没有把不同类型的RNA自然地聚拢在一起。
具体做法是把每条RNA序列所有有效位置的最后一层隐藏状态做平均池化,得到一个代表整条序列的向量,然后用最近邻分类(找10个最相近的邻居,看它们的标签是不是一致)来评估这个向量空间的组织质量。
> 最近邻分类:一种不需要训练分类器的评估方式,直接看某个样本在向量空间里最近的几个"邻居"是什么类别,如果邻居里同类居多,说明这个向量空间把同类样本自然地聚在了一起。
评测在几个不同的标签体系下进行:89955条序列涵盖25种RNA生物类型的"总体生物类型"评测;按功能粗分成"看家型""调控型""编码型"三大类的功能评测;专门针对7种调控类RNA的评测;专门针对长度超过1024nt的"长RNA"评测;以及基于Rfam数据库(一个收录RNA家族及其结构同源性的权威数据库)的家族评测。
结果显示RIBOSPAN-10K系列在总体生物类型评测和功能评测里都拿到了最高的准确率和邻域纯度,在长RNA评测里优势更明显,这也符合预期,毕竟长上下文原生训练本来就该在长序列上展现更强的表征能力。具体数字(10-NN准确率):
| 模型 | 总体生物类型 | 功能分类 | 调控类型 | 长RNA | Rfam家族 |
| RNA-FM | 0.865033 | 0.954608 | 0.953270 | 0.809924 | **0.990485** |
| RiNALMo | 0.857395 | 0.944081 | 0.952534 | 0.755867 | 0.985000 |
| AIDO.RNA-CDS | 0.805125 | 0.954296 | 0.870781 | 0.841973 | 0.952242 |
| HydraRNA | 0.861264 | 0.976237 | 0.925640 | 0.883771 | 0.987606 |
| RIBOSPAN-10K-15 | **0.898861** | **0.980621** | **0.959391** | 0.889375 | 0.983818 |
| RIBOSPAN-10K-40 | 0.898616 | 0.980933 | 0.958087 | **0.891010** | 0.983970 |
在Rfam家族评测上,RNA-FM表现最强,RIBOSPAN紧随其后但没能超越。这提示不同模型在不同任务上各有侧重,RIBOSPAN的强势区间集中在长序列和整体类型区分上,而在依赖保守序列和结构同源信息的家族识别任务上,RNA-FM似乎捕捉到了一些更专门化的模式。
值得一提的是,两个RIBOSPAN-10K变体之间的差异非常小,说明40%掩码的持续训练虽然在重度破坏场景下提升了重建能力,但没有以损害整体表征质量为代价,这是一个挺重要的"没有免费午餐但也没有额外亏本"的验证。
建在RIBOSPAN骨架之上:一个完整的mRNA生成与重新设计框架
有了这个能读懂完整长序列的表征骨架,论文接下来做了一件更实际的事:把它改造成一个能主动"设计"mRNA序列的生成模型。
用的是条件化的离散扩散框架。
> 离散扩散模型:一种生成方式,训练时先把干净的原始序列逐步"腐蚀"(比如遮盖一部分),然后训练模型学习怎么把腐蚀过的序列一步步还原回干净状态,生成时就反过来,从一个全被遮盖的空白序列开始,逐步去噪,直到生成一条完整的新序列。
和自回归生成(像写文章一样一个字接一个字往后写)不同,扩散模型在每一步去噪的时候,是同时更新序列里多个位置的,这意味着每一步都能利用序列两侧的完整上下文信息来做决策,而不是只能看已经写好的前半部分。
这个设计选择跟RIBOSPAN本身的双向架构天然契合。如果用自回归的方式生成,那前面提到的"双向理解"优势就白费了,因为生成过程本身又变成单向的了。用扩散,让5'区、编码区、3'区的设计可以在同一个统一的表征空间里相互协调,而不是先固定一头再往后硬凑。
具体实现上,扩散过程中加入了时间步和多维度设计条件(比如希望序列具备的稳定性、翻译效率等目标属性),通过AdaLN-Zero(一种条件调制技术,让外部条件能够持续地影响模型每一层的表示)注入到每个条件扩散模块里。
> AdaLN-Zero:一种让额外条件信息(比如"我想要一个翻译效率更高的序列")能够动态调节神经网络每一层输出的技术手段,最早用在图像生成的扩散模型里,这里被搬到RNA序列生成上。
特别值得一提的是"同义密码子扩散"这个设计。因为编码区的序列不是随便改的,改动了核苷酸就可能改变对应的氨基酸,进而改变蛋白质本身。同义密码子扩散限制候选替换只能在编码同一个氨基酸的不同密码子之间进行,这样既能优化编码区在RNA结构、稳定性等方面的性质,又能保证最终翻译出来的蛋白质序列完全不变。
这就好比给一段文字做同义词替换来优化韵律和节奏,但规定每次替换只能换成意思完全一样的词,读者读到的意思一个字没变,但整段话的"语感"(对应RNA里就是结构稳定性、翻译效率等)可以被悄悄调整。如果不加这个限制,模型很可能为了追求某个物理性质指标(比如结构更稳定)而随意改变编码,最后设计出的序列翻译出来的蛋白质根本不是原来想要的那个,这在实际药物设计里是绝对不能接受的事故。
论文里也提到,这套生成框架之外,团队还在开发一个结合强化学习后训练的闭环优化系统,用属性预测器给生成的序列打分,反馈回训练目标,进一步引导生成朝着期望的多维功能特性收敛。不过这部分的完整实验细节,论文里说会放在后续的期刊论文里公布。
从RIBOSPAN往前看,这条路还能走多远
这篇论文之后,长上下文RNA建模这条线其实还在往前推进。EVA这类因果注意力的解码器模型,已经把序列打分、从零生成、局部区域重新设计这些能力扩展到了转录本级别,走的是另一条和RIBOSPAN不同但目标相近的路。而HydraRNA、RNAret这些高效架构,代表的是在计算效率和表征精度之间做取舍的探索方向,如果未来有办法把稠密双向注意力的表征质量,和状态空间模型的计算效率结合到一起,可能会催生出下一代真正兼顾精度与规模的RNA基础模型。
写在后面
读到这篇论文时,最让我意外的一点是YaRN带来的"副作用"。表面上看,YaRN是个便宜又好用的技巧,不用重新训练,几乎白捡地扩展了模型的可用长度,而且确实修复了大部分的表征退化问题。但它把远端扩散指标(Ddistal)推高了将近10到40倍,这个代价在论文表格里安静地躺着,很容易被忽略。
这提示了一件更普遍的事:很多"事后修补"式的技术方案,看起来解决了问题,实际上只是把问题从一个可见的维度,转移到了另一个不太被关注的维度上。就像给一辆超载的卡车换更硬的减震器,表面上开起来更稳了,但轮胎和刹车系统承受的压力反而更大了,只是你平时看不到。
另一个值得琢磨的地方是HydraRNA的对照结果。它把远端扩散控制得极好,但代价是上下文分离度也随之打了折扣。这不是简单的谁更好谁更差,而是揭示了一种真实存在的架构级权衡:注意力越稠密,模型越容易学到丰富但也越容易失控的长距离关联;架构越紧凑越受限,传播范围就越可控,但捕捉复杂上下文关系的能力也跟着受限。这个权衡,恐怕不会随着算力的增长而自动消失,它更像是信息论层面的一个本质矛盾。
如果RNA设计未来真的要走向"闭环优化"(生成、打分、反馈、再生成),那这种远端传播的可控性恐怕会变得比准确率本身更重要,因为一旦模型对"改一个地方会不会影响八千个碱基之外的功能"这件事没有可靠的判断力,任何自动化优化系统都有可能在你完全没察觉的情况下把序列改坏。
Q&A
Q1:RIBOSPAN是什么?
A:RIBOSPAN是一个16.1亿参数的双向RNA基础模型,采用单核苷酸级别的分词和稠密双向自注意力机制,原生支持长达10240个核苷酸的上下文长度,能够对完整的长mRNA转录本进行高分辨率建模,同时具备理解RNA表征和生成设计mRNA序列两种能力。
Q2:RIBOSPAN和普通短上下文RNA模型比,优势在哪?
A:普通模型上下文长度大多只有1024个token,遇到更长的mRNA只能截断或硬性外推,导致重建准确率和长距离表征质量明显下滑。RIBOSPAN从预训练阶段就用10240长度的序列训练,在长序列上重建准确率更高,同时能更好地把局部结构变化限制在合理范围内,不会像外推方案那样让改动效果扩散到无关的远处位置。
Q3:论文里的同义密码子扩散是干什么用的?
A:这是mRNA生成框架里的一个约束机制,限定编码区的替换只能在编码同一氨基酸的不同密码子之间进行,这样可以在优化RNA结构稳定性、翻译效率等属性的同时,保证最终翻译出来的蛋白质序列完全不变,避免设计过程中意外改变蛋白质本身。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.