基于单词和基于字符的文本生成 RNN 有什么区别?

数据挖掘 机器学习 神经网络 nlp rnn
2021-10-14 00:47:06

在阅读有关使用循环神经网络生成文本的信息时,我注意到一些示例被实现为逐字生成文本,而另一些示例则逐字符生成文本,而没有实际说明原因。

那么,基于每个单词预测文本的RNN 模型和基于每个字符预测文本的RNN 模型有什么区别基于词的 RNN 需要更大的语料库吗?基于 char 的 RNN 泛化效果更好吗?也许唯一的区别是输入表示(one-hot encoding,词嵌入)?选择哪些文本生成?

3个回答

这是我最近学到的。

显然,在谈论文本生成 RNN 时,我们正在谈论 RNN 语言模型。当询问基于单词/字符的文本生成 RNN 时,我们正在询问基于单词/字符的RNN 语言模型 (LM)。

与基于字符的LM相比,基于字的LM 显示出更高的准确性更低的计算成本

由于字符级模型难以捕获较长的短期记忆,因此这种性能下降不太可能,因为长期短期记忆 (LSTM) 循环网络在基于单词的输入中工作得更好。

这是因为基于 char 的 RNN LM 需要更大的隐藏层才能成功建模长期依赖关系,这意味着更高的计算成本。

因此,我们可以说

单词级别字符级别模型之间的根本区别之一在于RNN 在训练和测试期间必须访问的参数数量。RNN的输入输出层越小,需要全连接的隐藏层越大,这使得模型的训练成本很高。

然而,基于字符的RNN LM 可以更好地建模具有丰富形态的语言,例如芬兰语、土耳其语、俄语等。如果可能的话,使用基于单词的RNN LM 来建模这些语言是很困难的,因此不建议这样做。

上述分析很有意义,尤其是当您查看由基于字符的RNN 生成的输出文本时:

令投资者感到惊讶的是不会筹集资金。我不是公司跟的时候都快有兴趣了,不用下车一样的程序员。

虽然具有 13 个字符窗口的简单的基于字符的最大似然 LM提供了这一点:

当她制作了许多实心砖时。他把它们堆成一堆,跺着她的脚。医生诊断他患有蝙蝠。女孩和她的男朋友约她出去。

当然,我挑选了这个例子(实际上,大多数 ML LM 例子看起来比我迄今为止读过的任何 RNN 生成的文本都好),这个微小的 ML LM 是在一个更简单的语料库上训练的,但你明白了:直接的条件概率生成更好文本比基于字符的RNN复杂得多。

基于字符的RNN LM 可以为多种语言模仿语法正确的序列,需要更大的隐藏层并且计算成本更高,而基于单词的RNN LM 训练更快并生成更连贯的文本,但即使是这些生成的文本也远没有实际意义.

有一篇关于语言建模十亿字的好文章。以下是一些摘录:

字级模型比字符级模型具有重要优势。
以以下序列为例(引自 Robert A. Heinlein):

早起的人并没有取得进步。它是由懒惰的人制作的,他们试图找到更简单的方法来做某事。

标记化之后,词级模型可能会将此序列视为包含 22 个标记。另一方面,字符级会将此序列视为包含 102 个标记。这个更长的序列使得字符模型的任务比单词模型更难,因为它必须考虑更多标记之间在更多时间步长上的依赖关系。字符语言模型的另一个问题是除了语法、语义等之外,它们还需要学习拼写。无论如何,单词语言模型通常比字符模型具有更低的错误

字符相对于单词语言模型的主要优势在于它们的词汇量非常小。例如,GBW 数据集将包含大约 800 个字符,而 800,000 个单词(在修剪低频标记之后)。在实践中,这意味着字符模型将需要更少的内存并且比它们的对应词具有更快的推理速度。另一个优点是它们不需要标记化作为预处理步骤。

在我看来,基于字符的 RNN 也会表现更好,但它们需要的数据比基于单词的模型和基于字符的模型需要的训练时间要长得多。我会说这更像是一次试验和错误,以及数据和可用计算能力之间的权衡。