摘要:它可以用來做語音識別,使得一個處理語音,另一個瀏覽它,使其在生成文本時可以集中在相關的部分上。它對模型使用的計算量予以處罰。
本文的作者是 Google Brain 的兩位研究者 Chris Olah 和 Shan Carter,重點介紹了注意力和增強循環神經網絡,他們認為未來幾年這些「增強 RNN(augmented RNN)」將在深度學習能力擴展中發揮重要的作用。
循環神經網絡(recurrent neural networks)是深度學習的重要組成部分,讓神經網絡可以處理諸如文本、音頻和視頻等序列數據。它們可被用來做序列的高層語義理解、序列標記,甚至可以從一個片段生產新的序列!
基本的 RNN 結構難以處理長序列,然而一種特殊的 RNN 變種即「長短時記憶模型(LSTM)」網絡可以很好地處理長序列問題。這種模型能力強大,能在翻譯、語音識別和圖像描述等眾多任務中均取得里程碑式的效果。因而,循環神經網絡在最近幾年已經得到了廣泛使用。
正如所發生的一樣,我們看到給 RNN 添加新性能的研究工作越來越多。其中有四個特別突出的方向非常激動人心:
這些技術都是 RNN 非常有效的擴展,但真正引人注目的是它們可以有效地組合起來,而且似乎正要進入一片更為廣闊的天地。此外,它們都依賴于注意力(attention)這樣一種同樣基礎的技術才能有效。
我們認為未來幾年這些「增強 RNN(augmented RNN)」將在深度學習能力擴展中發揮重要的作用。
神經圖靈機
神經圖靈機(Graves, et al., 2014)是一個 RNN 和一個外部存儲庫的結合。由于向量(vector)是神經網絡的自然語言,所以這個記憶是一個向量數組:
但是,讀和寫是怎么工作的呢?其難點在于我們想讓它們可微分(differentiable)。尤其是,我們想讓它們對于我們讀或寫的位置是可微的,以使得我們可以學習讀和寫的位置。這是棘手的,因為內存地址似乎從根本上就是離散的。神經圖靈機(NTM)運用了一種非常聰明的解決方案:在每一步,它們以不同程度在所有地方都進行讀和寫。
讓我們舉一個關于讀的例子。RNN 給出一個「注意力分配」來描述我們在所關心的不同記憶位置展開多少,而不是指定一個位置。因此,讀操作的結果是一個加權和(weighted sum)。
同樣地,我們以不同程度同時在所有地方執行寫操作。同時一個注意力分布描述了我們在每個位置寫的多少。我們通過獲得一個存儲位置中的新的值來實現這一點,這個值是由舊記憶和寫入值與由注意力權重決定的兩者之間位置的凸組合。
但是,NTMs 如何決定應該關注記憶中的哪些位置呢?實際上,他們使用了兩種方法的組合:基于內容的注意力和基于位置的注意力。基于內容的注意力使 NTMs 可以在記憶中查找并關注與那些與查找相匹配的地方,而基于位置的注意力可以實現記憶中的相對運動,從而使 NTM 可以循環。
這種讀寫能力使得 NTMs 可以執行許多簡單的算法,超越以前的神經網絡。例如,它們可以學習在記憶中存儲一個長序列,然后循環它,不斷回答指令。當它們做這些時,我們可以看他們讀寫的位置,以更好地了解他們在做什么:
他們也可以學習模仿一個查閱表,甚至學習排序(盡管他們有些作弊)!在另一方面,他們始終不能做數字加法、乘法等許多基本的事情。
從原始的 NTM 論文開始,已經有許多令人振奮的論文探討相似的方向。神經 GPU(Kaiser & Sutskever,2015)克服 NTM 無法處理數字加法和乘法的問題。Zaremba & Sutskever 在 2016 年采用強化學習來訓練 NTMs,而不是原始的可微的讀/寫。神經隨機存取機 (Kurach et al., 2015) 基于指針工作。一些論文已經探討可微的數據結構,如堆棧和隊列 (Grefenstette et al. 2015; Joulin & Mikolov, 2015)。另外,記憶網絡 (Weston et al., 2014; Kumar et al., 2015) 是攻克類似問題的另一種方式。
在某些客觀意義上,這些模型可執行許多任務,如學習如何做數字加法,都不是很難。對傳統的程序合成領域來說只是小菜一碟。但是神經網絡可以做許多其他事情,而像神經圖靈機這樣的模型似乎已經打破了對它們能力的極大限制。
代碼
有一些實現這些模型的開源代碼。神經圖靈機的開源實現包括 Taehoon Kim (TensorFlow)、Shawn Tan (Theano)、Fumin (Go)、Kai Sheng Tai (Torch)、和 Snip (Lasagne) 做的部署。神經 GPU 公開版的代碼是開源的,并放在 TensorFlow 模型庫。記憶網絡的開源實現包括 Facebook (Torch/Matlab)、YerevaNN (Theano)、和 Taehoon Kim (TensorFlow)。
注意力接口
當我翻譯一個句子時,我會尤其關注于我正在翻譯的單詞。當我轉錄一個音頻,我會仔細聽我正在寫的那一段。如果你讓我來描述我所坐的房間,我會隨時把目光轉移到我正在描述的物體上。
神經網絡可以通過注意力來實現同樣的行為——關注所收到信息子集的一部分。例如,一個 RNN 參與另一個網絡的輸出。在每一個時間步驟,它會關注于另一個 RNN 的不同位置。
我們希望注意力是可微的,這樣我們就可以學習關注哪里。為了做這個,我們使用了和神經圖靈機中一樣的 trick:關注所有位置,只是程度不一樣。
通常是使用基于內容的注意力生成注意力分布。參與的 RNN 會生成一個描述它想關注內容的查詢。每一個條目和這個查詢做點乘來產生一個分數,這個分數描述這個條目與查詢匹配程度。這些分數被輸入一個 softmax 來生成注意力分布。
RNNs 之間注意力的一個應用是翻譯 (Bahdanau, et al. 2014)。一個傳統的序列到序列模型需要將整個輸入抽象成一個向量,然后將它展開回復出來。注意力規避了這種做法,它讓 RNN 沿著它看見的每個單詞信息來處理輸入,然后讓 RNN 生成輸出來關注到具有相關性的單詞上。
Diagram derived from Fig. 3 of Bahdanau, et al. 2014
這種 RNNs 之間的注意力有許多其他應用。它可以用來做語音識別 (Chan, et al. 2015),使得一個 RNN 處理語音,另一個 RNN 瀏覽它,使其在生成文本時可以集中在相關的部分上。
這種注意力的其他應用包括:文本解析 (Vinyals, et al., 2014),它使模型在生成解析樹時能瀏覽單詞;對話建模 (Vinyals & Le, 2015),使模型在生成響應時關注于對話的前面部分。
注意力同樣可以用在卷積神經網絡和 RNN 的接口。它使得 RNN 在每一步可以觀察一張圖像的不同位置。這種記憶力的一個流行應用就是圖片描述(image captioning)。首先,一個卷積網絡處理圖片提取高層特征。然后一個 RNN 開始運營,生成一段對圖像的描述。在生成這個描述的每一個單詞時,RNN 關注于圖像相關部分的卷積網絡解釋。如下圖:
更廣泛地說,當希望與一個在輸出具有重復結構的神經網絡交互時,注意力接口都可以被采用。
我們發現,注意力接口已經是一個非常普遍和強大的技術,并且正變得越來越普遍。
自適應計算時間
標準 RNN 在每一個時間步驟完成相同的計算量。這看起來不是很直觀。一個人當然在問題變得困難的時候思考的更多,不是么?這也限制了 RNN 在 長度為 n 的鏈表上完成 O(n) 的運算。
自適應計算時間(Graves,2016),是讓 RNN 在每一步有不同計算量的方式。核心想法很簡單:允許 RNN 在每一時間步驟做多個計算步驟。
為了讓網絡學習有多少步驟要做,我們想要步驟的數量是可微分的。我們采用之前用過的技巧完成這項任務:不再是決定運行不連續數量的步驟,而是有一個在運行步驟數量上的注意分布。輸出是每個步驟輸出的加權求和。
有一些細節在先前的圖解中被忽視了。這兒是一個完整的、包含一個時間步驟、三個計算步驟的圖解。
這里稍有些復雜,所以讓我們一步一步解決。在高層次上,我們仍運行著 RNN,并輸出狀態的加權求和:
每一步的權值由「阻止神經元(halting neuron)」所決定。它是一個考察 RNN 狀態的 S 型神經元,并產生一個阻止權值,我們可以認為這個權值是我們應該在那個步驟停下來的概率。
我們對于阻止權重(halting weight)為 1 的有總預算,所以我們順著頂層跟蹤這個預算。當這個值小于 epsilon,我們停止。
由于我們是當預算值小于 epsilon 的時候停止,當我們停止時可能會剩余一些阻止預算(halting budget)。我們應該用它做什么呢?技術上,它應被賦予給未來的步驟,但是我們不想計算那些,所以我們將它歸屬于最后一個步驟。
當在訓練自適應計算時間模型時,有人在成本函數中增加了「考慮成本(ponder cost)」這一術語。它對模型使用的計算量予以處罰。這個值越大,在性能和降低計算時間進行更多地權衡。
自適應計算時間是非常新的想法,但是我們相信,與其他類似的想法一樣,它們都將是非常重要的想法。
代碼
如今,部署自適應計算時間的一個開源,看起來是 Mark Neumann(https://github.com/DeNeutoy/act-tensorflow)做的。(TensorFlow)
神經編程器(Neural Programmer)
神經網絡在許多任務上表現出色,但是它們也在努力做一些基礎事情,例如用普通方法計算很瑣碎的算數。如果有一種方式能融合神經網絡與普通的編程,并吸收各自較好的東西,那真是太好了。
神經編程器(Neelakantan,et al.,2015)是其中一種方式。為了解決一項任務,它學習創建程序。事實上,在不需要正確的程序樣本的情況下,它學習生成這樣的程序。它發現如何生產程序,并把它作為完成任務的手段。
論文中的實際模型回答了關于產生類 SQL 的程序查詢表格的問題。然而,這有很多的細節使得這個問題稍有些復雜,所以讓我們從想象一個稍簡單的模型開始,給定一個算術表達式,并生成一個程序對其進行評估。
生成程序是一系列的運算。每個運算被定義為在上個運算輸出上做運算。所以一個運算可能是例如「在兩個步驟前的輸出運算和一個步驟前的輸出運算相加」這樣的事情。這相比與一個有著可被賦值與讀取的變量的程序,更像是 Unix 中的管道(pipe)。
程序挨次通過控制器 RNN 生成一個運算。在每一步,控制器 RNN 輸出一個概率分布,決定下一個運算該是什么。例如,我們可能非常確定我們想要在第一個步驟執行加法,然后要有有一個艱難的時間決定第二步我們應該是乘法還是除法,等等下去......
運算上的結果分布可被評估。不再是在每一步運行單個運算,如今我們采用常見的注意技巧運行所有運算,之后平均所有輸出,通過我們運行這些運算的概率對其加權。
只要我們通過該運算能夠定義導數,關于概率的程序輸出就是可微分的。之后我們就能定義損失,并訓練神經網絡生成得到正確答案的程序。在這種方式中,神經編程器在沒有正確程序樣本的情況下學習產生程序。的監督是程序應該得到的答案。
這就是神經編程器的核心觀點,但論文中回答的是關于表格的問題,而不是數學表達式的問題。下面是一些額外的靈活技巧:
多類別:神經編程器中的很多預算都是處理類型而不是標量數。一些運算輸出表格中選中的列或是選中的單元。只有輸出相同類型的會合并在一起。
基準輸入:在給定人口的城市表格情況下,神經編程器需要回答例如「有多少城市人口超過 1000000?」這樣的問題。為了使這項任務更容易,一些運算允許網絡參考它們正在回答的問題或是類名中的常量。參考通過注意機制以指針網絡的形式(Vinyals,et al.,2015)而產生。
神經編程器不是讓神經網絡生成程序的方式。另一個令人愉快的方式是神經編程器——解釋器(Neural Programmer-Interpreter,Reed & de Freitas,2015),它能夠完成許多非常有趣的任務,但是形式上需要正確程序的監督。
我們認為縮小傳統編程與神經網絡之間的差距是極其重要的。雖然神經編程器顯然不是最終的解決方案,但我們認為從它之中能學習到許多重要的思路。
代碼
現在看起來沒有任何神經編程器的開源部署,但是有一個 Ken Morishita(https://github.com/mokemokechicken/keras_npi)部署的神經編程器——解釋器。(Keras)
巨大的藍圖
擁有一張紙的人在某些意義上比沒有的人要更聰明。會使用數字符號的人可以解決一些問題,反之則不然。使用計算機可以使我們掌握超越自身的令人難以置信的技能。
總之,智能很多有趣的形式是人類富有創造力和啟發性的直覺與更加脆弱細致的媒介(就像語言和方程式)之間的交互。有時,媒介是物理實體,保存我們的信息,防止我們犯錯誤,或者處理繁重的計算任務。另一方面,媒介是我們可以控制的大腦里的模型。無論哪種方式,它看起來都是智能的深厚基礎。
最近在機器學習的研究結果已經開始呈現這種趨勢,將神經網絡的直覺與其他事物結合起來。有一種被稱為「啟發式搜索」的方法。例如,AlphaGo(Silver,et al.,2016)有個關于圍棋如何運作的模型,并探索如何在神經網絡的直覺指引下完成比賽。相似的,DeepMath(Alemi,et al.,2016)把神經網絡作為對處理數學公式的直覺。我們在這篇文章中談到的「增強遞歸神經網絡」是另一種方式,我們將 RNNs 連接到工程媒介來延伸它們的通用能力。
與媒介自然交互涉及到采取行動、觀察、采取更多行動等一系列操作。這給我們帶來一項重大挑戰——我們如何學習采取哪種行動?這看起來像是一個強化學習問題,我們將毫無疑問采用那種方式。但強化學習的研究確實正在攻克最難的問題,它的解決方案很難用。而注意力的絕妙支出在于它提供給我們一個更容易的方式,通過部分的在不同程度上采取所有去解決這個問題。在這種方法下,我們能夠設計媒介——例如 NTM 存儲器——允許分數運算以及可微。強化學習讓我們走向單一道路,并嘗試從中學習。而注意力會嘗試岔路口的每一個方向,并將道路合并到一起。
注意力的一個主要弱點是我們必須完成每步中的每個「行動」。當一個神經圖靈機中的記憶量增加時,計算開銷會呈線性增長。對此你可以想到一個解決方案,即讓你的注意力變得稀疏,這樣你就可以只接觸到一些記憶。然而這仍然是個挑戰,因為你可能希望你的注意力完全基于記憶內容,以使你可以輕易的觀察到每一個記憶。我們已經觀察到一些可以攻克這個問題的初步嘗試,例如 Andrychowicz & kurach 所提出的方法,但看起來還有更多的事情要去做。如果我們確實能做到類似次線性時間注意力工作,那將非常強大!
增強式遞歸神經網絡,以及注意力的潛在技術,是非常令人激動的。我們期待看到接下來會發生什么。
參考文獻:
Alemi, A. A., Chollet, F., Irving, G., Szegedy, C., & Urban, J. (2016). DeepMath-Deep Sequence Models for Premise Selection. arXiv preprint arXiv:1606.04442.
Andrychowicz, M., & Kurach, K. (2016). Learning Efficient Algorithms with Hierarchical Attentive Memory. arXiv preprint arXiv:1602.03218.
Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.
Chan, W., Jaitly, N., Le, Q. V., & Vinyals, O. (2015). Listen, attend and spell. arXiv preprint arXiv:1508.01211.
Graves, A., Wayne, G., & Danihelka, I. (2014). Neural turing machines. arXiv preprint arXiv:1410.5401.
Graves, A. (2016). Adaptive Computation Time for Recurrent Neural Networks. arXiv preprint arXiv:1603.08983.
Grefenstette, E., Hermann, K. M., Suleyman, M., & Blunsom, P. (2015). Learning to transduce with unbounded memory. In Advances in Neural Information Processing Systems (pp. 1828-1836).
Joulin, A., & Mikolov, T. (2015). Inferring algorithmic patterns with stack-augmented recurrent nets. In Advances in Neural Information Processing Systems (pp. 190-198).
Kaiser, ?., & Sutskever, I. (2015). Neural gpus learn algorithms. arXiv preprint arXiv:1511.08228.
Kumar, A., Irsoy, O., Su, J., Bradbury, J., English, R., Pierce, B., Ondruska, P., Gulrajani, I. & Socher, R., (2015). Ask me anything: Dynamic memory networks for natural language processing. arXiv preprint arXiv:1506.07285.
Kurach, K., Andrychowicz, M., & Sutskever, I. (2015). Neural random-access machines. arXiv preprint arXiv:1511.06392.
Neelakantan, A., Le, Q. V., & Sutskever, I. (2015). Neural programmer: Inducing latent programs with gradient descent. arXiv preprint arXiv:1511.04834.
Olah, C. (2015). Understanding LSTM Networks.
Reed, S., & de Freitas, N. (2015). Neural programmer-interpreters. arXiv preprint arXiv:1511.06279.
Silver, D., Huang, A., Maddison, C.J., Guez, A., Sifre, L., Van Den Driessche, G., Schrittwieser, J., Antonoglou, I., Panneershelvam, V., Lanctot, M. & Dieleman, S. (2016). Mastering the game of Go with deep neural networks and tree search. Nature, 529(7587), 484-489.
Vinyals, O., Kaiser, ?., Koo, T., Petrov, S., Sutskever, I., & Hinton, G. (2015). Grammar as a foreign language. In Advances in Neural Information Processing Systems (pp. 2773-2781).Vinyals, O., & Le, Q. (2015). A neural conversational model. arXiv preprint arXiv:1506.05869.
Vinyals, O., Fortunato, M., & Jaitly, N. (2015). Pointer networks. In Advances in Neural Information Processing Systems (pp. 2692-2700).
Weston, J., Chopra, S., & Bordes, A. (2014). Memory networks. arXiv preprint arXiv:1410.3916.
Xu, K., Ba, J., Kiros, R., Cho, K., Courville, A., Salakhutdinov, R., Zemel, R.S. & Bengio, Y., 2015. (2015). Show, attend and tell: Neural image caption generation with visual attention. arXiv preprint arXiv:1502.03044, 2(3), 5.
Zaremba, W., & Sutskever, I. (2015). Reinforcement learning neural Turing machines. arXiv preprint arXiv:1505.00521, 362.
歡迎加入本站公開興趣群商業智能與數據分析群
興趣范圍包括各種讓數據產生價值的辦法,實際應用案例分享與討論,分析工具,ETL工具,數據倉庫,數據挖掘工具,報表系統等全方位知識
QQ群:81035754
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/4398.html
摘要:監督學習里典型的例子就是。這聽起來似乎有點不可思議,但是在我們自身認識世界的過程中很多處都用到了無監督學習。增強學習背后的人工智能深度學習原理初探 CNN http://blog.csdn.net/darkprin... http://blog.csdn.net/darkprin... http://blog.csdn.net/darkprin... http://blog.csdn....
摘要:監督學習里典型的例子就是。這聽起來似乎有點不可思議,但是在我們自身認識世界的過程中很多處都用到了無監督學習。增強學習背后的人工智能深度學習原理初探 CNN http://blog.csdn.net/darkprin... http://blog.csdn.net/darkprin... http://blog.csdn.net/darkprin... http://blog.csdn....
摘要:一時之間,深度學習備受追捧。百度等等公司紛紛開始大量的投入深度學習的應用研究。極驗驗證就是將深度學習應用于網絡安全防御,通過深度學習建模學習人類與機器的行為特征,來區別人與機器,防止惡意程序對網站進行垃圾注冊,撞庫登錄等。 2006年Geoffery ?Hinton提出了深度學習(多層神經網絡),并在2012年的ImageNet競賽中有非凡的表現,以15.3%的Top-5錯誤率奪魁,比利用傳...
閱讀 3107·2021-09-22 15:54
閱讀 3995·2021-09-09 11:34
閱讀 1777·2019-08-30 12:48
閱讀 1167·2019-08-30 11:18
閱讀 3439·2019-08-26 11:48
閱讀 922·2019-08-23 17:50
閱讀 2124·2019-08-23 17:17
閱讀 1248·2019-08-23 17:12