深度学习笔记之循环神经网络——循环神经网络的反向传播过程
引言
上一节介绍了 Softmax \text{Softmax} Softmax回归的反向传播过程。本节将介绍循环神经网络的反向传播过程。
回顾:循环神经网络的前馈计算过程
场景构建
已知某特定时刻的循环神经网络神经元表示如下:
其中:
-
x t x_t xt表示数据在 t t t时刻的输入,其维度格式为 x t ∈ R n x × m × 1 x_t \in \mathbb R^{n_x \times m \times 1} xt∈Rnx×m×1。其中 n x n_x nx表示当前时刻输入向量的维数; m m m表示样本数量; 1 1 1则表示当前所在时刻 t t t。
输入向量可能是‘词向量’,或者是其他描述序列单位的向量。而
n x n_x nx描述该向量的大小。
- m m m
可表示为当前
Batch \text{Batch} Batch内的样本数量。
对应完整序列数据
X \mathcal X X可表示为如下形式。其中
T \mathcal T T表示输入时刻的具体数量。
X = ( x 1 , x 2 , ⋯ , x t , x t + 1 , ⋯ , x T ) T ∈ R n x × m × T \mathcal X = (x_1,x_2,\cdots,x_t,x_{t+1},\cdots,x_{\mathcal T})^T \in \mathbb R^{n_x \times m \times \mathcal T} X=(x1,x2,⋯,xt,xt+1,⋯,xT)T∈Rnx×m×T
-
h t h_t ht表示 t t t时刻的序列信息,也是要传递到 t + 1 t+1 t+1时刻的值;它的维度格式表示为:
这里
n h n_h nh表示隐藏状态的维数大小;它由参数
W H ⇒ H , W H ⇒ X \mathcal W_{\mathcal H \Rightarrow \mathcal H},\mathcal W_{\mathcal H \Rightarrow \mathcal X} WH⇒H,WH⇒X决定;
h t + 1 ∈ R n h × m × 1 h_{t+1} \in \mathbb R^{n_h \times m \times 1} ht+1∈Rnh×m×1同理。
h t ∈ R n h × m × 1 h_t \in \mathbb R^{n_h \times m \times 1} ht∈Rnh×m×1
对应的隐藏层矩阵
H ∈ R n h × m × T \mathcal H \in \mathbb R^{n_h \times m \times \mathcal T} H∈Rnh×m×T。因为每一进入一个输入,都会得到一个相应更长的序列信息。因此
X , H \mathcal X,\mathcal H X,H共用同一个
T \mathcal T T。 -
O t + 1 \mathcal O_{t+1} Ot+1表示数据传入后计算产生的预测值,它的维度格式表示为:
其中
n O n_{\mathcal O} nO表示预测输出结果的长度。
O t + 1 ∈ R n O × m × 1 \mathcal O_{t+1} \in \mathbb R^{n_{\mathcal O} \times m \times \mathcal 1} Ot+1∈RnO×m×1
同理,对应的输出矩阵
O ∈ R n O × m × T O \mathcal O \in \mathbb R^{n_{\mathcal O} \times m \times \mathcal T_{\mathcal O}} O∈RnO×m×TO,这里的
T O \mathcal T_{\mathcal O} TO表示输出时刻的数量。需要注意的是,
T O \mathcal T_{\mathcal O} TO和
T \mathcal T T是两个概念。输出的序列长度和输入长度无关,它与权重参数
W H ⇒ O \mathcal W_{\mathcal H \Rightarrow \mathcal O} WH⇒O相关。
前馈计算描述
为了方便描述,将上述过程中的序列下标表示为序列上标:
x t , h t , h t + 1 , O t + 1 ⇒ x ( t ) , h ( t ) , h ( t + 1 ) , O ( t + 1 ) x_t,h_t,h_{t+1},\mathcal O_{t+1} \Rightarrow x^{(t)},h^{(t)},h^{(t+1)},\mathcal O^{(t+1)} xt,ht,ht+1,Ot+1⇒x(t),h(t),h(t+1),O(t+1)
关于第 t t t时刻神经元的前馈计算过程表示如下:
需要注意的是,这里的
h ( t + 1 ) , O ( t + 1 ) h^{(t+1)},\mathcal O^{(t+1)} h(t+1),O(t+1)表示对下一时刻信息的预测,而这个预测过程是在
t t t时刻完成的。
- 序列信息 h ( t + 1 ) h^{(t+1)} h(t+1)的计算过程:
{ Z 1 ( t ) = W h ( t ) ⇒ h ( t + 1 ) ⋅ h ( t ) + W x ( t ) ⇒ h ( t + 1 ) ⋅ x ( t ) + b h ( t + 1 ) h ( t + 1 ) = Tanh ( Z 1 ( t ) ) \begin{cases} \mathcal Z_1^{(t)} = \mathcal W_{h^{(t)} \Rightarrow h^{(t+1)}}\cdot h^{(t)} + \mathcal W_{x^{(t)} \Rightarrow h^{(t+1)}} \cdot x^{(t)} + b_{h^{(t+1)}} \\ \quad \\ h^{(t+1)} = \text{Tanh}(\mathcal Z_1^{(t)}) \end{cases} ⎩ ⎨ ⎧Z1(t)=Wh(t)⇒h(t+1)⋅h(t)+Wx(t)⇒h(t+1)⋅x(t)+bh(t+1)h(t+1)=Tanh(Z1(t)) - 预测值 O ( t + 1 ) \mathcal O^{(t+1)} O(t+1)的计算过程:
关于后验概率
P m o d e l [ O ( t + 1 ) ∣ x ( t ) , h ( t + 1 ) ] \mathcal P_{model}[\mathcal O^{(t+1)} \mid x^{(t)},h^{(t+1)}] Pmodel[O(t+1)∣x(t),h(t+1)]本质上是一个分类任务——从该分布中选择概率最高的结果作为
x ( t + 1 ) x^{(t+1)} x(t+1)的结果,这里使用
Softmax \text{Softmax} Softmax函数对各结果对应的概率分布信息进行评估。
{ Z 2 ( t + 1 ) = W h ( t + 1 ) ⇒ O ( t + 1 ) ⋅ h ( t + 1 ) + b O ( t + 1 ) O ( t + 1 ) = Softmax ( Z 2 ( t + 1 ) ) = exp { Z 2 ( t + 1 ) } ∑ i = 1 n O exp { Z 2 ; i ( t + 1 ) } \begin{cases} \mathcal Z_2^{(t+1)} = \mathcal W_{h^{(t+1)} \Rightarrow \mathcal O^{(t+1)}} \cdot h^{(t+1)} + b_{\mathcal O^{(t+1)}} \\ \quad \\ \begin{aligned} \mathcal O^{(t+1)} & = \text{Softmax}(\mathcal Z_2^{(t+1)}) \\ & = \frac{\exp \left\{\mathcal Z_2^{(t+1)}\right\}}{\sum_{i=1}^{n_{\mathcal O}}\exp \left\{\mathcal Z_{2;i}^{(t+1)}\right\}} \\ \end{aligned} \end{cases} ⎩ ⎨ ⎧Z2(t+1)=Wh(t+1)⇒O(t+1)⋅h(t+1)+bO(t+1)O(t+1)=Softmax(Z2(t+1))=∑i=1nOexp{ Z2;i(t+1)}exp{ Z2(t+1)}
其中,公式中出现的各参数维度格式表示如下:
Z 1 : { W h ( t ) ⇒ h ( t + 1 ) ⇒ W H ⇒ H ∈ R n h × n h W x ( t ) ⇒ h ( t + 1 ) ⇒ W X ⇒ H