本文将从以下两个方面介绍:
RNN是什么?
循环神经网络(Recurrent Neural Network, RNN),RNN常用来处理序列式问题,以序列数据为输入来进行建模的深度学习模型,RNN是NLP中最常用的模型。双向循环神经网络(Bidirectional RNN, Bi-RNN)和长短期记忆网络(Long Short-Term Memory networks,LSTM)是RNN常见的的循环神经网络。
为什么需要RNN?
打个比方,当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列; 当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。
单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。
输入:
我 吃 苹果 (已经分词好的句子)
输出:
我/nn 吃/v 苹果/nn(词性标注好的句子)
很明显,一个句子中,前一个单词其实对于当前单词的词性预测是有很大影响的,比如预测苹果的时候,由于前面的吃是一个动词,那么很显然苹果作为名词的概率就会远大于动词的概率,因为动词后面接名词很常见,而动词后面接动词很少见。
所以为了解决一些这样类似的问题,能够更好的处理序列的信息,RNN就诞生了。
常用的RNN网络结构有哪些?
动画展示的是在某个时刻(indexed by t)RNN cell 内部的处理,示例中input size=3,hidden units =2,batch size=1。