从RNN到Attention到Transformer系列-Encode-Decode(Seq2Seq)介绍及代码实现

深度学习知识点总结

专栏链接:
深度学习知识点总结_Mr.小梅的博客-优快云博客

本专栏主要总结深度学习中的知识点,从各大数据集比赛开始,介绍历年冠军算法;同时总结深度学习中重要的知识点,包括损失函数、优化器、各种经典算法、各种算法的优化策略Bag of Freebies (BoF)等。

本章介绍从RNN到Attention到Transformer系列-Decode-Encode(Seq2Seq)


目录

3.3 Encode-Decode(Seq2Seq)

3.3.1 Encode-Decode(Seq2Seq)介绍

3.3.2 Encode

3.3.3 Decode

3.3.4 Seq2Seq

3.3.5 全部训练代码


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的函数:

h_{t}=EncoderRNN(e(x_{t}),h_{t-1})

        这里的RNN同样也可以使用LSTM(Long Short-Term Memory)和GRU(Gated Recurrent Unit)等。现在有了X=\{x_{1},x_{2},...,x_{T}\},where\ x_{1}=<sos>,x_{2}="guten,etc."还有初始的隐藏状态h0一般默认为0,可以得到隐藏状态st:

 s_{t}=DecoderRNN(d(y_{t}),s_{t-1})

        虽然输入/源嵌入层e和输出/目标嵌入层d,在图中均以黄色显示,它们是两个不同的嵌入层,具有自己的参数。

        在解码器中,我们需要从隐藏状态转到实际单词,因此在每个时间步长中,我们使用st预测(通过一个线性层,以紫色显示)我们认为是序列中的下一个单词,y^t

\hat{y_{t}}=f(s_{t})

        解码器中的单词总是一个接一个地生成,每个时间步长一个。我们总是使用解码器的第一个输入<sos> ,但对于后续输入yt-1 ,有时会在序列中使用实际的下一个词yt,有时使用我们的解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值