参考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),其中nx是每个训练样本的维数,例如输入词one-hot向量的大小,也即词典大小;m是一个batch的大小;Tx是输入序列的长度。
输出层的维数是(ny,m,Ty),其中ny是输出预测向量的维数;m是一个batch的大小;Ty是输出序列的长度。
我们先研究输入向量和输出向量相等,即nx=ny的情况。
图2.1 RNN基本结构-输入输出维数相等
上下标说明:a5(2)[3]<4>表示第2个训练样本,第3层,第4个时刻,**函数输出向量的第5维。
图2.2 RNN的一个基本单元
注意,输出y^是状态向量a经过线性变换再经过softmax变换得到的。
a⟨t⟩y^⟨t⟩=tanh(Waxx⟨t⟩+Waaa⟨t−1⟩+ba)=softmax(Wyaa⟨t⟩+by)(2-1)