RNN基础教程


参考Coursera-Sequence Models
https://www.coursera.org/learn/nlp-sequence-models/notebook/X20PE/building-a-recurrent-neural-network-step-by-step

1. 普通神经网络的缺点

  • 对于不同的样本,输入输出的长度可能不同
  • 无法共享序列中不同位置的信息

2. RNN的基本结构与数学表达

输入层的维数是(nx,m,Tx)(n_x,m,T_x),其中nxn_x是每个训练样本的维数,例如输入词one-hot向量的大小,也即词典大小;mm是一个batch的大小;TxT_x是输入序列的长度。

输出层的维数是(ny,m,Ty)(n_y,m,T_y),其中nyn_y是输出预测向量的维数;mm是一个batch的大小;TyT_y是输出序列的长度。

我们先研究输入向量和输出向量相等,即nx=nyn_x=n_y的情况。
RNN基础教程

图2.1 RNN基本结构-输入输出维数相等

上下标说明:a5(2)[3]<4>a_5^{(2)[3]<4>}表示第2个训练样本,第3层,第4个时刻,**函数输出向量的第5维。
RNN基础教程

图2.2 RNN的一个基本单元

注意,输出y^\hat y是状态向量aa经过线性变换再经过softmax变换得到的。

at=tanh(Waxxt+Waaat1+ba)y^t=softmax(Wyaat+by)(2-1) \begin{aligned} a^{\langle t\rangle}&=tanh\left(W_{ax}x^{\langle t\rangle}+W_{aa}a^{\langle t-1\rangle}+b_a\right)\\ \hat y^{\langle t\rangle}&=softmax\left(W_{ya}a^{\langle t\rangle}+b_y\right)\\ \tag{2-1} \end{aligned}