深度學習和自然語言處理的注意機制和記憶模型

英文原文請參見attention-and-memory-in-deep-learning-and-nlp.

深度學習近期的一個趨勢是使用注意機制(Attention Mechanism),OpenAI研究負責人Ilya Sutskever在最近的一次採訪中提到了注意機制是最令人激動的進步之一,而且它們將就此紮根下來。這聽起來令人興奮不已,但注意機制到底是什麼?
  神經網絡中的注意機制大體是基於從人類視覺中發現的注意機制。對人類視覺注意力的研究較爲透徹,目前存在幾個不同模型,但歸根結底,它們在本質上都是能夠聚焦於圖像中「高分辨率」的特定區域,同時又可以感知到周圍的「低分辨率」區域,然後不斷的調整焦點。
  注 意機制在神經網絡中的使用由來已久,特別是用在圖像識別中。例如,Hugo Larochelle和Geoffrey E. Hinton於2010年發表的論文《Examples include Learning to combine foveal glimpses with a third-order Boltzmann machine》,以及Misha Denil2011年的論文《Learning where to Attend with Deep Architectures for Image Tracking》。但直到最近,外界纔將注意機制應用在一些遞歸神經網絡架構(尤其是用於自然語言處理,對於視覺的應用也在增加)上。這就是本文所關注 的重點。

注意機制可以解決哪些問題?
  爲 了更好的理解注意機制的作用,我們以神經機器翻譯(NMT)爲例。傳統的機器翻譯系統通常都是依靠複雜的基於文本統計屬性的特徵工程。簡單來說,這些系統 非常複雜,建造它們需要在工程上付諸大量努力。神經機器翻譯系統的工作原理有些不同,我們會將一個句子的含義映射到一個固定長度的向量表示上,然後基於那 個向量再進行翻譯。NMT系統不是依賴於文法計數,而是試圖獲取更加高級的文本含義,這樣就可以比其他方法更好的概括出新句子。更加重要的是,NMT系統 在建造和訓練方面更加容易,它們不需要人工添加特徵。事實上,Tensorflow中的一個簡單應用已經都不會超過100行代碼了。
  大多數NMT系統的工作原理是通過遞歸神經網絡將源句子(比如說一句德語)編碼成向量,然後同樣使用遞歸神經網絡將這個向量解碼成一句英語。


在上圖中,單詞「Echt」、「Dicke」和「Kiste」被輸入進編碼器,經過一個特殊的信號(圖中未顯示)之後,解碼器開始生成翻譯完成的句子。解碼器持續不斷的生成詞彙,直到遇到一個特殊的代表句子結束的符號。在這裏,向量表現出了編碼器的內部狀態。
  如 果你看的足夠仔細,你會發現,解碼器是被用來基於編碼器中的最後一個隱狀態來單獨完成翻譯的。這個向量必須將我們所需要了解的源句子的一切都進行編碼,它 必須能夠完全捕捉到句子的含義。用個技術術語來表示,那個向量是在進行句式嵌入(sentence embedding)。事實上,你如果使用PCA或t-SNAE等降維方法將不同句式嵌入繪製出來的話,你會發現最終語義相似的句子會離得比較近。這令人 非常驚奇。
  上 文提到,我們可以將一個非常長的句子的所有信息都編碼成單一向量,然後解碼器僅基於這個向量就能完成一次很好的翻譯,但這個假設看起來還有些不夠合理。讓 我們拿一個由50個單詞組成的源句子舉例。英語翻譯的第一個詞可能和源句子的第一個詞高度相關。但這意味着解碼器不得不考慮50步之前的信息,以及需要在 這個向量中進行解碼的信息。我們都知道,遞歸神經網絡在處理這類遠程依賴性時會遇到問題。理論上來說,類似於長短時記憶模型(LSTMs)的架構應該可以 應對這些問題,但事實上遠程依賴性依然會存在問題。例如,研究者已經發現,顛倒源句子的順序(將它逆向輸入編碼器)能夠產生更好的結果,因爲這縮短了從解 碼器到編碼器相關部分的路徑。同樣的,將一個順序輸入兩次也可能幫助神經網絡更好的進行記憶。

我 認爲這種顛倒句子順序的方法屬於「hack」。這在實際應用中更有效,但卻不是一種從根本上出發的解決方案。大部分翻譯基準是基於法語和德語所做出來的, 它們和英語比較類似。但在某些語言(例如日語)的英語翻譯中,一句話的最後一個詞有可能是第一個詞的預測因子。在這種情況下,逆向輸入就會使結果變的更 差。對此,還有什麼可選方案?答案就是注意機制。
  有 了注意機制,我們不再試圖將一個完整的源句子編碼成一個固定長度的向量。相反,我們在形成輸出的每一步都允許解碼器「關注」到源句子的不同部分。重要的 是,我們會讓這個模型基於輸入的句子以及到目前爲止產生的結果去學習應該「關注」什麼。因此,在那些高度一致的語言(例如英語和德語)中,解碼器將可能選 擇按照順序進行「關注」。如果需要翻譯第一個英語單詞,就「關注」第一個單詞,等等。這就是神經機器翻譯中藉助於對匹配和翻譯的聯合學習所獲得的成果。這 裏,y’是解碼器翻譯出來的dan ci,x’是源句子的單詞。上圖用了一個雙向的遞歸網絡,但這個不重要,你可以忽視反向部分。重要的部分在於,解碼器輸出的每一個單詞y都依賴於所有輸入 狀態的加權組合,而不僅是最後一個狀態。a’是權重,用來定義對於每一個輸出值,每個輸入狀態應該被考慮的程度。因此,如果a(3,2)很大,則意味着解 碼器在生成目標句子第三個單詞的翻譯結果時,應該更多的「注意」源句子的第二個狀態。
  注意力的一大優點是它使我們能夠解釋和想象出模型的工作狀態。例如,當一個句子正在被翻譯時,我們可以將注意力權重矩陣進行可視化處理,因此,就能理解這個模型是怎樣進行翻譯的。

