文本生成:字符预测RNN与字预测RNN

时间:2018-01-10 23:44:37

标签: machine-learning nlp deep-learning recurrent-neural-network rnn

我一直在研究使用RNN生成文本,似乎常见的技术是逐字符输入文本,并让RNN预测下一个字符。

为什么你不会使用相同的技术,而是使用单词而不是字符。 这对我来说似乎是一种更好的技术,因为RNN不会进行任何拼写错误,而且训练速度会更快。

我错过了什么吗?

此外,是否可以创建单词预测RNN,但以某种方式输入在word2vec上预训练的单词,以便RNN能够理解它们的含义?

1 个答案:

答案 0 :(得分:4)

  

为什么不使用相同的技术,而是使用单词而不是字符。

基于字的模型的使用频率与基于字符的模型一样频繁。请参阅this question中的示例。但两者之间存在一些重要的差异:

  • 基于字符的模型更灵活,可以学习很少使用的单词和标点符号。 Andrej Karpathy's post显示了这个模型的有效性。但这也是一个缺点,因为这种模式有时会产生完全废话。
  • 基于角色的模型具有更小的词汇量,这使得训练更容易,更快捷。由于单热编码和softmax损失工作正常,因此无需使用嵌入向量和特制的损失函数(负采样,NCE,......)使模型复杂化。
  • 基于单词的模型不能生成词汇表外(OOV)单词,它们更复杂,资源要求更高。但是他们可以学习语法和语法上正确的句子,并且比基于字符的句子更健壮。

顺便说一下,还有一些中间的子词模型。请参阅T. Mikolov撰写的"Subword language modeling with neural networks"

  

此外,是否可以创建一个单词预测RNN,但以某种方式输入在word2vec上预先训练的单词,以便RNN可以理解它们的含义?

是的,我上面提到的example正好与这种模型有关。