社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

从传统机器学习算法到深度学习:揭示m6A-SNP预测模型的演进之路

生信菜鸟团 • 2 周前 • 47 次点击  

从传统机器学习算法到深度学习:揭示m6A-SNP预测模型的演进之路

导语

因为最近在做利用卷积神经网络CNN和其他深度学习模型来预测m6A-SNP影响的项目,想分享一下目前不同m6A-SNP预测模型的研究进展。RNA N6-甲基腺苷(m6A)修饰是表观转录组最常见的修饰形式之一,在基因表达调控、细胞命运决定、疾病发生中扮演重要角色。

随着高通量测序与机器学习的发展,大家越来越关注单核苷酸变异(SNP)是否会破坏或新建m6A位点,进而影响mRNA命运,从而为RNA生物学机制和癌症和神经系统性疾病的治疗提供参考。这一系列中,下篇我们将接着上篇继续系统回顾几个具有代表性的m6A-SNP预测模型,并深入解析模型原理/代码实现和最新的深度学习研究成果,展示人工智能如何助力RNA修饰功能研究。

背景:为什么要预测m6A-SNP?

m6A修饰的动态变化受RNA序列和结构双重影响,而SNP的发生可能导致m6A修饰位点的获得(gain)或丧失(loss),从而对RNA稳定性、剪接、翻译等过程产生深远影响。已有研究发现,许多与癌症、自闭症、神经系统性疾病、免疫疾病相关的SNP会通过调控m6A修饰介导致病机制。

传统的实验验证方法如miCLIP、MeRIP-seq成本高、覆盖有限,因此基于序列的计算预测方法成为关键补充。

