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

Jam*_*man 4 nlp machine-learning deep-learning recurrent-neural-network rnn

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

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

我错过了什么吗?

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

Max*_*xim 7

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

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

  • 基于字符的模型更灵活,可以学习很少使用的单词和标点符号。而安德烈Karpathy的帖子展示了如何有效的这种模式就可以了。但这也是一个缺点,因为这个模型有时会产生完全的废话。
  • 基于字符的模型的词汇量要小得多,这使得训练更容易、更快。由于 one-hot 编码和 softmax 损失工作完美,因此无需使用嵌入向量和特制损失函数(负采样、NCE 等)使模型复杂化
  • 基于词的模型无法生成词表外 (OOV) 词,它们更复杂且需要资源。但是他们可以学习语法和语法正确的句子,并且比基于字符的句子更健壮。

顺便说一句,还有子词模型,有点中间。请参阅T. Mikolov 等人的“使用神经网络进行子词语言建模”

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

是的,我上面提到的例子正是关于这种模型的。