1 门控循环单元(GRU)

门控循环单元引入了对因状态的门控,意味着有专门的机制来控制新状态更新与重置的时机

重置门和更新门

重置门($\mathbf{R}_t$)和更新门($\mathbf{Z}_t$)的结构如下:

其中$\mathbf{W}_{xr}, \mathbf{W}_{xz} \in \mathbb{R}^{d \times h}$和$\mathbf{W}_{hr}, \mathbf{W}_{hz} \in \mathbb{R}^{h \times h}$是权重参数,$\mathbf{b}_r, \mathbf{b}_z \in \mathbb{R}^{1 \times h}$是偏置参数。

候选隐状态

时间步$t$的候选隐状态$\tilde{\mathbf{H}}_t \in \mathbb{R}^{n \times h}$:

其中$\mathbf{W}_{xh} \in \mathbb{R}^{d \times h}$和$\mathbf{W}_{hh} \in \mathbb{R}^{h \times h}$是权重参数,$\mathbf{b}_h \in \mathbb{R}^{1 \times h}$是偏置项,符号$\odot$是Hadamard积(按元素乘积)运算符。在这里,我们使用tanh非线性激活函数来确保候选隐状态中的值保持在区间(-1, 1)中。

隐状态

隐状态如下

gru-3

总结

更新门: 决定了多少过去的信息应该被传递到未来。

重置门: 决定了如何将新的输入信息与先前的记忆结合。

2 长短期记忆网络(LSTM)

LSTM 结构如下:

lstm-3

假设有$h$个隐藏单元,批量大小为$n$,输入数为$d$。因此,输入为$\mathbf{X}_t \in \mathbb{R}^{n \times d}$,前一时间步的隐状态为$\mathbf{H}_{t-1} \in \mathbb{R}^{n \times h}$。相应地,时间步t的门被定义如下:输入门是$\mathbf{I}_t \in \mathbb{R}^{n \times h}$,遗忘门是$\mathbf{F}_t \in \mathbb{R}^{n \times h}$,输出门是$\mathbf{O}_t \in \mathbb{R}^{n \times h}$。它们的计算方法如下:

其中$\mathbf{W}_{xi}, \mathbf{W}_{xf}, \mathbf{W}_{xo} \in \mathbb{R}^{d \times h}$和$\mathbf{W}_{hi}$, $\mathbf{W}_{hf}$, $\mathbf{W}_{ho} \in \mathbb{R}^{h \times h}$是权重参数,$\mathbf{b}_i,$ $\mathbf{b}_f, \mathbf{b}_o \in \mathbb{R}^{1 \times h}$是偏置参数。

候选记忆单元$\tilde{\mathbf{C}}_t \in \mathbb{R}^{n \times h}$:

记忆元$\mathbf{C}_t \in \mathbb{R}^{n \times h}$:

隐状态$\mathbf{H}_t \in \mathbb{R}^{n \times h}$:

3 深度循环网络

对于$L$个隐藏层的深度循环神经网络每一个隐藏层表示如下:

最后的输出只与最后一层隐藏层有关

deep-rnn

4 双向模型

birnn

对于任意时间步$t$,给定一个小批量的输入数据
$\mathbf{X}_t \in \mathbb{R}^{n \times d}$(样本数$n$,每个示例中的输入数$d$),并且令隐藏层激活函数为$\phi$。在双向架构中,设该时间步的前向和反向隐状态分别为$\overrightarrow{\mathbf{H}}_t \in \mathbb{R}^{n \times h}$和$\overleftarrow{\mathbf{H}}_t \in \mathbb{R}^{n \times h}$,其中$h$是隐藏单元的数目。
前向和反向隐状态的更新如下:

其中,权重$\mathbf{W}_{xh}^{(f)} \in \mathbb{R}^{d \times h}, \mathbf{W}_{hh}^{(f)} \in \mathbb{R}^{h \times h}, \mathbf{W}_{xh}^{(b)} \in \mathbb{R}^{d \times h}, \mathbf{W}_{hh}^{(b)} \in \mathbb{R}^{h \times h}$和偏置$\mathbf{b}_h^{(f)} \in \mathbb{R}^{1 \times h}, \mathbf{b}_h^{(b)} \in \mathbb{R}^{1 \times h}$都是模型参数。

5 序列到序列学习

机器翻译是一种常用的应用场景,即将输入序列转换为输出序列。输入序列与输出序列均是可变序列。

为此引入编码器与解码器架构:

encoder-decoder

编码器(encoder):接受一个长度可变的序列作为输入,并将其转换为具有固定形状的编码状态。

解码器(decoder):它将固定形状的编码状态映射到长度可变的序列。

seq2seq

”表示序列结束词元。一旦输出序列生成此词元,模型就会停止预测。“”表示序列开始词元,它是解码器的输入序列的第一个词元。使用循环神经网络编码器最终的隐状态来初始化解码器的隐状态。

嵌入层的权重是一个矩阵,其行数等于输入词表的大小(vocab_size),其列数等于特征向量的维度(embed_size)。对于任意输入词元的索引i,嵌入层获取权重矩阵的第i行(从0开始)以返回其特征向量。

seq2seq-details

参考文献

[1] 《动手学深度学习》 — 动手学深度学习 2.0.0 documentation[EB/OL]. [2024-12-21]. https://zh.d2l.ai/.