了解长短期记忆在符号序列分类中的作用

数据挖掘 神经网络 nlp lstm 文本分类 生物信息学
2022-03-11 21:21:16

我想使用 LSTM 神经网络根据宿主物种对蛋白质序列进行分类。例如,我有这些字母序列(玩具示例,只是为了理解):

  • MNTQILVFIACVLIE AKGDKICL属于人类
  • AKGDKICL MNTQILVFIACVLIE 属于人类
  • MNTQ AKGDKICL ILVFIACVLIE 属于狗

序列仅根据子序列AKGDKICL的位置不同,我的网络应该学会识别这一点。LSTM 网络能做到这一点吗?

我试图专注于长期短期记忆的含义。递归神经网络的介绍和支持它们的数学

循环神经网络 (RNN) 是一种特殊类型的人工神经网络,适用于时间序列数据或涉及序列的数据。普通的前馈神经网络仅适用于相互独立的数据点。但是,如果我们有一个序列中的数据,使得一个数据点依赖于前一个数据点,我们需要修改神经网络以合并这些数据点之间的依赖关系。RNN 具有“记忆”的概念,可帮助它们存储先前输入的状态或信息,以生成序列的下一个输出。

此外,来自Python 中的递归神经网络示例

循环神经网络 (RNN) 处理序列——无论是每日股票价格、句子还是传感器测量——一次处理一个元素,同时保留序列中先前出现的内容的记忆(称为状态)循环意味着当前时间步的输出成为下一个时间步的输入。在序列的每个元素处,模型不仅考虑当前输入,还考虑它对前面元素的记忆。这种记忆允许网络学习序列中的长期依赖关系,这意味着它可以在进行预测时考虑整个上下文,无论是句子中的下一个单词,还是情感分类,或下一次温度测量。RNN 旨在模仿人类处理序列的方式:我们在形成响应时考虑整个句子而不是单词本身。

然后,与受记忆衰减影响的简单 RNN 不同,LSTM 具有在较长时间内存储事件(长期记忆)的概念。

因此,在我的简单练习中,这被如下所示:如果我将每个字母视为标记,使用 keras 标记器,我将为每个序列获取一个整数数组,例如:

[7, 8, 9, 10, 1, 2, 3, 11, 1, 4, 5, 3, 2, 1, 12, 4, 6, 13, 14, 6, 1, 5, 2]

一旦我将这些符号序列转换为向量,我可以将它们提供给 LSTM 网络,该网络能够捕获这些整数(符号)的顺序,将其保存在内存中并在必须对下一个序列进行分类时考虑它?

例如,如果我给它上面报道的几个序列,他是否能够识别出如果子序列AKGDKICL位于序列的末尾或开头,则它属于人类,而如果它位于中间,它属于狗吗?这就是Long Short-Term Memory的意思吗?如果我选择序列的每个符号作为标记,这是否会获得?

1个回答

每个问题的解决都始于提出正确的问题,然后寻找合适的解决方案。

根据我对您要解决的问题的理解,这是一个序列分类问题,是的,RNN-LSTM您可以遵循的方法之一。我不是蛋白质测序方面的专家,所以我只是想提供一个研究方向。

应用RNN-LSTM需要考虑两个重要因素

  1. 标记化,即你想如何分割你的蛋白质序列。一种方法是将序列分解为单个字符,在我看来这会为算法学习模式产生不必要的噪音。在这里更重要的是基于领域知识的选择。从您的示例看来,您似乎对子序列有先验知识,这应该是创建标记和限制此问题词汇量的方法。

  2. 嵌入,即标记化后蛋白质序列的向量表示。如果是英语,你可以使用像 GloVe 这样的预训练词嵌入,但事实并非如此。我建议您搜索任何现有的基于蛋白质子序列的嵌入来为您的用例创建向量表示。如果没有,那么您可以继续使用令牌矢量化的通用框架之一。