本讲对Recurent Neural Networks (Rnn) 的知识进行复习。

1. 背景

RNN 可以用于对序列化数据完成翻译,语音识别,命名实体识别,DNA序列分析,情感分析任务。Rnn 可以解决FCN所面临的序列问题。例如,有一个序列样本,‘我’,‘爱’和‘NLP’分别是x<1>,x<2>和x<3>。标签Y为 1/0/1(实体/不是实体/实体)。首先,句子长度不定,结构问题导致特征维度无法确定;其次,没能捕捉句子信息。比如,在知道‘我’和‘爱’分别是主语和谓语时,则很快知道后面应当是名词。因为句子含义依赖于上下文。

基于此,我们引入Rnn。

2. 简单 Rnn 结构

首先,Normal Neural Network 的 隐含层表达式如下:

Simple Recurrent Neural Network 的 隐含层表达式如下:

可见,rnn 下一时刻的输入包含 1)前一时刻的输出;2)当前时刻输入。

因此,我们可以绘制出 rnn 的网络结构:

⚠️ 在每一个t上,共享了相同的参数 Wx(Wa会变)。参数一致,有助于学习方法表达词之间联系。

Standard Recurrent Neural Networks 每一时刻的 output(预测值)为:

由于人类不会完全复述前天做的事情,从类人的角度考虑,rnn 不会将 y_hat 传给下一时刻的隐状态,而是将上一时刻的隐状态传下去。因为a包含了前面所有的x的信息。

3. 前向传播 和 后向传播

以1.背景中的命名实体识别为例,二分类问题采用cross entropy为loss function,并且用每一个时刻的y_hat计算一次loss,最终求和为该学习方法的前向传播loss function。同时,这个loss function应当是在每个序列的最后一个词处,完成计算。因为,每个词的预测都依赖于前文。若放在句子中间,则相当于只考虑半句positive or negative。