专栏链接:
深度学习知识点总结_Mr.小梅的博客-优快云博客本专栏主要总结深度学习中的知识点,从各大数据集比赛开始,介绍历年冠军算法;同时总结深度学习中重要的知识点,包括损失函数、优化器、各种经典算法、各种算法的优化策略Bag of Freebies (BoF)等。
本章介绍从RNN到Attention到Transformer系列-Decode-Encode(Seq2Seq)
目录
3.3.1 Encode-Decode(Seq2Seq)介绍
3.3 Encode-Decode(Seq2Seq)
参考2014年论文《Sequence to Sequence Learning with Neural Networks》。
3.3.1 Encode-Decode(Seq2Seq)介绍
最常见的序列到序列(seq2seq)模型是编码器 - 解码器模型,它们通常使用递归神经网络(RNN)将源(输入)句子编码到单个向量中。在此次介绍中,我们将把这个单一的向量称为上下文向量。我们可以将上下文向量视为整个输入句子的抽象表示。然后,该向量由第二个RNN解码,该RNN通过一次生成一个单词来学习输出目标(输出)句子。
上图显示了一个示例翻译。输入/源句子“guten morgen”通过嵌入层(黄色),然后输入到编码器(绿色)。我们还将序列的开头<sos>和序列的结尾<eos>标记分别附加到句子的开头和结尾。在每个时间步长中,编码器RNN的输入是当前单词的嵌入向量e(xt),以及上一个时间步长中的隐藏状态ht-1,编码器 RNN 将输出新的隐藏状态ht .到目前为止,我们可以将隐藏状态视为句子的向量表示。RNN 可以被认为是e(xt) 和ht-1的函数:
这里的RNN同样也可以使用LSTM(Long Short-Term Memory)和GRU(Gated Recurrent Unit)等。现在有了还有初始的隐藏状态h0一般默认为0,可以得到隐藏状态st:
虽然输入/源嵌入层e和输出/目标嵌入层d,在图中均以黄色显示,它们是两个不同的嵌入层,具有自己的参数。
在解码器中,我们需要从隐藏状态转到实际单词,因此在每个时间步长中,我们使用st预测(通过一个线性层,以紫色显示)我们认为是序列中的下一个单词,y^t
解码器中的单词总是一个接一个地生成,每个时间步长一个。我们总是使用解码器的第一个输入<sos> ,但对于后续输入yt-1 ,有时会在序列中使用实际的下一个词yt,有时使用我们的解