如何使用注意力机制对 RNN 建模以进行非文本分类?

Posted

技术标签:

【中文标题】如何使用注意力机制对 RNN 建模以进行非文本分类?【英文标题】:How to model RNN with Attention Mechanism for Non-Text Classification? 【发布时间】:2019-06-11 18:43:31 【问题描述】:

带有注意机制的循环神经网络 (RNN) 通常用于机器翻译和自然语言处理。在 Python 中,带有注意机制的 RNN 的实现在机器翻译中非常丰富(例如https://talbaumel.github.io/blog/attention/,但是我想做的是在时间数据文件(不是任何基于文本/句子的数据)上使用带有注意机制的 RNN .

我有一个尺寸为 21392 x 1972 的 CSV 文件,我已使用 Pandas 将其转换为 Dataframe。第一列是日期时间格式,最后一列由我想识别的“Class1”、“Class2”、“Class3”等目标类组成。所以总共有 21392 行(10 分钟时间步长的数据实例)和 1971 个特征。最后(第 1972 列)是标签列,共有 14 个不同的类。

我已经查看了 Keras (https://medium.com/datalogue/attention-in-keras-1892773a4f22) 和 Tensorflow (Visualizing attention activation in Tensorflow) 上的可用实现文档,但它们似乎都没有做我想做的事情。我知道这是一种不寻常的方法,但我想尝试一下并使用注意力机制,因为我的许多特征在数据中可能是多余的。

import pandas as pd
mydataset = pd.read_csv('final_merged_data.csv')

从现有文献中可以看出,注意力机制在耦合到 RNN 时效果很好。我无法找到任何这样的带有注意力机制的 RNN 实现,它也可以提供可视化。我也无法理解如何将我的数据转换为序列(或列表列表),以便之后我可以将它与 One Hot Encoding 一起使用,以使用带有注意力的 RNN。我是使用 Python 以及 Keras/Tensorflow 的新手,并且对将我的数据/类型转换为能够模拟序列分类问题的形式的过程感到非常困惑。我的问题基本上是多类分类,就像通常使用机器学习分类器来预测标签一样,但使用带有注意力的 RNN。在这方面的任何帮助将不胜感激。干杯!

【问题讨论】:

解决了什么问题? 【参考方案1】:

请参考这篇论文,了解如何使用带有注意力的序列到序列模型进行时间序列分类。

https://www.computer.org/csdl/proceedings/icdmw/2016/5910/00/07836709.pdf

【讨论】:

以上是关于如何使用注意力机制对 RNN 建模以进行非文本分类?的主要内容,如果未能解决你的问题,请参考以下文章

怎么把这个RNN文本分类代码改成文本生成?

使用RNN对文本进行分类实践电影评论

多图+公式全面解析RNN,LSTM,Seq2Seq,Attention注意力机制

了解RNN模型LSTM模型GRU模型,及掌握注意力机制

Python深度学习12——Keras实现注意力机制(self-attention)中文的文本情感分类(详细注释)

TensorFlow:如何使用 RNN 对二进制序列进行分类?