循环神经网络的应用
RNN 有很多应用。一个不错的应用是与自然语言处理(NLP)的合作。网上已经有很多人证明了 RNN,他们创造出了令人惊讶的模型,这些模型能表示一种语言模型。这些语言模型能采纳像莎士比亚的诗歌这样的大量输入,并在训练这些模型后生成它们自己的莎士比亚式的诗歌,而且这些诗歌很难与原作区分开来。
下面是莎士比亚式诗歌。
PANDARUS:
Alas, I think he shall be come approached and the day
When little srain would be attain'd into being never fed,
And who is but a chain and subjects of his death,
I should not sleep.
Second Senator:
They are away this miseries, produced upon my soul,
Breaking and strongly should be buried, when I perish
The earth and thoughts of many states.
DUKE VINCENTIO:
Well, your wit is in the care of side and that.
Second Lord:
They would be ruled after this chamber, and
my fair nues begun out of the fact, to be conveyed,
Whose noble souls I'll have the heart of the wars.
Clown:
Come, sir, I will make did behold your worship.
VIOLA:
I'll drink it.
这首诗完全是一个 RNN 写出来的。这里有一篇好文章更深入地介绍了 Char RNNs 。
这种特殊类型的 RNN 是在一个文本数据集中喂养的,它要逐字读取输入。与一次投喂一个词相比,这种方式让人惊讶的地方是这个网络能创造出它自己独特的词,这些词是用于训练的词汇中没有的。
一个 char RNN 的例子
这张从以上参考文章中摘取的图表展示了这个模型将会如何预测“Hello”这个词。这张图很好地将网络如何逐字采纳每个词并预测下一个字符的可能性可视化了。
另一个让人惊喜的 RNN 应用是机器翻译。这种方法很有趣,因为它需要同时训练两个 RNN。在这些网络中,输入的是成对的不同语言的句子。例如,你能给这个网络输入意思相同的一对英法两种语言的句子,其中英语是源语言,法语作为翻译语言。有了足够的训练后,你给这个网络一个英语句子,它就能把它翻译成法语!这个模型被称为序列到序列模型(Sequence to Sequences model )或者编码-解码模型(Encoder- Decoder model)。
英法翻译的例子
这张图表展示了信息流是如何通过编码-解码模型的,它用了一个词嵌入层( word embedding layer )来获取更好的词表征。一个词嵌入层通常是 GloVe 或者 Word 2 Vec 算法,能批量采纳词,并创建一个权重矩阵,让相似的词相互连接起来。用一个嵌入层通常会让你的 RNN 更加精确,因为它能更好的表征相似的词是什么样的,以便减少网络的推断。
结论
RNN 现在很流行。它们是自然语言处理中最有效的模型之一。这些模型会一直出现新的应用。