基於注意力機制的四種增強型RNN(上)

本文由集智翻譯小組翻譯

原題:Attention and Augmented Recurrent Neural Networks

作者:Chris Olah / Shan Carter

來源:distill.pub/2016/augmen

如需轉載,請獲授權

前言

本文作者是谷歌大腦的兩位研究人員Chris Olah 和 Shan Carter,這篇文章主要介紹了增強RNN的四個研究方向。

循環神經網路是深度學習的重要組成部分,它可以處理文本,音頻和視頻等序列數據,可以歸納一個序列的高級語義,進行語義標註,甚至可以從一個片段生成新的序列!

對原生RNN來說,長序列一直是一個難題。然而,原生RNN的變種 - 長短期記憶網路 (LSTM,long short-term memory networks)[1](本文中[ ]為參考文獻,整理在文末)解決了這個難題。這些RNN模型都是非常強大的,包括在翻譯、語音識別和生成圖像描述在內的許多應用方向上都能取得很好的效果。也因此,循環神經網路在最近幾年變得非常流行。

因為RNN非常流行,所以越來越多的人開始嘗試用新的方法來強化RNN。這裡有四個方向尤其引人矚目:

從左到右依次為:神經圖靈機、注意力介面、自適應計算時間、神經元程序員(神經元編程器)

單獨而言,這些技術都是針對RNN的強有力擴展,但真正令人驚訝的是,這些技術可以結合起來,並且可以預見RNN的可增強性遠不僅限於此。此外,它們都基於相同的技巧——即所謂的注意力機制。

我們推測,這些「增強型RNN」將在擴展深度學習的潛在能力方面發揮重要作用。

一、神經圖靈機

神經圖靈機 [2]將RNN與外部存儲器組合在一起。由於向量是神經網路的語言,所以神經圖靈機中存儲的實際上就是一組向量(即下圖中的小箭頭):

那麼讀寫操作究竟該如何進行?問題的重點在於如何使讀寫操作「可微(分)」。尤其是我們想讓它們關於我們的讀寫位置可微,這樣系統才可以「學習」在哪裡進行讀寫操作。這似乎很難辦,因為存儲地址似乎根本上就是離散的。對此NTM採取了一個非常聰明的解決方案:每一步,它們在每一處都進行讀寫,只是讀寫的程度不同。

舉個例子,讓我們先來看看「讀」操作。不同於單獨指定一個位置,RNN輸出一個「注意力分布」,來描述我們對存儲空間各位置的不同重視程度。也就是說,「讀」操作的結果就是每個存儲內容的加權求和。

(這點我們可以從下面的動圖中看到,滑鼠划過「attention」相當於給「memory」施加不同的權重,顏色越深權重越大。「讀」操作最終的輸出(即小箭頭方向與長度)是由「memory」各存儲空間加權求和得到的。)

相似地,「寫」操作也是以不同的程度同時寫所有的存儲空間。同樣,注意力分布描述了我們在每個存儲位置寫的程度(權重)。這樣內存中某個位置的新值(new memory)是舊內存內容(old memory)和寫入值(write value)的凸組合,兩者之間的距離由注意力權重(attention)所定。從下面的動圖中你可以觀察到不同的注意力權重對寫入值的影響。

但是神經圖靈機(以下簡稱NTM)要如何判定在哪個位置集中注意力(分配更大的權重)呢?實際上它結合了兩種不同的方法:基於內容的注意力和基於位置的注意力。基於內容的注意力允許NTM搜索記憶並專註於它所尋找的位置。而基於位置的注意力允許在記憶中進行相對位移,從而使NTM能夠執行循環操作。

這種讀寫能力允許NTM執行許多簡單的演算法,使其能力遠遠超過普通的神經網路。例如,它們可以學習在記憶中存儲一個長序列(相當於程序代碼),然後循環(執行),重複地循環(執行)。當它們這樣做的時候,我們可以觀察它們的讀寫操作,以更好地理解它們究竟在做什麼。

