Hulu機器學習問題與解答系列 | 十一彈:Seq2Seq

」Seq2Seq「

[場景描述]

作為生物體,我們的視覺和聽覺會不斷地獲得帶有序列的聲音和圖像信號,並交由大腦理解;同時我們在說話、打字、開車等過程中,也在不斷地輸出序列的聲音、文字、操作等信號。在互聯網公司日常要處理的數據中,也有很多是以序列形式存在的,例如文本、語音、視頻、點擊流等等。因此如何更好的對序列進行建模,一向是研究的要點。

2013年來,隨著深度學習的發展,Seq2Seq(sequence to sequence,序列到序列)框架在機器翻譯領域被大量採用,隨後迅速影響到了上述的各領域,應用在了各類序列數據上。

[問題描述]

1. Seq2Seq的框架是什麼?有哪些優點?

2. Seq2Seq在解碼時,有哪些常用的方法?

背景知識假設:基本的深度學習知識。

該類問題的被試者:對RNN有一定的使用經驗,或在自然語言理解、序列建模等領域有一定的經歷。

[解答與分析]

1. Seq2Seq的框架是什麼?有哪些優點?可以結合具體的應用場景進行分析。

在Seq2Seq框架提出之前,深度神經網路在圖像分類等問題上取得了非常好的效果。在其擅長解決的問題中,輸入和輸出通常都可以表示為固定長度的向量,如果長度稍有變化,會使用補零等操作。然而許多重要的問題,例如機器翻譯、語音識別、自動對話等,表示成序列後,其長度事先並不知道。因此如何突破先前深度神經網路的局限,使其可以適應這些場景,成為了13年以來的研究熱點,Seq2Seq框架應運而生[1][2]。

Seq2Seq框架的核心思想是:通過深度神經網路將一個作為輸入的序列映射為一個作為輸出的序列,這一過程由編碼輸入與解碼輸出兩個環節構成。在經典的實現中,編碼器和解碼器分別由一個RNN構成,其選擇有傳統RNN、LSTM、GRU等,這兩個RNN是共同訓練的。

上圖[3]是Seq2Seq應用於機器翻譯時的例子,輸入的序列是一個源語言的句子,有三個單詞A、B、C,編碼器依次讀入A、B、C和結尾符<EOS>。 在解碼的第一步,解碼器讀入編碼器的最終狀態,生成第一個目標語言的詞W;第二步讀入第一步的輸出W,生成第二個詞X;如此循環,直至輸出結尾符<EOS>。輸出的序列W、X、Y、Z就是翻譯後目標語言的句子。

在文本摘要時,輸入的序列是長句子或段落,輸出的序列是摘要短句。在圖像描述生成時,輸入是圖像經過視覺網路的特徵,輸出的序列是圖像的描述短句。在語音識別時,輸入的序列是音頻信號,輸出的序列是識別出的文本。這些場景中,編碼器或解碼器會依據場景有不同的設計,大家在面試時可以結合自己的項目經歷展開探討。

2. Seq2Seq在解碼時,有哪些常用的方法?

Seq2Seq最核心的部分是其解碼部分,大量的改進也是在解碼環節衍生的,因此面試時也常常問到。Seq2Seq最基礎的解碼方法是貪心法,即選取一種度量標準後,每次都在當前狀態下選擇最佳的一個結果,直到結束。貪心法的計算代價低,適合作為基礎實現(baseline),並與其他方法相比較。很顯然貪心法獲得的是一個局部最優解,由於實際問題的複雜性,該方法往往並不能取得最領先的效果。

Beam search是常見的改進演算法,它是一種啟發式的演算法。該方法會保存beam size(後面簡寫為b)個當前的較佳選擇,然後解碼時每一步根據保存的選擇進行下一步擴展和排序,接著選擇前b個保存,循環進行,直到結束時選擇最佳的一個作為解碼的結果。下圖為b為2的示例:

在該例中,當前已經有解碼得到的第一個詞的兩個選項:I和My。然後,將I和My輸入到解碼器,得到一系列候選的序列諸如I decided、My decision、 I thought等。最後,從後續序列中選擇最優的兩個,作為前兩個詞的兩個選項。很顯然,如果b取1,那麼會退化為前述的貪心法。隨著b的增大,其搜索的空間增大,獲得的效果會提高,但需要的計算量也會增大。在實際的應用如機器翻譯、文本摘要中,b往往會選擇一個適中的範圍如8~12。

解碼時使用堆疊的RNN、增加dropout機制、與編碼器之間建立殘差連接等,也是常見的改進措施。大家在研究和工作中,可以依據使用場景,多查閱文獻和技術文檔,有針對的選擇和實踐。

在解碼環節,另一個重要的改進是注意力機制[4],它的引入使得解碼時,每一步可以有針對地關注與當前有關的編碼結果,從而減小了編碼器輸出表示的學習難度,也更容易學到長期的依賴關係。注意力機制會在下一節做更加深入的探討,敬請期待。此外,解碼時還可以採用記憶網路(memory network)[5]等,從外界獲取知識。

[參考文獻]

[1] Auli, Michael, et al. "Joint Language and Translation Modeling with Recurrent Neural Networks." EMNLP. 2013.

[2] Cho, Kyunghyun, et al. "Learning phrase representations using RNN encoder-decoder for statistical machine translation." EMNLP. 2014.

[3] Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le. "Sequence to sequence learning with neural networks." NIPS. 2014.

[4] Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. "Neural machine translation by jointly learning to align and translate." ICLR. 2015.

[5] Sukhbaatar, Sainbayar, Jason Weston, and Rob Fergus. "End-to-end memory networks." NIPS. 2015.


下一題預告

【注意力機制】

[場景描述]

來來來,集中注意力好好學習了!其實,不僅人的注意力會分散,神經網路的注意力也會分散。前面介紹的Seq2Seq模型將輸入序列進行編碼後得到中間表示,再通過解碼生成輸出序列,這就要求生成的中間表示要儘可能多的包含輸入序列的信息。在實際使用中,會發現隨著輸入序列長度的增加,模型的性能發生了顯著下降。同時,Seq2Seq模型的輸出序列中,常常會丟失或者重複部分輸入序列的信息。

為了解決這些問題,注意力機制(attention mechanism)被引入Seq2Seq模型中。注意力機制模仿人在生成序列時的行為,當解碼序列的某個輸出時,重點關注輸入序列中和當前位置的輸出相關的部分,緩解了Seq2Seq模型的上述問題。作為一種通用的思想,注意力機制在包括Seq2Seq在內的多種場景中都得到了應用。

[問題描述]

RNN的Seq2Seq模型中引入了注意力機制(attention mechanism)是為了解決什麼問題?在機器翻譯的Seq2Seq模型中使用注意力機制建模時,為什麼選用了雙向的RNN模型?


歡迎留言提問或探討

關注「Hulu」微信公眾號,點擊菜單欄「機器學習」獲得更多系列文章


推薦閱讀:

4 支持向量機-總結
Tensorflow入門教程(7)
谷歌大腦AutoML最新進展:不斷進化的阿米巴網路
深度學習與故障診斷的另一次嘗試
機器學習與深度學習視頻講解

TAG:人工智慧 | 機器學習 | 面試問題 |