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

本文由集智翻譯小組翻譯

原題:Attention and Augmented Recurrent Neural Networks

作者:Chris Olah / Shan Carter

來源:distill.pub/2016/augmen

如需轉載,請獲授權

上一篇文章 基於注意力機制的四種增強型RNN(上)介紹了基於注意力機制的四種RNN [神經圖靈機、注意力介面、自適應計算時間、神經元程序員(神經元編程器)] 的前兩個,這一篇文章中,我們來了解一下後兩個RNN的工作原理。

1、神經圖靈機

2、注意力介面

3、自適應計算時間

4、神經元程序員

三:自適應計算時間

標準RNN在每個時間步驟執行相同的計算量。 這似乎太不直觀了。 舉個例子來說,人在思考更難的問題時是不是會動更多的腦筋?並且在每個時間步驟執行相同的計算量會限制RNN處理長度為n的列表時的時間複雜度為O(n)。

自適應計算時間[15]是一種讓RNN在每步執行不同計算量的方法。 總體來看,這個想法的主旨很簡單:允許RNN為每個時間步執行多個計算步驟。

為了讓網路學習到需要執行多少個計算步驟,我們希望計算步驟的數量是可微的。 我們使用與之前相同的技巧來實現這一點:即不是直接去確定離散的計算步驟,而是建立一個在計算步驟數量上的注意力分布。 輸出是每個步驟輸出的加權求和。

還有一些細節,在前面的圖表中沒有列出。 下面是三個計算步驟的完整時間步驟圖。

這有點複雜,所以我們一步步的來分析它。在高層,我們依然運行RNN並輸出這些狀態的加權組合:

每一步的權重由「停止神經元(halting neuron)決定」。它是一種監督RNN狀態的「Sigmoid」神經元。停止神經元會給出一個停止權重,這種權重相當於概率,它決定了我們在哪一步停止運行。

我們有一個停止權重為1的總預算,所以我們在頂部跟蹤這個預算。 當它小於「ε」時 ,我們停止。

我們在停止預算小於「ε」時停止,這時我們可能會有一些遺留下來的預算。 我們應該怎麼處理這些預算? 從技術上講,這是給未來步驟的,但我們不想計算這些,所以我們把它歸結到最後一步。

在訓練自適應計算時間模型時,會在損失函數中添加「思考成本」項。 這會根據使用的計算量來給模型施加懲罰。 這個項越大,它就越會權衡性能以降低計算時間。

自適應計算時間是一個非常新的想法,但是我們相信它和其它類似的想法一樣,都是非常重要的。

代碼

目前唯一的自適應計算時間的開源實現似乎是Mark https://github.com/DeNeutoy/act-tensorflow。

四:神經元程序員

神經網路在許多任務中都非常出色,但他們也很難做一些基礎的東西,比如算術題,這對普通的計算方法來說則微不足道。如果能將神經網路與正常編程融合在一起,就兩全其美了。

神經元程序員 [16]是一個這樣的方法:它學習創建程序來解決任務。事實上,它不需要正確的程序的例子,就能學習生成正確的程序。它探索如何以編程為手段,去完成某項任務。

本文中的實際模型通過生成類似SQL的程序來查詢表格,以回答關於表格的問題。但是,這裡有一些細節使得它有點複雜,所以我們首先想像一個稍微簡單的模型,給出一個算術表達式並生成一個程序來評估該表達式。

生成的程序是以一系列操作的形式存在的。每個操作基於過去操作的輸出進行操作。所以一個操作可能是類似於「把兩步之前的操作的輸出和一步之前的操作的輸出相加」這樣的操作。它更像是一個Unix管道,而不是一個分配和讀取變數的程序。

程序由控制器RNN一次生成一個操作。在每個步驟中,控制器RNN輸出概率分布,估計下一個操作是什麼。例如,我們可能有很大的概率確定想要在第一步執行加法,然後有比較小的概率決定是否在第二步中進行乘法或除法,以這樣的模式繼續下去……

每次操作的結果可以被評估。我們不在每一步運行單個操作,而是採用注意力技巧運行所有操作。然後根據執行操作的概率,對操作的輸出值進行加權平均處理。

只要我們可以通過操作來定義導數,就可以根據概率分布來區分出程序的輸出。然後,我們就可以定義一個損失函數來訓練神經網路,以產生可以獲得正確答案的程序。這樣,神經元程序員就不需要參照好的程序,也能學會編程。神經程序員只需要問題答案來監督它的學習。

這就是神經元程序員的核心思想。但這篇論文中的神經元程序員,編寫出的程序只能回答表格問題,而不能解算術題。還有一些不錯的技巧:

  • 多類別:神經元程序員中的許多操作處理標量數以外的類型。一些操作輸出表格列或單元格的選擇。只有相同類型的輸出會合併在一起。
  • 參考輸入:神經元程序員需要回答諸如「有多少城市人口超過100萬?」等問題。為了促進這一點,一些操作允許網路在他們正在回答的問題中引用常量或列的名稱。這種引用發生在指針網路的樣式中[17]。

神經元程序員不是神經網路編程的唯一方法。另一個令人愉悅的方法是神經元程序員 - 解釋器[18],它可以完成一些非常有意思的任務,但需要以正確的程序進行監督。

我們認為,縮小傳統編程與神經網路之間的差距是非常重要的。雖然神經元程序員不是最終的解決方案,但我們還是能從中學到很多。