這裏我們看到,當從法語翻譯成英語時,神經網絡按照順序「關注」了每一個輸入狀態,但有時它會一次性「關注」兩個單詞,比如在將「la Syrie」翻譯成「Syria」(敘利亞)時。
  注意機制的代價
  如 果我們更仔細地觀察注意機制的方程,我們會發現它是有代價的。我們需要結合每個輸入和輸出的單詞來計算注意值。如果你輸入50個詞,輸出50個詞,那麼注 意值將會是2500。這還不算糟,但是如果你做字符級的計算,處理由數以百計的標記組成的序列,那麼上述注意機制的代價將變得過於昂貴。
  事 實上,這是反直覺的。人類的注意力是節省計算資源的。當我們專注於一件事時,會忽略許多其他事。但那不是我們上述模型所真正做的事。在我們決定關注什麼之 前,必須確定每一個細節。直覺上等效輸出一個翻譯的單詞,要通過所有內在記憶中的文本來決定下一步生成什麼單詞,這似乎是一種浪費,完全不是人類所擅長的 事情。事實上,它更類似於記憶的使用,而不是注意,這在我看來有點用詞不當。然而,這並不影響注意機制變得非常流行,而且在許多任務中表現良好。
  另 一種注意機制的方法是使用強化學習來預測一個需要專注的近似位置。這聽起來更像人類的注意力,這就是視覺注意遞歸模型( Recurrent Models of Visual Attention)所完成的事情。然而,強化學習模型不能用反向傳播進行首尾相連的訓練,因此它們並不能廣泛應用於NLP問題中。

超越機器翻譯的注意機制
  目前我們看到了注意機制應用於機器翻譯中,但它可以用於任意遞歸模型,讓我們看更多的例子。
  如 圖所示,在《Attend and Tell:Neural Image Caption Generation with Visual Attention》論文中,作者使用了注意機制來解決圖像描述生成問題。他們用卷積神經網絡來「編碼」圖像,然後用帶有注意機制的遞歸神經網絡來生成描 述。通過將注意權重可視化,我們來解釋一下,模型在生成一個單詞時所表現出來的樣子:

在論文《Grammar as a Foreign Language》中,作者用帶有注意機制的遞歸神經網絡生成句子分析樹。將注意矩陣可視化,可以讓我們洞悉神經網絡是如何生成這個分析樹的:

在論文《Teaching Machines to Read and Comprehend》中,作者使用RNN來閱讀文本和(合成的)問題,然後輸出答案。通過將注意矩陣可視化,我們能看到,當神經網絡試圖尋找答案時,它在「看」什麼:

注意力=(模糊的)記憶?
  注 意機制所解決的基本問題是允許神經網絡參考輸入序列,而不是專注於將所有信息編碼爲固定長度的向量。正如我上面提到的,我認爲注意力有點用詞不當。換句話 說,注意機制是簡單的讓神經網絡使用其內部記憶(編碼器的隱狀態)。在這個解釋中,不是選擇去「關注」什麼,而是讓神經網絡選擇從記憶中檢索什麼。不同於 傳統的記憶,這裏的記憶訪問機制更加靈活,這意味着神經網絡根據所有記憶的位置賦予其相應的權重,而不是從單個離散位置得出某個值。讓記憶的訪問更具靈活 性,有助於我們用反向傳播對神經網絡進行首尾相連的訓練(雖然有非模糊的方法,即使用抽樣方法來代替反向傳播進行梯度計算。)
  記憶機制有着更長的歷史。標準遞歸神經網絡的隱狀態就是一種內部記憶。梯度消失問題使RNNs無法從遠程依賴性中進行學習。長短時記憶模型通過使用允許明確記憶刪除和更新)改善了上述情況。
  形 成更加複雜記憶結構的趨勢仍在繼續。論文《End-to-End Memory Networks》中可以(End-to-End Memory Networks)使神經網絡先多次讀取相同的輸入序列,然後再進行輸出,每一個步驟都更新記憶內容。例如,通過對輸入內容進行多次推理從而回答某個問 題。但是,當神經網絡參數的權重以一種特定方式聯繫在一起時,端對端記憶網絡中的記憶機制等同於注意機制,這在記憶中創造了多重躍點(因爲它試圖從多個句 子中集成信息)。
  在論文《神經圖靈機》中使用了和記憶機制類似的形式,但有着更加複雜的訪問類型,後者既使用了基於內容的訪問,又使用了基於位置的訪問,從而使神經網絡可以學習訪問模式來執行簡單的計算機程序,例如排序算法。
  在不久的將來,我們非常有可能看到對記憶和注意機制的更加清晰的區分,它可能會沿着「強化學習神經圖靈機」(正試着學習訪問模式來處理外部接口)的路線發展下去。

轉自http://blog.zhulong.com/u10531399/blogdetail6280506.html.







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章