它們也可以學習模仿一個查找表格,甚至學會對數字進行排序(這點目前實現的還不完美)!另一方面,它他們仍有許多不足,比如不能做加法或乘法。

自從NTM的原始文章發表以來,已經有一些論文在探索類似的方向。神經GPU( Neural GPU)[4] 解決了NTM無法加和乘的問題。 Zaremba&Sutskever [5]另闢蹊徑使用強化學習來訓練NTM,而不是使用「可微分」的讀/寫操作。還有基於指針的神經隨機讀寫機(Neural Random Access Machines)。一些論文探討了可微分的數據結構,如堆棧和隊列[7,8]。還有存儲網路(memory networks)[9,10] 也是另一種解決類似問題的方法。

在某種客觀的意義上,這些模型能夠執行的許多任務,例如學習如何做加法運算,並不是很困難。一些老牌的程序社區可以很輕易的解決這些問題。總體來說神經網路能幹的還不僅限於此,而像神經圖靈機這樣的模型的意義就在於,它們似乎已經突破了傳統神經網路的能力限制。

代碼

這些模型有許多開源實現。神經圖靈機的開源實現包括Taehoon Kim』s (TensorFlow)github.com/carpedm20/NT, Shawn Tan』s (Theano)github.com/shawntan/neu, Fumin』s (Go)github.com/fumin/ntm, Kai Sheng Tai』s (Torch)github.com/kaishengtai/, and Snip』s (Lasagne)github.com/snipsco/ntm- 。神經GPU代碼是開源的,放在TensorFlow模型庫中。存儲網路的開源實現包括Facebook(Torch / Matlab)github.com/facebook/Mem,YerevaNN(Theano)github.com/YerevaNN/Dyn和Taehoon https://github.com/carpedm20/MemN2N-tensorflow。

二、注意力介面

當我翻譯一個句子時,我特別注意我正在翻譯的這個詞。 當我錄製錄音時,我會仔細聆聽我正在奮筆疾書的片段。 如果你讓我描述我現在所處的房間,那麼我會在我描述的那些物體上四處瀏覽。

神經網路可以使用注意力來實現這種類似的行為,並將注意力集中在所給出信息的一部分子集上。 例如,RNN可以參與另一個RNN的輸出。 在每個時間步,它集中在另一個RNN的不同位置。

我們希望注意力是可微分的,以便我們可以學習到應該在哪裡集中注意力。 要做到這一點,我們使用與神經圖靈機相同的技巧:我們集中(注意力)在任何地方,只是程度不同而已。

注意力分布通常是在基於內容的注意力機制上產生的。 主管注意力的RNN生成一個描述它想要關注的問題的權重向量。 每個輸入元素都和剛才計算出來的權值向量相乘得到一個表示匹配程度的分數,這些分數通過 softmax 歸一化後產生注意力分布。

基於注意力的RNN的一個重要用途就是機器翻譯[11]。 傳統的序列到序列模型必須將整個輸入歸納成單個向量,然後再將其展開。 注意力規避了這種做法,它讓RNN沿著它看見的每個單詞信息來處理輸入,然後讓RNN生成輸出,來關注到具有相關性的單詞上。

這種注意力的其他用途包括解析文本[13],它允許模型在瀏覽單詞時生成解析樹。另外在對話系統(模型)[14]中,它讓模型可以基於前面的對話內容來生成後面的回復。

注意力也可以用在CNN(卷積神經網路)和RNN之間的介面上。 這允許RNN在每一步「注意到」圖像的不同位置。 這種注意力機制的一個非常流行的應用是給圖像生成描述。 首先,用一個卷積網路處理圖像,提取高級特徵。 然後運行一個RNN,生成圖像的描述。 RNN會將注意力集中在卷積網路「理解」到的不同部分上,然後生成描述。 我們可以把這個過程可視化出來:

更廣泛地說,當想要與輸出中具有重複結構的神經網路配合時,都可以使用注意力介面。

注意力介面被認為是一個非常通用和強大的技術,並且正在變得越來越普遍。

