上QQ阅读APP看书,第一时间看更新
2.7 编码器-解码器网络
编码器-解码器(Encoder-Decoder)网络使用一个网络来创建输入的内部表示,或者对其进行“编码”,并且该表示用作另一个网络的输入以产生输出。这有助于超越输入的分类。最终输出可以是相同的模态,即语言翻译,或基于概念的不同模态,例如图像的文本标记。作为参考,可以阅读谷歌团队发表的论文“使用神经网络进行序列学习”(https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf)。
编码器-解码器网络其实可以看作一个解决问题的框架,主要解决seq2seq类问题,Sequence(序列)在这里可以理解为一个字符串序列,当我们在给定一个字符串序列后,希望得到与之对应的另一个字符串序列,比如问答系统、翻译系统。
编码器-解码器网络的流程可以理解为“编码—存储—解码”这一流程,可以用人脑流程来类比。我们先看到源Sequence,将其读一遍,然后在我们大脑当中就记住了这个源Sequence,并且存在大脑的某一个位置上,形成我们自己的记忆(对应后面的Context),然后我们再经过思考,将这个大脑里的东西转变成输出,写下来。我们大脑读入的过程叫作编码器(Encoder),即将输入的东西变成我们自己的记忆,放在大脑当中,而这个记忆可以叫作Context,然后我们再根据这个Context转化成答案写下来,这个写的过程叫作解码器(Decoder)。
整个模型可以用图2-12表示。
图2-12 编码器-解码器(Encoder-Decoder)网络架构