Encoder-Decoder

一、Encoder-Decoder概念介绍

        Encoder-Decoder通常称作编码器-解码器,是深度学习中常见的框架。很多常见的应用都是利用编码-解码框架设计的。

        Encoder-Decoder框架很好地诠释了机器学习的核心思路:将现实问题转换为数学问题,通过求解数学问题进而解决现实问题。Encoder 和 Decoder部分可以是任意文字、语音、图像、视频数据等,算法可以是CNN、RNN、LSTM、GRU、Attention等。因此,基于Encoder-Decoder我们可以设计出各种各样的模型,例如后文介绍的seq2seq模型、Transformer等。

编码,就是将输入序列转化为一个固定长度向量;解码,就是将之前生成的固定向量再转化为输出序列。

二、基于Encoder-Decoder框架实现的模型举例

1. seq2seq

seq2seq模型通过编码器-解码器架构来实现,是一类端到端(end-to-end)的算法。模型输入为一个序列,输出为另一个序列。该模型最重要的地方在于输入序列和输出序列的长度是可变的。

seq2seq强调目的,并不特指某种具体方法,只要满足输入序列输出序列的目的都可统称为seq2seq模型。seq2seq使用的具体方法基本都是属于Encoder-Decoder框架的的范畴。

上图中h代表编码器隐向量,s代表解码器隐向量。编码器实现将任意长度的输入序列映射为固定长度的上下文序列c(可以看作是输入序列的一个中间编码表示),解码器再将固定长度的中间序列c映射为变长度的目标序列作为最终输出y。

问题一:当输入序列的长度过长时,上下文序列将无法表示整个输入序列的信息。

        seq2seq模型理论上可以接受任意长度的序列作为输入,但是机器翻译的实践表明输入的序列越长,模型的翻译质量越差。产生这一问题的原因在于无论输入序列的长短,编码器都会将其映射为一个具有固定长度的上下文序列c

问题二:在生成每一个目标元素时使用的[公式]和生成下文序列时使用的[公式]都是相同的,这就意味着输入序列x中的每个元素对输出序列[公式]中的每一个元素都具有相同的影响。

       事实上在一个输入序列中,不同元素所携带的信息量是不同的,受到关注的程度也自然存在差异。

针对问题二,我们可以引入注意力机制对seq2seq模型进行优化。事实上,目前大部分ttention机制都是依附于Encoder-Decoder框架进行实现。

上图中,每一个上下文序列为编码器所有隐状态向量的加权和

c=Encoder(x_{1},...,x_{m})

在解码器预测输出yi时,其结果依赖与之匹配的上下文序列ci以及之前的隐状态,即

y_{i}=Decoder(c_{i},s_{1},...,s_{i-1}),\; i=1,...,n

注意力模块可以视为是一个具有m个输入节点和n个输出节点的全连接神经网络。

2. Trasformer

        Transformer模型采用的也是编码器-解码器架构。但是在该模型中编码器和解码器不再是RNN结构,取而代之的是编码器栈解码器栈。编码器栈和解码器栈中分别为连续六个具有相同结构的编码器和解码器。下图为Transformer的编码器-解码器架构示意图。

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值