由於篇幅限制,我們明天將在《基於注意力機制的四種增強型RNN(下)》中分享後兩種類型的RNN。

See U~

參考文獻

部分附有網址

  1. Understanding LSTM Networks ?Olah, C., 2015.

colah.github.io/posts/2

  1. Neural Turing Machines Graves, A., Wayne, G. and Danihelka, I., 2014. CoRR, Vol abs/1410.5401.

arxiv.org/pdf/1410.5401

  1. Show, attend and tell: Neural image caption generation with visual attention

    Xu, K., Ba, J., Kiros, R., Cho, K., Courville, A., Salakhutdinov, R., Zemel, R.S. and Bengio, Y., 2015. arXiv preprint arXiv:1502.03044, Vol 2(3), pp. 5. CoRR.
  2. Neural GPUs Learn Algorithms Kaiser, L. and Sutskever, I., 2015. CoRR, Vol abs/1511.08228.

arxiv.org/pdf/1511.0822

  1. Reinforcement Learning Neural Turing Machines Zaremba, W. and Sutskever, I., 2015. CoRR, Vol abs/1505.00521.

arxiv.org/pdf/1505.0052

  1. Neural Random-Access Machines ?[Kurach, K., Andrychowicz, M. and Sutskever, I., 2015. CoRR, Vol abs/1511.06392.

arxiv.org/pdf/1511.0639

  1. Learning to Transduce with Unbounded Memory ?[PDF]

    Grefenstette, E., Hermann, K.M., Suleyman, M. and Blunsom, P., 2015. Advances in Neural Information Processing Systems 28, pp. 1828—1836. Curran Associates, Inc.

papers.nips.cc/paper/56

  1. Inferring Algorithmic Patterns with Stack-Augmented Recurrent Nets

    Joulin, A. and Mikolov, T., 2015. Advances in Neural Information Processing Systems 28, pp. 190—198. Curran Associates, Inc.

papers.nips.cc/paper/58

  1. Memory Networks ?Weston, J., Chopra, S. and Bordes, A., 2014. CoRR, Vol abs/1410.3916.

arxiv.org/pdf/1410.3916

  1. Ask Me Anything: Dynamic Memory Networks for Natural Language Processing Kumar, A., Irsoy, O., Su, J., Bradbury, J., English, R., Pierce, B., Ondruska, P., Gulrajani, I. and Socher, R., 2015. CoRR, Vol abs/1506.07285.

arxiv.org/pdf/1506.0728

  1. Neural machine translation by jointly learning to align and translate

    Bahdanau, D., Cho, K. and Bengio, Y., 2014. arXiv preprint arXiv:1409.0473.
  2. Listen, Attend and Spell ?Chan, W., Jaitly, N., Le, Q.V. and Vinyals, O., 2015. CoRR, Vol abs/1508.01211.

arxiv.org/pdf/1508.0121

  1. Grammar as a foreign language

    Vinyals, O., Kaiser, L., Koo, T., Petrov, S., Sutskever, I. and Hinton, G., 2015. Advances in Neural Information Processing Systems, pp. 2773—2781.
  2. A Neural Conversational Model Vinyals, O. and Le, Q.V., 2015. CoRR, Vol abs/1506.05869.

arxiv.org/pdf/1506.0586


如果您有任何關於Pytorch方面的問題,歡迎進【集智—清華】火炬群與大家交流探討,添加集智小助手微信swarmaAI,備註(pytorch交流群),小助手會拉你入群。

關注集智AI學園公眾號

獲取更多更有趣的AI教程吧!

搜索微信公眾號:swarmAI

集智AI學園QQ群:426390994

學園網站: campus.swarma.org

weixin.qq.com/r/FzpGXp3 (二維碼自動識別)

推薦閱讀:

CS231n課程筆記翻譯:神經網路筆記1(下)
大咖來信|李開復:美國AI見聞錄
神經網路知識基礎:七種網路單元,四種層連接方式
智能化「AI+」 對CUI的挑戰

TAG:RNN | 人工智能 | 人工智能算法 |