Encoder-Decoder、Seq2Seq、Attention
Encoder-Decoder、Seq2Seq、Attention
传送门1:Encoder-Decoder 和 Seq2Seq
因为注意力不集中,所以这篇随笔就是看别人的文章,随手参考写写的。
1.Encoder-Decoder
Encoder-Decoder模型并不特指某种具体算法,而是一种通用的框架,这个框架下可以使用不同的算法来解决不同的任务。
Encoder-Decoder框架诠释了机器学习的核心思路:将现实问题转化为数学问题,通过求解数学问题,从而解决现实问题。
Encoder又称为编码器,作用就是:将现实问题转化为数学问题。
将文字/图片/音频等作为输入,通过Encoder编码器,输出向量。
Decoder又称为解码器,作用就是:求解数学问题,并转化为现实世界的解决方案。
将向量作为输入,通过Decoder解码器,输出文字等。
结合起来就是:Encoder将现实世界的问题转化成向量C,然后传给Decoder,Decoder通过向量,求解数学问题,然后转化为现实世界的解决方案。
其中2点注意:
1.无论输入和输出的长度是什么,中间的向量C都是固定长度的。
2.根据不同的任务可以选择不同的编码器和解码器。
以上,符合的都统称为Encoder-Decoder模型。
个人理解:只要有现实的输入,通过转化为向量,然后解决这个向量的数学问题,然后再转化为现实的,就是Encoder-Decoder模型。
因为电脑无法直接处理现实问题,所以要转化成数学问题,解决完之后再转化为现实的解决方案。
因为Encoder-Decoder之间的向量C是定长的,所以存在缺陷,因为不管信息是多还是少,只能表示定长的信息,所以当输入信息太长的时候,会丢失掉一些信息。
举例:图片压缩,800*800像素压缩成100KB和3000*3000像素压缩成100KB,3000*3000像素的压缩之后,图片就比800*800像素压缩的模糊。
2.Seq2Seq
Seq2Seq:Sequence-to-Sequence,序列到序列。
输入序列和输出序列的长度是可变的。
比如翻译:
I am a dog.
我是一只小狗。
输入的是4个英文单词,输出的是6个汉字。
Seq2Seq的产生是因为,机器翻译,语音识别图像描述生成等,长度事先不知道,无法固定长度,所以产生了这个框架。
Seq2Seq(强调目的),不特指方法,满足输入序列,输出序列的,都统称为Seq2Seq模型,具体方法都基本属于Encoder-Decoder模型(强调方法)的范围。
3.Attention
前面的Encoder-Decoder因为存在信息过长,信息丢失的问题,所以Attention机制的出现,来解决这个问题。
Attention的特点是Encoder不再将整个输入序列编码为固定长度的中间向量C,而是编码为一个向量的序列。
具体的前面写过一篇博客,但是那篇也是水的,所以,具体的涉及到公式代码的,还需要些时日。
暂时先这样,溜了。