Encoder-Decoder模型主要是NLP领域里的概念。它并不是特指某种具体的算法,而是一类算法的统称。
Encoder-Decoder算是一个通用的框架,在这个框架下可以使用不同的算法来解决不同的任务。
Encoder-Decoder这个框架很好的诠释了机器学习的核心思路:
将现实问题转化为数学问题,通过求解数学问题,从而解决现实问题。
Encoder又称作编码器。它的作用就是:将现实问题转化为数学问题。
Decoder又称作解码器,它的作用是:求解数学问题,并转化为现实世界的解决方案。
把两个环节连接起来,用通用的图来表达则是下面的样子:
关于 Encoder-Decoder,有两点需要说明:
只要是符合上面的框架,都可以统称为Encoder-Decoder模型。
谈到Encoder-Decoder模型就经常提到一个名字Seq2Seq。
Seq2Seq(是Sequence-to-sequenc的缩写),就如字面意思,输入一个序列,输出另一个序列。这种结构最重要的地方在于:输入序列和输出序列的长度是可变的。如下图:
如上图:输入了6个汉字,输出了3个英文字母。输入和输出的长度不同。
Seq2Seq的由来:
Seq2Seq框架提出来之前,深度神经网络在图分类等问题上取得了非常好的效果。在其擅长解决的问题中,输入和输出通常都可以表示为固定长度的向量,如果长度稍有变化,会使用补零等操作。
然而许多重要的问题,例如机器翻译、语音识别、自动对话等,表示成序列后,其长度事先并不知道。因此如何突破先前深度神经网络的局限,使其可以适应这些场景,成为了13年以来的研究热点,Seq2Seq框架应运而生。
Seq2Seq和Encoder-Decoder的关系:
Seq2Seq不特指具体方法,满足输入序列、输出序列的目的,都可以统称为Seq2Seq模型。(强调目的)
而Seq2Seq使用的具体方法基本都属于Encoder-Decoder模型的范畴。(强调方法)
seq2Seq是具体的模型,encoder-decoder是模型设计“范式”
文本到文本(文字到文字)是最典型的应用,其输入序列和输出序列的长度可能会有较大的差异。
Google发表的用Seq2Seq做机器翻译的论文《Sequence to Sequence Learning with Netural Networks》
语音识别也有很强的序列特征,比较适合Encoder-Decoder模型。
Google发表的使用Seq2Seq做语音识别的论文《A Comparison of Sequence-to-sequence Models for Speech Recognition》
通俗的讲就是看图说话,机器提取图片特征,然后用文字表达出来。这个应用是计算机视觉和NLP的结合。
图像描述生成的相关论文:Sequence to Sequence - Video to Text
前面提到:Encoder(编码器) 和(解码器)之间只有一个向量c来传递信息,且c的长度固定。
我们类比为 压缩和解压 的过程:
将一张800X800像素的图片压缩成100KB,看上去还比较清晰。再将一张3000X3000像素的图片也压缩到100KB,那么看上去就相对比较模糊了。
Encoder-Decoder 就是类似的问题:当输入信息太长时,会丢失掉一些信息。
Attention机制就是为了解决:信息过长,信息丢失 的问题。
Attention模型的特点是Encoder不再将整个输入序列编码为固定长度的中间向量C,而是编码成一个向量的序列。引入了 Attention 的 Encoder-Decoder模型如下:
这样,在产生每一个输出的时候,都能够做到充分利用输入序列携带的信息。而且这种方法在翻译任务中取得了非常不错的成果。
Encoder-Decoder结构
seq2seq模型 和 encoder-decoder模型有什么异同?(zhihu)
Encoder-Decoder 和 Seq2Seq
《Sequence to Sequence Learning with Netural Networks》
《A Comparison of Sequence-to-sequence Models for Speech Recognition》
Sequence to Sequence - Video to Text