在阅读有关文本生成的递归神经网络时,我注意到一些例子被逐字生成文本,而另一些例子却没有具体说明原因。
那么,预测每单词文本的RNN模型和预测每字符文本的RNN模型有什么区别呢?基于单词的RNN需要更大的语料库吗?基于字符的RNN推广得更好吗?也许唯一的区别是输入表示(一次热编码,字嵌入)?为文本生成选择哪一个?
发布于 2016-08-03 20:30:53
这是我最近学到的东西。
显然,在讨论文本生成RNN时,我们讨论的是RNN语言模型。当询问基于word/char的文本生成RNN时,我们询问的是基于word/char的RNN语言模型(LM)。
与基于字符的LMs相比,基于文字的LMs具有更高的精度和更低的计算成本.
不太可能的这种性能下降是由于字符级模型很难捕获较长的短期记忆,因此较长的短期记忆(LSTM)递归网络在基于字的输入下工作得更好
这是因为基于字符的RNN需要更大的隐藏层才能成功地建模长期依赖关系,这意味着更高的计算成本。
因此,我们可以说
其中之一基本区别,在两个字级,和字符级,模型在,参数个数,访,必须在训练和测试期间访问。RNN的输入输出层越小,对全连通隐层的需求就越大,使得模型的训练开销越大.
然而,基于字符的RNN LMs更好的建模语言,具有丰富的形态学,如Finish、土耳其语、俄语等。如果可能的话,使用基于单词的RNN对这些语言进行建模是困难的,也是不建议的。
以上分析是有意义的,尤其是当您查看由基于char的RNN生成的输出文本时:
带有13个字符窗口的简单基于char的极大似然LM提供了以下内容:
当她做了很多实心砖。他把它们堆成一堆,踩着她的脚。医生诊断他有蝙蝠。那个女孩和她男朋友约她出去。
当然,我精心挑选了这个例子(实际上,大多数ML LM示例比我迄今为止所读过的任何RNN生成的文本看起来都要好),并且这个微小的ML LM是在一个更简单的语料库上训练的,但是您可以理解:与基于字符的RNN相比,简单的条件概率生成更好的文本。
基于字符的RNN可以模拟多种语言语法上正确的序列,需要更大的隐藏层,计算成本更高,而基于词的RNN LMs训练速度更快,生成更多连贯的文本,但是即使生成的文本也远没有实际意义。
发布于 2018-02-03 09:29:07
关于语言建模10亿字有一篇很好的文章。以下是一些摘录:
与字符级模型相比,字级模型具有重要的优势.
以以下序列为例(引用Robert A. Heinlein的话):
进步不是由早起者取得的。它是由懒惰的人做的,他们试图找到更简单的方法去做某事。
在标记化之后,word级模型可能会将此序列视为包含22个令牌。另一方面,字符级别将将此序列视为包含102个令牌。这个较长的序列使得字符模型的任务比单词模型更困难,因为它必须考虑到更多标记之间的依赖关系,而不是时间步长。字符语言模型的另一个问题是,除了语法、语义等,他们还需要学习拼写。无论如何,单词语言模型通常比字符模型有更低的错误。
与单词语言模型相比,字符的主要优点是它们的词汇量很小。例如,GBW数据集将包含大约800个字符,而80万字(在修剪低频标记之后)。在实践中,这意味着字符模型将需要较少的内存和具有更快的推理比他们的词对应。另一个优点是,它们不需要将令牌化作为预处理步骤。
发布于 2018-02-03 16:08:03
在我看来,基于字符的RNN也会表现得更好,但是它们需要比基于文字的模型和基于字符的模型需要更长时间的训练更多的数据。我想说的是,这更多的是一种尝试和错误,以及数据和计算能力之间的权衡。
https://datascience.stackexchange.com/questions/13138
复制相似问题