文本生成:字符预测 RNN vs. 单词预测 RNN

Text generation: character prediction RNN vs. word prediction RNN

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

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

我是不是漏掉了什么?

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

Why wouldn't you do the same technique but using words instead of characters.

基于单词的模型与基于字符的模型一样常用。请参阅 this question 中的示例。但是两者之间有几个重要的区别:

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

对了,还有subword模型,有点中二。参见 T. Mikolov 的 "Subword language modeling with neural networks" at al.

Furthermore, is it possible to create a word prediction RNN but with somehow inputting words pretrained on word2vec, so that the RNN can understand their meaning?

是的,我上面提到的example就是这种模式。