Attention和增强RNN (Attention and Augmented Recurrent Neural Networks)
原文: Attention and Augmented Recurrent Neural Networks
遞歸神經網絡是一種主流的深度學習模型,它可以用神經網絡模型來處理序列化的數據,比如文本、音頻和視頻數據。它能把一個序列濃縮為抽象的理解,以此來表示這個序列,乃至新產生一個序列。
基本的RNN網絡設計對長序列串往往無能為力,但是它的特殊變種 —— “長短期記憶模型(LSTM)” —— 則能處理這些數據。這類模型被認為非常強大,在許多類別的任務上取得了顯著的成績,包括機器翻譯、語音識別、和看圖寫話等。因此,遞歸神經網絡在過去幾年內變得非常流行。
隨著遞歸神經網絡的流行,我們看到人們試圖用各種方法來提升RNN模型的效果。其中,有四個方向的改進效果比較顯著:
這些技術都是RNN模型可能的擴展方向,但真正讓我們興奮的是可以將這些技術都合并起來,就像是更廣闊空間中的一些點聚合。而且,這些技術所基于的底層技術都相同 —— 被稱作聚焦機制(attention)。
我們猜測這些“增強神經網絡”在今后幾年內對于拓展深度學習的能力將會扮演重要的角色。
神經圖靈機
神經圖靈機器(Graves, et al., 2014)將RNN模型與一個外部記憶模塊結合。由于向量表達是神經網絡界的自然語言,所以記憶的是一組向量值:
但是,讀和寫的過程又是怎樣的呢?這里的挑戰在于我們想區分這兩個過程。具體說來,我們想區分讀和寫的區域,那么我們就能學會從哪兒去讀取,寫入到什么位置。由于存儲地址本質上是離散化的,因此這個問題比較棘手。神經圖靈機器采用了一種非常聰明的解決方案:它們在每一步以不同的程度來讀和寫各個位置。
以讀取為例,不同于指定一個位置讀取,RNN模型給出了“聚焦分布(attention distribution)”,描述了我們對不同記憶位置的關注程度。因此,讀取操作是帶權重的累加。
同樣的,我們每次以不同的程度寫入內容。聚焦分布描述了我們在每個位置的寫入量。記憶單元中某個位置的新值是舊的記憶內容與新寫入內容的組合,它們之間的位置由聚焦權重所決定。
但是,神經圖靈機器是如何決定需要聚焦在哪一塊記憶區域呢?事實上,它們結合了兩種不同的方法:基于內容的聚焦和基于位置的聚焦?;趦热莸姆椒ㄗ屔窠泩D靈機器搜索遍歷它們的記憶庫,然后關注在與內容相符合的區域,而基于位置的方法則允許在記憶區域的相對運動,使得神經圖靈機器可以循環。
這種讀寫能力使得神經圖靈機器可以進行很多種簡單的運算,超越了普通神經網絡的能力。比如,它們可以學習記憶一段長序列,然后不斷地循環重復。隨著它們不斷地循環,我們能觀測到它讀寫的位置,能夠更全面地理解其工作原理:
它們還能學習模仿查詢表,甚至學習對數字排序!然而,它們卻無法完成許多基本任務,比如加法或者乘法運算。
Graves,?et al., 2014文中介紹了大量的實驗。這張圖片展現了“重復復制”的實驗。?
自最初的神經圖靈機器論文發表之后,在這一領域方向又涌現出了大量優質論文。神經GPU(Kaiser & Sutskever, 2015) 克服了神經圖靈機器無法計算加法和乘法的缺陷。Zaremba & Sutskever, 2016采用強化學習的方法訓練NTM。神經隨機訪問機器(Neural Random Access Machines?Kurach et al., 2015)基于指針運行。一些論文嘗試了不同的數據結構,比如堆棧和隊列(Grefenstette et al. 2015;?Joulin & Mikolov, 2015)。記憶網絡(Weston et al., 2014;?Kumar et al., 2015)是解決類似問題的另一種方式。
這些模型能解決的任務并沒有太復雜,比如數字的相加,傳統的程序就能輕而易舉地解決。但神經網絡模型不僅局限于此,例如神經圖靈機器在能力上有了深遠的突破。
代碼
這些模型有許多開源的實現版本。神經圖靈機器的開源實現版本有Taehoon Kim’s?(TensorFlow),?Shawn Tan’s?(Theano),?Fumin’s?(Go),?Kai Sheng Tai’s?(Torch), and?Snip’s?(Lasagne)。神經GPU論文的代碼已經開源,合并到了?TensorFlow模型代碼庫。記憶網絡的開源實現有Facebook’s?(Torch/Matlab),?YerevaNN’s?(Theano), and?Taehoon Kim’s?(TensorFlow)。
?
注意力接口(Attention Interface)
在翻譯句子時,我們會尤其關注當前正在翻譯的詞語。在轉換語音記錄時,我們會集中注意認真聆聽正在書寫的片段。如果你讓我描述我所在的屋子,我肯定會瞥一眼正在描述的屋內物品。
神經網絡模型可以使用聚焦來實現同樣的動作,專注于所提供信息的某一部分。例如,一個RNN模型可以輸入另一個RNN模型的輸出。它在每一步都會關注另一個RNN模型的不同位置。
我們希望聚焦點是可區分的,從而能學會需要關注哪些位置。因此,我們借用了神經圖靈機器的技巧:關注所有位置,只是程度不一樣。
聚焦分布通常是由基于內容的聚焦產生。RNN模型生成一個搜索詞描述其希望關注的位置。然后計算每條內容與搜索詞的點乘得分,表示其與搜索詞的匹配程度。這些分數經過softmax函數的運算產生聚焦的分布。
聚焦機制在RNN模型的使用場景之一是語言翻譯(Bahdanau,?et al.?2014)。若用傳統的序列到序列模型做翻譯,需要把整個輸入詞匯串縮簡為單個向量,然后再展開恢復為序列目標語言的詞匯串。聚焦機制則可以避免上述操作,RNN模型逐個處理輸入詞語的信息,隨即生成相對應的詞語。
RNN模型之間的這類聚焦還有許多其它的應用。它可以用于語音識別(Chan, et al. 2015),其中一個RNN模型處理語音信號,另一個RNN模型則滑動處理其輸出,然后關注相關的區域生成文本內容。
?
圖片來自于Chan,?et al.?2015
?
聚焦機制的其它用途還包括文本解析(Vinyals, et al., 2014)生成一棵解析樹,以及?
用于會話模型(Vinyals & Le, 2015),模型可以根據之前的會話內容生成回復。
聚焦機制還能用作卷積神經網絡CNN和RNN模型的接口。這使得RNN模型每一步都在關注圖片的不同區域。這種方法的用途之一就是給圖片添加描述。首先,用卷積神經網絡處理圖像,提取高層次的特征。然后運行RNN模型,生成圖像的描述。隨著RNN模型在圖像的卷積網絡特征的關注部位不同,生成相對于的描述文字。我們來將這個過程可視化:
圖片來自?Xu, et al., 2015
推而廣之,若某個神經網絡的輸出具有重復性的結構,就能使用聚焦接口(attentional interfaces)與這個神經網絡相銜接。
聚焦接口被認為是一項非常普及和有效的技術,受到了越來越多的應用。
適應性計算時間(Adaptive Computation Time)
標準的RNN模型每一步所消耗的計算時間都相同。這似乎與我們的直覺不符。我們在思考難題的時候難道不需要更多的時間嗎?
適應性計算時間(Adaptive Computation Time?Graves, 2016)是解決RNN每一步消耗不同計算量的方法?;\統地說:就是讓RNN模型可以在每個時間片段內進行不同次數的計算步驟。
為了讓網絡模型學會需要計算多少步,我們希望步數有區別性。因此我們采用了之前提到過的技巧:我們給需要計算的步數設了聚焦分布,而不是指定具體的數值。輸出的是每一步的帶權重結合。
上圖省略了不少細節內容。下圖是一個時間片段的完整示意圖,包括了三個計算步驟。
看上去有點兒復雜,所以我們一步步往下看。從較高的層次觀察,我們仍舊運行RNN模型,輸出各個狀態的帶權重組合:
每一步的權重值由“halting neuron”決定。這個神經元事實上是一個sigmoid函數,輸出一個終止權重,可以理解為需要在當前步驟終止的概率值。
停止權重值的總和等于1,每一步結束后要減去相應的值。一旦這個值小于了epsilon,我們就停止計算。
當訓練Adaptive Computation Time模型時,可以在損失函數添加一項“ponder cost”,用來懲罰模型的累積計算時間。這一項的值越大,就更不傾向于降低計算時間。
ACT仍是一個非常新的概念,但是我們相信它以及其它類似的概念今后一定會發揮作用。
代碼
目前開源的ACT代碼貌似只有?Mark Neumann’s?(TensorFlow)
展望
在某種程度上,事先有準備的人會比兩手空空的人更聰明。我們使用數學符號能解決許多新問題,而我們依靠計算機則可以完成更多不可思議的任務,遠遠超出了我們的個人能力。
一般來說,智慧的表現形式往往是人類啟發式直覺與更細膩的媒介的交互過程,比如語言和公式。有時候,這種媒介是實實在在存在的物體,可以用來存儲信息,避免我們犯錯誤或是進行繁重的計算任務。在其它情況下,這種媒介是我們腦子里的模型。無論如何,它似乎是智慧的基礎。
機器學習領域的最新研究成果已經帶有這種味道了,將神經網絡的直覺與其他東西結合。一種方法是所謂的“啟發式搜索”。例如,AlphaGo (Silver, et al., 2016) 建立了一個下圍棋的模型,在神經網絡的指導下探索如何進行游戲。同樣的,DeepMath (Alemi, et al., 2016)利用神經網絡處理數學表達式。我們在本文中提到的“增強RNN”屬于另一種方法,我們將RNN模型與工程媒介相結合,以提高它們的泛化能力。
與媒介的互動自然會涉及到一系列的采取行動、觀察情況、繼續行動步驟。這就產生了一個重大的挑戰:我們如何學習該采取哪些行動?這聽起來像是一個強化學習的問題,我們當然可以采取強化學習方法。但是強化學習也正在攻堅解決這些難題,其解決辦法目前也很難被采用。聚焦的好處在于它讓我們比較輕松地繞開了這個問題,我們可以不同程度地采取所有行動。而強化學習只允許我們選擇一條道路,從中學習經驗。聚焦機制在岔路口會選擇所有的方向,然后將各條路徑的結果合并起來。
聚焦機制的一大弱點就是每一步都需要執行一個“行動”。這導致消耗的計算資源呈線性增長。有一種解決方式是將聚焦稀疏化,因此只需要處理其中的一部分記憶單元。然而,也許你希望聚焦點是基于記憶單元的,這樣勢必需要瀏覽所有的內存單元,這又帶來了不小的挑戰。我們看到了一些初步的解決方案,例如Andrychowicz & Kurach, 2016,似乎還有很大的提升空間。
增強RNN和其背后的聚焦技術真的領入興奮。我們期待看到它們取得更大的進展!
總結
以上是生活随笔為你收集整理的Attention和增强RNN (Attention and Augmented Recurrent Neural Networks)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 女子身高185求职当老师被拒 用人单位:
- 下一篇: 吴京:拍《流浪地球》之前对科幻一无所知