我一直在研究使用RNN的文本生成,似乎常见的技术是逐个字符地输入文本,并让RNN预测下一个字符 .
为什么不使用相同的技术,而是使用单词而不是字符 . 对我来说,这似乎是一种更好的技术,因为RNN不会进行任何拼写错误,而且训练速度会更快 .
我错过了什么吗?
此外,是否可以创建单词预测RNN,但以某种方式输入在word2vec上预训练的单词,以便RNN能够理解它们的含义?
为什么不使用相同的技术,而是使用单词而不是字符 .
基于字的模型的使用频率与基于字符的模型一样频繁 . 请参阅this question中的示例 . 但两者之间有几个重要的区别:
基于字符的模型更灵活,可以学习很少使用的单词和标点符号 . 并且Andrej Karpathy's post显示了该模型的有效性 . 但这也是一个缺点,因为这种模式有时会产生完全废话 .
基于角色的模型具有更小的词汇量,这使得训练更容易,更快捷 . 由于单热编码和softmax损失工作正常,因此无需使用嵌入向量和特制的损耗函数使模型复杂化(负采样,NCE,......)
基于单词的模型不能生成词汇表外(OOV)单词,它们更复杂,资源要求更高 . 但是他们可以学习语法和语法上正确的句子,并且比基于字符的句子更强大 .
顺便说一下,还有一些中间的子词模型 . 见T. Mikolov等人的"Subword language modeling with neural networks" .
是的,我上面提到的example正好与这种模型有关 .
1 回答
基于字的模型的使用频率与基于字符的模型一样频繁 . 请参阅this question中的示例 . 但两者之间有几个重要的区别:
基于字符的模型更灵活,可以学习很少使用的单词和标点符号 . 并且Andrej Karpathy's post显示了该模型的有效性 . 但这也是一个缺点,因为这种模式有时会产生完全废话 .
基于角色的模型具有更小的词汇量,这使得训练更容易,更快捷 . 由于单热编码和softmax损失工作正常,因此无需使用嵌入向量和特制的损耗函数使模型复杂化(负采样,NCE,......)
基于单词的模型不能生成词汇表外(OOV)单词,它们更复杂,资源要求更高 . 但是他们可以学习语法和语法上正确的句子,并且比基于字符的句子更强大 .
顺便说一下,还有一些中间的子词模型 . 见T. Mikolov等人的"Subword language modeling with neural networks" .
是的,我上面提到的example正好与这种模型有关 .