Answers:
这是我最近学到的。
显然,在谈论文本生成RNN时,我们是在谈论RNN语言模型。当询问基于单词/字符的文本生成RNN时,我们询问的是基于单词/字符的 RNN语言模型(LM)。
与基于字符的 LM 相比,基于单词的 LM显示更高的准确性和更低的计算成本。
由于字符级模型难以捕获更长的短期内存,因此性能下降的可能性不大,因为更长的短期内存(LSTM)循环网络在基于单词的输入中也能更好地工作。
这是因为基于字符的RNN LM需要更大的隐藏层才能成功地对长期依赖关系进行建模,这意味着更高的计算成本。
因此,我们可以说
单词级别和字符级别模型之间的根本区别之一是RNN在训练和测试过程中必须访问的参数数量。RNN的输入和输出层越小,则全连接的隐藏层就需要越大,这使得模型的训练成本很高。
但是,基于字符的 RNN LM可以更好地建模具有丰富形态的语言,例如Finish,Turkish,Russian等。如果可能的话,使用基于单词的 RNN LM很难为此类语言建模,因此不建议使用。
上面的分析尤其有意义,当您查看由基于字符的 RNN 生成的输出文本时:
基于简单字符的具有13个字符的窗口的基于最大字符的LM可以提供以下功能:
当她制造许多实心砖头时。他把它们堆成一堆,踩了她的脚。医生诊断他患有蝙蝠。女孩和她的男朋友请她出去。
当然,我挑选了这个例子(实际上,大多数ML LM例子看上去都比我到目前为止阅读过的任何RNN生成的文本都要好),并且这个小巧的ML LM是在更简单的语料库上训练的,但您会明白的:直接的条件概率会产生更好的结果文本要比基于char的 RNN 复杂得多。
基于字符的 RNN LM可以模拟多种语言的语法正确序列,需要更大的隐藏层并在计算上更昂贵,而基于单词的 RNN LM则可以更快地训练并生成更连贯的文本,但是即使这些生成的文本也没有实际意义。 。
关于语言建模十亿个单词的文章不错。以下是一些摘录:
字级模型比字符级模型具有重要优势。
以以下序列为例(引自Robert A. Heinlein的话):
早起者没有取得进展。它是由懒惰的人尝试找到更简单的方法来做的。
标记化后,单词级模型可能会将此序列视为包含22个标记。另一方面,角色级别将认为此序列包含102个标记。此较长的序列使字符模型的任务比单词模型的任务困难,因为它必须考虑更多标记和更多时间步长之间的依赖性。字符语言模型的另一个问题是,除了语法,语义等外,他们还需要学习拼写。在任何情况下,单词语言模型的错误率通常都低于字符模型。
与文字语言模型相比,字符的主要优势在于它们的词汇量很小。例如,GBW数据集将包含大约800个字符,而800,000个单词(修剪低频令牌后)将包含800个字符。在实践中,这意味着字符模型比单词模型需要更少的内存并具有更快的推理速度。另一个优点是它们不需要令牌化作为预处理步骤。
在我看来,基于字符的RNN的性能也会更好,但与基于单词的模型相比,它们需要更多的数据,而基于字符的模型需要训练更长的时间。我想说的更多是反复试验以及数据与可用计算能力之间的权衡。