迄今为止,已经开发了许多计算方法来识别 RNA 序列中的 m6A 修饰位点,包括基于机器学习的方法和基于深度学习的方法。这是已发布的 m6A 修饰预测模型的时间表(https://www.sciencedirect.com/science/article/pii/S1046202325001082)。

m6A 预测现有工具的时间表
m6A 预测现有工具的时间表

深度学习革命:多层人工神经网络(CNN、Transformer、BiLSTM)的出现

虽然传统的机器学习方法和机器学习任务中的集成学习算法推动了 RNA m6A 修饰位点预测的发展,但其固有的局限性,例如依赖手动提取的特征和无法自主学习特征,给研究人员带来了挑战。此外,随着大数据时代的到来,海量生物序列数据的积累推动了深度学习在甲基化位点鉴定中的应用和发展。深度学习的出色之处不仅在于它比传统机器学习分类器更强的预测性能,还因为它能够熟练地识别基因组序列中的基序。

基于深度学习的方法采用多层人工神经网络(例如 CNN、Transformer、BiLSTM)直接从原始 RNA 序列中自动学习分层、高维特征表示(使用独热嵌入或词嵌入),无需手动特征工程,并通过复杂序列模式的端到端建模实现 m6A 修饰的准确预测.此外,已经开发了将不同深度学习模型与不同架构或训练策略相结合的深度集成学习策略,用于 m6A 预测。通过加权平均或元学习等方法整合预测,这些方法增强了稳健性和特征多样性,克服了单一模型的局限性(例如,过拟合或偏向模式学习)

6. DL-m6A

🔗[(https://ieeexplore.ieee.org/document/9834146)]

在这项研究中,Mobeen 等人提出了一款基于深度学习的工具——DL-m6A,该工具通过三种不同的编码方案(One-hot编码、核苷酸化学属性编码、电子-离子相互作用潜力编码)来捕捉RNA序列的上下文信息。DL-m6A架构结合了卷积神经网络(CNN)和全连接层(Dense Layer),能够自动提取RNA序列中的深层特征,并精准预测m6A位点。通过在多种组织特异性和全转录数据集上进行训练和验证,DL-m6A展现出了优于现有工具的预测效果。DL-m6A 在 ACC、Sn 和 Sp 之间表现出平衡的性能,分别达到 0.7786、0.7870 和 0.7694。其 MCC 为 0.5763,AUC 评分为 0.8568,表明分类能力稳定。

通过多层神经网络的特征提取,该工具展现了优于现有工具的预测能力,并且在组织特异性数据集和全基因组数据集上均表现出了强大的泛化能力。

DL-m6A 架构。从每个编码方案中提取的特征被连接在一起形成一个特征向量。将串联的特征向量提供给 dropout 层,以选择重要特征并防止架构过度拟合。所选特征用于通过进一步使用两个卷积层来进一步提取输入序列的更深层次特征。其中,第一个卷积层后跟层归一化、最大池化层和随机失活层,而第二个卷积层后跟层归一化。这些层的最终输出使用 flatten layer 进行展平,并提供给密集层集。在致密层之间,有一个 dropout 层,而第二个致密层的输出被赋予 softmax 层,用于甲基化和非甲基化序列之间的分类。
DL-m6A 架构。从每个编码方案中提取的特征被连接在一起形成一个特征向量。将串联的特征向量提供给 dropout 层,以选择重要特征并防止架构过度拟合。所选特征用于通过进一步使用两个卷积层来进一步提取输入序列的更深层次特征。其中,第一个卷积层后跟层归一化、最大池化层和随机失活层,而第二个卷积层后跟层归一化。这些层的最终输出使用 flatten layer 进行展平,并提供给密集层集。在致密层之间,有一个 dropout 层,而第二个致密层的输出被赋予 softmax 层,用于甲基化和非甲基化序列之间的分类。

模型亮点

多样化的编码方案

DL-m6A采用了三种编码方案,分别为:One-hot编码、核苷酸化学属性(NCP)编码、电子-离子相互作用潜力(EIIP)编码。每种编码方式从不同角度对RNA序列进行表征,使得模型能够更全面地捕捉m6A位点的潜在特征。

深度学习架构

DL-m6A结合了卷积神经网络(CNN)和全连接层(Dense Layer),通过多层神经网络逐步提取RNA序列中的局部和全局特征。这种架构能够自动学习复杂的序列模式,避免了传统方法依赖人工特征设计的局限。

优化的训练过程

本工具采用动量SGD优化器,通过训练过程中不断更新模型权重来加速收敛。同时,采用早停策略,当验证集性能不再提升时,自动停止训练,避免过拟合,确保模型的泛化能力。

广泛的数据集验证

为确保模型的普适性,DL-m6A在多个组织特异性数据集和全转录本数据集上进行了训练与测试。经过严格的评估,DL-m6A在不同数据集上均表现出了优异的性能,优于现有的多种m6A预测工具。

7. Gene2vec

🔗[(https://rnajournal.cshlp.org/content/25/2/205.full)]

此外,Zou 等人提出了Gene2vec,一个基于基因子序列嵌入的神经网络模型,旨在准确预测哺乳动物m6A位点。与传统方法不同,Gene2vec使用了长达1000nt的滑动窗口,通过词嵌入(word embedding)技术将RNA子序列转化为嵌入向量,从而捕捉到更多的序列上下文信息。通过结合卷积神经网络(CNN),Gene2vec展示了在多个数据集上的出色表现,并成功克服了传统方法中的过拟合问题。

Gene2vec 的 Sp 为 0.90,但 Sn 为 0.63,与 DL-m6A 相比降低了 0.157。MCC 值 0.50 表示模型在处理不平衡数据方面的能力受到限制。

该模型使用了具有多个单元结构的卷积神经网络(CNN),这些结构包括两个一维卷积层、一个池化层和一个dropout层。卷积层的作用是提取具有高维抽象表示的特征,池化层则通过限制池化操作来减少可处理的模型参数数量,dropout层则通过将部分输入单位随机设置为零,帮助防止模型的过拟合。该网络结构基于四种不同的单元结构进行组合。数据首先经过One-hot编码,然后通过四种不同的细胞结构和完全连接层作为输入,同时还包括相邻甲基化状态编码数据、RNA字嵌入数据,并将Gene2vec处理的数据馈送到具有两种细胞结构的网络中(如图10所示)。最终,模型通过投票策略从四个预测概率中获得最终结果。
该模型使用了具有多个单元结构的卷积神经网络(CNN),这些结构包括两个一维卷积层、一个池化层和一个dropout层。卷积层的作用是提取具有高维抽象表示的特征,池化层则通过限制池化操作来减少可处理的模型参数数量,dropout层则通过将部分输入单位随机设置为零,帮助防止模型的过拟合。该网络结构基于四种不同的单元结构进行组合。数据首先经过One-hot编码,然后通过四种不同的细胞结构和完全连接层作为输入,同时还包括相邻甲基化状态编码数据、RNA字嵌入数据,并将Gene2vec处理的数据馈送到具有两种细胞结构的网络中(如图10所示)。最终,模型通过投票策略从四个预测概率中获得最终结果。

模型亮点

基于基因子序列嵌入的深度学习方法

Gene2vec是首个使用基因子序列嵌入(gene subsequence embedding)方法进行m6A位点预测的模型。该方法通过词嵌入技术,将RNA子序列转化为低维度的嵌入向量,从而有效捕捉RNA序列中的长期依赖关系,为m6A预测提供了更加丰富的上下文信息。

扩展的滑动窗口

与传统的短序列滑动窗口不同,Gene2vec使用了最大1000nt长度的滑动窗口,能够更全面地获取RNA序列的上下游信息。这种长滑动窗口能够更好地捕捉序列中的复杂特征,避免了过拟合问题。

卷积神经网络(CNN)架构

Gene2vec结合了卷积神经网络(CNN)进行特征提取和分类。CNN能够自动从序列中学习到有效的特征,无需依赖传统方法中的人工设计特征。通过多个卷积层和池化层,模型能够逐层提取RNA序列中的深层特征,显著提高了预测准确性。

超越传统方法的性能

在多个数据集上进行评估后,Gene2vec的表现优于现有的最先进工具。通过对训练集和测试集的深入训练,并使用跨物种数据进行验证,Gene2vec成功避免了过拟合,并展示了更强的泛化能力。

大规模数据集的应用

Gene2vec采用了大规模的训练和测试数据集,与以往研究相比,使用了更多的训练样本和更长的序列长度。通过这种方式,模型在更大范围的RNA序列数据上进行了训练,显著提升了预测的可靠性。

8. adaptive-m6

🔗[(https://academic.oup.com/bib/article/24/2/bbac573/7008797?login=true)]

Wang 等人提出了一个名为 adaptive-m6A 的基于注意力的深度学习框架,该工具结合了卷积神经网络(CNN)、双向长短期记忆网络(BLSTM)和注意力机制,用于精确识别多个物种中的m6A位点。这项研究不仅提出了一种新的深度学习架构,还通过跨物种的验证展示了该模型的强大性能。

Adaptive-M6A 实现了近乎完美的性能指标,包括 0.9832 的 ACC、0.9900 的 Sn、1.0000 的 Sp、0.9700 的 MCC 和 0.9900 的 AUC 值。

本研究中使用的预测因子的整体框架包括四个主要步骤:数据收集、特征调查、模型训练与交叉验证、以及独立测试。在数据收集步骤中,来自六个不同物种的数据集被收集自已发布的研究和数据库,用于基序底物发现和特征调查。在特征调查阶段,采用了从序列中衍生的主要特征(NAC、DNC、TNC、ENAC和CKSNAP)以及一种核苷酸理化性质特征(NCP)。在模型训练与交叉验证阶段,应用了三种传统的机器学习方法(SVM、LR和RF)以及基于自适应学习网络(adaptive-m6A)的深度学习方法,并使用了5折交叉验证进行模型评估。最后,采用独立测试来评估所提方法的性能。
本研究中使用的预测因子的整体框架包括四个主要步骤:数据收集、特征调查、模型训练与交叉验证、以及独立测试。在数据收集步骤中,来自六个不同物种的数据集被收集自已发布的研究和数据库,用于基序底物发现和特征调查。在特征调查阶段,采用了从序列中衍生的主要特征(NAC、DNC、TNC、ENAC和CKSNAP)以及一种核苷酸理化性质特征(NCP)。在模型训练与交叉验证阶段,应用了三种传统的机器学习方法(SVM、LR和RF)以及基于自适应学习网络(adaptive-m6A)的深度学习方法,并使用了5折交叉验证进行模型评估。最后,采用独立测试来评估所提方法的性能。

模型亮点

基于深度学习的混合架构

adaptive-m6A使用了卷积神经网络(CNN)、双向长短期记忆网络(BLSTM)和注意力机制的结合。这些组件分别用于从RNA序列中提取局部和全局特征,并通过注意力机制对重要的序列特征赋予更高的权重,从而优化m6A位点的预测。

跨物种适应性

本研究中,adaptive-m6A不仅针对单一物种进行了优化,还进行跨物种验证,确保了该模型在多物种数据上的稳健性。通过在六个不同物种的数据集上进行训练和测试,证明该方法能够准确识别多个物种中的m6A位点,并且具有较好的泛化能力。

高效的特征工程

为了更好地捕捉RNA序列的特征,模型采用了多种特征编码方式,如NAC、DNC、TNC、ENAC和CKSNAP等。这些特征不仅从序列的物理化学性质出发,还考虑了序列中的位置特征,为深度学习模型提供了丰富的输入数据,提升了预测的准确性。

总结:AI助力表观转录研究

从最早的SVM模型到如今的CNN等各种深度学习模型,m6A-SNP预测的发展既是算法进步的缩影,也反映出RNA修饰研究日益精细的趋势。面对海量的变异信息,构建可靠的预测工具、理解变异的功能意义,正成为RNA生物学与疾病研究的重要方向。进一步结合Transformer架构、多模态学习(如结合RNA结构、蛋白结合数据)以及跨物种泛化能力的模型将成为热点。同时预测结果的可解释性、可视化也是现在推动临床转化的关键一步。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/182777
 
47 次点击