递归神经网络(RNN,Recurrent Neural Networks)在自然语言处理中有着非常重要的应用。本文旨在对RNN做简单介绍,帮助入门小白初识RNN。
1 传统神经网络在NLP应用的局限性
传统神经网络的输入与输入之间是独立的,彼此不产生任何联系。但是在自然语言处理中,我们得到的结果是和之前输入的值有关系的。例如,我们说一句话:“我出生在中国,所以我说汉语。”我们可以看到,这句话前后是有联系的,网络的输出值是和之前的输入值相关的,在这种情况下,传统神经网络显然是不适用的。
2 RNN
上图描述了RNN的基本结构。当输入数据与权重参数W1组合之后到达隐藏层,然后和W2结合形成输出数据,同时隐藏层的中间特征数据做了递归操作,也就是隐藏层数据和W3结合返回到自身,保留了中间信息。当下一次输入数据时,保留的中间信息就会传给下一次的流程。
上图时RNN的一个展开结构。Xt表示要输入的一个语言序列,X0、X1、X2…表示Xt的具体组成。当输入X0时,中间的记忆单元A除了向输出层传递数据外,还将存储的中间信息传递给下一个记忆单元。第二个记忆单元A除了接受X1的输入外,还需要接收第一个记忆单元A传递的中间信息…依次类推。总结一下,就是每一个记忆单元有两个输入,一个是输入层传递的数据,一个是上一个记忆单元传递的中间数据。
RNN的反向传播如下图所示
3 RNN的局限
递归神经网络参数太多,信息量冗余(因为最后的预测可能只 依赖它最近的词,但我们输入的时候是所有的词,所以信息量冗余)、梯度消失或者爆炸。
相关文章: