处理时间序列数据(例如文本)中的填充的最佳方法

数据挖掘 神经网络 深度学习 时间序列 rnn
2022-02-27 10:15:53

我有一堆文档,其中包含我想用来训练神经网络的顺序数据。它是一组大约 2-3000 个字符长的字母。我的任务是,给定这样一封信的摘录,我希望我的网络以与该信相同的样式输出合理的文本。

将我的数据呈现给神经网络的最佳方式是什么?

我在教程中看到的一种方法是将所有字母连接成一个长文本序列,并让网络在此基础上进行训练。但是随后一些训练序列将包含来自多个字母的文本。假设一个字母长 500 个字符,训练序列长度为 150,那么该字母中的最后一个训练序列将包含该字母的 50 个字符和下一个字母的 100 个字符。我怀疑这会混淆网络。

另一个想法是在每个字母之间插入一个字母结束标记,然后将它们连接起来。但同样,一些训练序列将包含字母标记的结尾,并且对它们的训练可能也会混淆网络。

第三个想法是在每个字母之间插入一个非常长的填充标记序列,以便没有真正的训练序列包含来自两个不同字母的文本。但这似乎非常浪费。例如,如果我的训练序列长 256 个字符,我将不得不在每个字母之间插入 256 个填充标记。

1个回答

时间序列分析是指我们必须根据时间相关输入分析结果的问题类型。时间序列数据基本上是一个数据序列,因此时间序列问题通常被称为序列问题。循环神经网络 (RNN) 已被证明可以有效地解决序列问题。特别是,作为 RNN 的一种变体的长短期记忆网络(LSTM)目前正被用于各种领域来解决序列问题。

如果我们试图获得更多的特征,最好利用词的分布式表示的思想,其中每个输入由许多特征表示,每个特征都涉及许多可能的输入。在分布式语义中,词嵌入模型用于从 one-hot 向量空间映射到比传统词袋模型低得多的维度的连续向量空间。我们可以学习字符之间的依赖关系以及序列中字符的条件概率,从而可以反过来生成全新的原始字符序列。

从这样的角度来看,Word2Vec 词嵌入模型将是一个不错的选择。使用词嵌入模型将词转换为向量可能是一个好主意。然后可以将句子中的单词序列作为输入提供给 LSTM,以学习单词之间的长距离上下文依赖关系。

通常,序列问题可以大致分为一对一、多对一、一对多和多对多类型。根据描述,似乎需要将许多文本字母序列分析为不同的许多文本序列本身。在这些序列到序列分析问题中,您可以选择单个特征或多个特征。

长短期记忆 (LSTM) 神经网络通常适用于序列预测和序列分类问题。如果我们使用 LSTM 来解决这个问题,我们需要对文本序列进行相应的建模。首先,我们需要通过将每个文本转换为整数序列或向量来对文本进行向量化。将数据集限制在最高字数限制是很重要的。此外,我们需要为每个文本设置一个最大序列长度。

然后我们可以标记应用这个模型的文本。我们可以截断和填充输入序列,使它们都具有相同的长度以进行建模。就内容而言,序列的长度不会相同,但需要构造相同长度的向量。