来源:Coursera吴恩达深度学习课程
seq2seq(sequence to sequence)模型在深度学习的应用中起到不错的作用,我们具体来看看。
如上图所示,输入一个法语句子 “Jane visite I'Afrique en septembre.”,将它翻译成英语“Jane is visiting Africa in September.”。我们用x^<1>一直到x^<5>来表示输入的句子的单词,然后我们用y^<1>到y^<6>来表示输出的句子的单词,那么,如何训练出一个新的网络来输入序列x和输出序列y呢?
这里的一些方法主要都来自于这两篇论文:①Sutskever,Oriol Vinyals 和 Quoc Le的Sequence to sequence learning with neural networks。②Kyunghyun Cho,Bart van Merrienboer,Caglar Gulcehre,Dzmitry Bahdanau,Fethi Bougares,Holger Schwen 和 Yoshua Bengio的Learning phrase representations using RNN encoder-decoder for statistical machine translation。
首先,我们先建立一个网络,这个网络叫做编码网络(encoder network)(上图记号1),这里的RNN的单元可以是GRU和LSTM。每次只向该网络中输入一个法语单词,将输入(input)序列接收完毕后,这个RNN网络会输出(output)一个向量来代表这个输入序列。之后你可以建立一个解码网络(decoder network)(上图记号2),它以编码网络的输出作为输入(input),编码网络是左边的黑色部分(记号1),之后它可以被训练为每次输出(output)一个翻译后的单词,一直到它输出序列的结尾或者句子结尾标记。和往常一样我们把每次生成的标记都传递到下一个单元中来进行预测。
深度学习在近期最卓越的成果之一就是这个模型确实有效,在给出足够的法语和英语文本的情况下,如果你训练这个模型,通过输入一个法语句子来输出对应的英语翻译,这个模型非常有效。这个模型简单地用一个编码网络来对输入的法语句子进行编码,然后用一个解码网络来生成对应的英语翻译。
如上图,图像描述(image captioning)有类似的结构,给出一张猫的图片,它能自动地输出该图片的描述,一只猫坐在椅子上,那么如何训练出这样的网络?
在之前的学习中,我们知道如何将图片输入到卷积神经网络中,比如一个预训练的AlexNet结构(上图记号1),然后让其学习图片的编码或者图片的特征。现在我们去掉最后的softmax单元(上图记号2),这个预训练的AlexNet结构会得到一个4096维的特征向量(feature vector),表示这只猫的图片,所以这个预训练网络可以是图像的编码网络。现在我们用4096维的向量来表示这张图片,接着把这个向量输入到RNN中(上图记号3方框),RNN要做的就是生成图像的描述,每次生成一个单词,这和机器翻译中看到的结构很像,现在输入(input)一个描述输入的特征向量,然后让网络生成一个输出序列,或者说一个一个地输出(output)单词序列。
事实证明在图像描述领域,这种方法相当有效,特别是生成的描述长度不是特别长。
以上就是基本的seq2seq模型是怎样运作的,以及image to sequence模型或者说图像描述模型是怎样运作的。
说明:记录学习笔记,如果错误欢迎指正!转载请联系我。