深入理解Transformer的笔记记录(精简版本)----Seq2Seq → Seq2Seq with Attention

时间:2024-10-10 07:21:09

只要是符合类似的框架,都可以统称为 Encoder-Decoder 模型。

1、RNN

RNN引入了隐状态h(hidden state)的概念,隐状态h可以对序列形的数据提取特征,接着再转换为输出

x1,x2,x3,x4如:

  1. 自然语言处理问题。x1可以看做是第一个单词,x2可以看做是第二个单词,依次类推
  2. 语音处理。此时,x1、x2、x3……是每帧的声音信号。
  3. 时间序列问题。例如每天的股票价格等等

 h_1基于上一个隐藏层的状态h_{0}和当前的输入x_{1}计算得来,泛化到任一时刻,便是h_{t}=f\left(W h_{t-1}+U x_{t}\right),而这里的f一般是tanh、sigmoid、ReLU等非线性的激活函数
\rightarrow  且在实践中,h_t一般只包含前面若干步而非之前所有步的隐藏状态

 h_{2}的计算和h_{1}类似。在计算时,每一步使用的参数U、W、b都是一样的,也就是说每个步骤的参数都是共享的,这是RNN的重要特点,因为RNN的权值是在同一个向量中,只是不同时刻而已。

依次计算剩下来的(使用相同的参数U、W、b):

 

一个箭头就表示对对应的向量做一次类似于f(Wx+b)的变换,这里的这个箭头就表示对h1进行一次变换,得到输出y1,剩下的输出类似进行: 

 

缺点:

RNN 会受到短时记忆的影响。如果一条序列足够长,那它们将很难将信息从较早的时间步传送到后面的时间步。因此,如果你正在尝试处理一段文本进行预测,RNN 可能从一开始就会遗漏重要信息。在反向传播期间,RNN 会面临梯度消失的问题。因为梯度是用于更新神经网络的权重值(新的权值 = 旧权值 - 学习率*梯度),梯度会随着时间的推移不断下降减少,而当梯度值变得非常小时,就不会继续学习。​由于这些层不学习,RNN会忘记它在较长序列中以前看到的内容,因此RNN只具有短时记忆

2、LSTM网络

 LSTM和基线RNN并没有特别大的结构不同,但是它们用了不同的函数来计算隐状态。LSTM的“记忆”我们叫做细胞/cells,你可以直接把它们想做黑盒,这个黑盒的输入为前状态h_{t-1}和当前输入