代碼

用於問題回答(openreview.net/pdf?)的最新版本神經元程序員,已經由其作者開放,可作為TensorFlow模型使用。還有Ken Morishita 用 Keras 框架(github.com/mokemokechic)實現的神經元程序員 - 譯員模型。

光明前景

在某種意義上,有一張紙寫寫畫畫的人比沒有的人更聰明。使用數學符號的人可以解決缺乏數學符號時難以解決的問題。而計算機的使用使我們能夠獲得超乎尋常的卓越功績。

一般來說,似乎有很多有趣的智力形式是人類創造性的啟發式直覺,與一些像語言或方程這樣更為清晰謹慎的媒介之間的相互作用。有時,媒介以物質的形式存在,為我們存儲信息,阻止我們犯錯誤或繁複計算。在其他情況下,媒體是我們大腦里可操縱的模型。無論哪種方式,媒介對智能都很重要。

機器學習的最新研究也開始這麼幹了——把神經網路的直覺和別的東西結合起來。一種方法可以稱為「啟發式搜索」,例如AlphaGo[19],既有一個玩圍棋的模型,它也探索在神經網路直覺的指導下進行遊戲。同樣,DeepMath[20]使用神經網路作為處理數學表達式的「直覺」。我們在本文中提到的「增強型RNN」是另一種方法,將RNN連接到工程媒介,以擴展其通用功能。

與媒體互動,自然涉及到採取行動、觀察以及採取更多行動的序列。這產生了一個重大挑戰:怎樣讓機器學會採取行動?這聽起來像是一個強化學習的問題。基於強化學習的研究正在試圖解決這個問題的最難版本,不過其提出的解決方案難以實際使用。而注意力機制的奇妙之處在於,通過在部分上施加不同程度的注意力來運行所有的行動來解決問題。它有效,因為我們可以設計類似於NTM內存空間的媒介,來允許分數計算和可微。強化學習每次只走一條路,從中學習。而注意力機制則把路口的所有分叉,合而為一。

注意力機制的一個主要弱點是,每一步都要採取一次「行動」。這導致當你增加神經圖靈機中的內存量時,計算成本也會線性增加。對此,想像一下這樣的情景:先分散你的注意力,然後每次我們只需要訪問部分存儲空間。然而,如果你想讓注意力依賴於存儲內容,從而可以輕易的查看每個存儲空間,這仍然很有挑戰。我們已經看到了一些試圖攻克這個問題而做出的嘗試,比如[21],但似乎還有很多工作要做。如果我們真的能夠做出這樣的次線性時間的注意力工作,那將是非常強大的成果!

增強型循環神經網路(RNN),以及作為它們基礎的注意力機制,都令人無比興奮,讓我們拭目以待!

致 謝

感謝Maithra Raghu,Dario Amodei,Cassandra Xia,Luke Vilnis,Anna Goldie,Jesse Engel,DanMané,Natasha Jaques,Emma Pierson和Ian Goodfellow的反饋和鼓勵。也非常感謝我們的Google Brain團隊對項目的大力支持。

參考文獻

  1. Adaptive Computation Time for Recurrent Neural Networks ?Graves, A., 2016. CoRR, Vol abs/1603.08983.

arxiv.org/pdf/1603.0898

  1. Neural Programmer: Inducing Latent Programs with Gradient Descent ?

    Neelakantan, A., Le, Q.V. and Sutskever, I., 2015. CoRR, Vol abs/1511.04834.

arxiv.org/pdf/1511.0483

  1. Pointer networks

    Vinyals, O., Fortunato, M. and Jaitly, N., 2015. Advances in Neural Information Processing Systems, pp. 2692—2700.
  2. Neural Programmer-Interpreters ?Reed, S.E. and Freitas, N.d., 2015. CoRR, Vol abs/1511.06279.

arxiv.org/pdf/1511.0627

  1. Mastering the game of Go with deep neural networks and tree search ?

    Silver, D., Huang, A., Maddison, C.J., Guez, A., Sifre, L., Driessche, G.v.d., Schrittwieser, J., Antonoglou, I., Panneershelvam, V., Lanctot, M., Dieleman, S., Grewe, D., Nham, J., Kalchbrenner, N., Sutskever, I., Lillicrap, T., Leach, M., Kavukcuoglu, K., Graepel, T. and Hassabis, D., 2016. Nature, Vol 529(7587), pp. 484—489. Nature Publishing Group. DOI: 10.1038/nature16961

nature.com/articles/nat

  1. DeepMath - Deep Sequence Models for Premise Selection Alemi, A.A., Chollet, F., Irving, G., Szegedy, C. and Urban, J., 2016. CoRR, Vol abs/1606.04442.

arxiv.org/pdf/1606.0444

  1. Learning Efficient Algorithms with Hierarchical Attentive Memory ?Andrychowicz, M. and Kurach, K., 2016. CoRR, Vol abs/1602.03218.

arxiv.org/pdf/1602.0321


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

關注集智AI學園公眾號

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

搜索微信公眾號:swarmAI

集智AI學園QQ群:426390994

學園網站: campus.swarma.org

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

推薦閱讀:

iBrain 來了:已經在你的 iPhone 里
邏輯與神經之間的橋 (2.0版)
如果用最優的演算法和硬體組一個DOTA2的AI戰隊,人類是不是其對手?

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