2.2.1 RNN
我们使用下标表示输入时序序列的时序位置,即不同时刻,用
表示在
时刻的系统隐层状态(Hidden State)向量,用
表示
时刻的输入。
时刻的隐层状态向量
依赖于当前词
和前一时刻的隐层状态向量
:

(2.15)
其中,是一个非线性映射函数。一种通常的做法是计算
的线性变换后经过一个非线性激活函数,例如:

(2.16)
其中,是可学习的参数矩阵,激活函数
独立地应用到其输入的每个元素。
RNN的计算过程如图2-26所示,图中左边是输入,右边是输出
。计算从左向右进行,整个运算包括3步:输入
并分别乘以
,两者结果相加,以及最后经过
非线性变换输出。

图2-26 RNN的计算过程
我们可以认为存储了网络中的记忆(Memory),RNN 学习的目标是使得
记录了在
时刻之前(包含
时刻)的输入信息
。在新词
输入到网络之后,之前的隐状态向量
就转换为和当前输入
有关的
。