循环神经网络(recurrent neural network)或RNN是一类用于处理序列数据的神经网络。就像卷积网络是专门用于处理网格化数据(如一个图像)的神经网络,循环神经网络是专门用于处理序列x1,... xt 的神经网络。本文将通过语言模型中RNN的应用来浅谈自己对RNN的理解。
图1 RNN展开图
上图表示一个RNN的展开图,其中,X为输入,隐层是S,输出是O。RNN输入到隐藏的连接由权重矩阵U 参数化,隐藏到隐藏的循环连接由权重矩阵W 参数化以及隐藏到输出的连接由权重矩阵V 参数化。
如果输入序列是一个句子,那么xi对应的就是输入的每个词,如对于“我们是中国人”这句话,输入将会是:x1="我们",x2=“是”,x3=“中国人”;不过一般都将这些词处理,变为一个固定维度的词向量输入。我们在看看只有一个输出的RNN
图2 单一输出的RNN
如果xt+1是句子的最后一个词,那么