序列結構的各種序列(Various sequence to sequence architectures)
你將會學習seq2seq(sequence to sequence)模型,從
機器翻譯到語音識別,它們都能起到很大的作用,從最基本的模型開始。之後你還會學習集束搜索(Beam search)和注意力模型(Attention Model),一直到最後的音頻模型,比如語音。
現在就開始吧,比如你想通過輸入一個法語句子,比如這句 “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,另一篇的作者是Kyunghyun Cho,Bart van Merrienboer,Caglar Gulcehre,Dzmitry Bahdanau,Fethi Bougares,Holger Schwen 和 Yoshua Bengio。
首先,我們先建立一個網絡,這個網絡叫做編碼網絡(encoder network)(上圖編號1所示),它是一個RNN的結構, RNN的單元可以是GRU 也可以是LSTM。每次只向該網絡中輸入一個法語單詞,將輸入序列接收完畢後,這個RNN網絡會輸出一個向量來代表這個輸入序列。之後你可以建立一個解碼網絡,我把它畫出來(上圖編號2所示),它以編碼網絡的輸出作為輸入,編碼網絡是左邊的黑色部分(上圖編號1所示),之後它可以被訓練為每次輸出一個翻譯後的單詞,一直到它輸出序列的結尾或者句子結尾標記,這個解碼網絡的工作就結束了。和往常一樣我們把每次生成的標記都傳遞到下一個單元中來進行預測,就像之前用語言模型合成文本時一樣。
深度學習在近期最卓越的成果之一就是這個模型確實有效,在給出足夠的法語和英語文本的情況下,如果你訓練這個模型,通過輸入一個法語句子來輸出對應的英語翻譯,這個模型將會非常有效。這個模型簡單地用一個編碼網絡來對輸入的法語句子進行編碼,然後用一個解碼網絡來生成對應的英語翻譯。
還有一個與此類似的結構被用來做圖像描述,給出一張圖片,比如這張貓的圖片(上圖編號1所示),它能自動地輸出該圖片的描述,一隻貓坐在椅子上,那麼你如何訓練出這樣的網絡?通過輸入圖像來輸出描述,像這個句子一樣。
方法如下,在之前的卷積網絡課程中,你已經知道了如何將圖片輸入到卷積神經網絡中,比如一個預訓練的AlexNet結構(上圖編號2方框所示),然後讓其學習圖片的編碼,或者學習圖片的一系列特徵。現在幻燈片所展示的就是AlexNet結構,我們去掉最後的softmax單元(上圖編號3所示),這個預訓練的AlexNet結構會給你一個4096維的特徵向量,向量表示的就是這隻貓的圖片,所以這個預訓練網絡可以是圖像的編碼網絡。
現在你得到了一個4096維的向量來表示這張圖片,接著你可以把這個向量輸入到RNN中(上圖編號4方框所示),RNN要做的就是生成圖像的描述,每次生成一個單詞,這和我們在之前將法語譯為英語的機器翻譯中看到的結構很像,現在你輸入一個描述輸入的特徵向量,然後讓網絡生成一個輸出序列,或者說一個一個地輸出單詞序列。
事實證明在圖像描述領域,這種方法相當有效,特別是當你想生成的描述不是特別長時。據我所知,這種模型首先是由Junhua Mao,Wei Xu,Yi Yang,Jiang Wang,Zhiheng Huang和Alan Yuille提出的,儘管有幾個團隊都幾乎在同一時間構造出了非常相似的模型,因為還有另外兩個團隊也在同一時間得出了相似的結論。我覺得有可能Mao的團隊和Oriol Vinyals,Alexander Toshev,Samy Bengio和Dumitru Erhan,還有Andrej Karpathy和Fei-Fei Li是同一個團隊。
現在你知道了基本的seq2seq模型是怎樣運作的,以及image to sequence模型或者說圖像描述模型是怎樣運作的。
不過這兩個模型運作方式有一些不同,主要體現在如何用語言模型合成新的文本,並生成對應序列的方面。一個主要的區別就是你大概不會想得到一個隨機選取的翻譯,你想要的是最準確的翻譯,或者說你可能不想要一個隨機選取的描述,你想要的是最好的最貼切的描述,我們將在下節中介紹如何生成這些序列。
閱讀更多 極客Array 的文章