熱線電話:13121318867

登錄
首頁精彩閱讀深度學習之增強遞歸神經網絡來了
深度學習之增強遞歸神經網絡來了
2019-10-12
收藏
<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

作者|Olah & Carter

編譯|CDA數據分析師

Attention and Augmented Recurrent Neural Networks

循環神經網絡深度學習的主要內容之一,允許神經網絡處理文本,音頻和視頻等數據序列。它們可用于將序列分解為高級理解,注釋序列,甚至從頭開始生成新序列!

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

基本的RNN設計與較長的序列相悖,但是一種特殊的變體 - “長期短期記憶”網絡 - 甚至可以使用這些。已經發現這樣的模型非常強大,在許多任務中實現了顯著的結果,包括翻譯,語音識別和圖像字幕。結果,在過去幾年中,遞歸神經網絡變得非常普遍。

在發生這種情況時,我們已經看到越來越多的嘗試用新屬性來增強RNN。四個方向特別令人興奮:

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

單獨地,這些技術都是RNN的有力擴展,但真正引人注目的是它們可以組合在一起,而且似乎只是在更廣闊的空間中得分。此外,它們都依賴于相同的潛在技巧 - 一種叫做注意力的工作。

我們的猜測是,這些“增強型RNN”將在未來幾年擴展深度學習能力方面發揮重要作用。

神經圖靈機

神經圖靈機將RNN與外部存儲器組合在一起。由于向量是神經網絡的自然語言,因此內存是向量數組:

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

但閱讀和寫作如何運作?挑戰在于我們希望使它們具有差異性。特別是,我們希望使它們在我們讀取或寫入的位置方面具有可區分性,以便我們可以了解讀寫的位置。這很棘手,因為內存地址似乎基本上是離散的。NTM為此采取了一個非常聰明的解決方案:每一步,它們在任何地方讀寫,只是在不同程度上。

作為一個例子,讓我們專注于閱讀。RNN不是指定單個位置,而是輸出“注意力分布”,描述我們如何分散我們關心不同記憶位置的量。因此,讀取操作的結果是加權和。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

同樣,我們一次到不同程度地寫到處。同樣,注意力分布描述了我們在每個位置寫了多少。我們通過使存儲器中的位置的新值成為舊存儲器內容和寫入值的凸起組合來實現這一點,其中兩者之間的位置由注意力量決定。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

但是,NTM如何決定將記憶中的哪些位置集中注意力?它們實際上使用兩種不同方法的組合:基于內容的注意力和基于位置的注意力?;趦热莸年P注允許NTM搜索他們的內存并專注于與他們正在尋找的內容匹配的位置,而基于位置的注意允許內存中的相對移動,使NTM循環。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

這種讀寫功能允許NTM執行許多以前超出神經網絡的簡單算法。例如,他們可以學習在內存中存儲一個長序列,然后循環遍歷它,重復重復它。當他們這樣做時,我們可以看到他們讀寫的地方,以便更好地了解他們正在做的事情:

他們還可以學習模仿查找表,甚至學習排序數字(盡管他們有點欺騙)!另一方面,他們仍然不能做很多基本的事情,比如加或加數。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

自最初的NTM論文以來,已有許多令人興奮的論文探索類似的方向。神經GPU克服了NTM無法增加和增加數字的問題。 Zaremba和Sutskever 訓練NTM使用強化學習而不是原始使用的可微分讀/寫。神經隨機存取機基于指針的工作。一些論文探討了可區分的數據結構,如堆棧和隊列。和內存網絡是另一種攻擊類似問題的方法。

在某種客觀意義上,這些模型可以執行的許多任務 - 例如學習如何添加數字 - 并不客觀地難以實現。傳統的節目綜合社區將在午餐時吃它們。但是神經網絡還有許多其他功能,像神經圖靈機這樣的模型似乎已經對他們的能力產生了極大的限制。

代碼

這些模型有許多開源實現。神經圖靈機的開源實現包括Taehoon Kim(TensorFlow),Shawn Tan(Theano),Fumin(Go),Kai Sheng Tai(火炬)和Snip(Lasagne)。神經GPU出版物的代碼是開源的,并放在TensorFlow模型庫中。Memory Networks的開源實現包括Facebook(Torch / Matlab),YerevaNN(Theano)和Taehoon Kim(TensorFlow)。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

注意接口

當我翻譯一個句子時,我特別注意我正在翻譯的這個詞。當我正在錄制錄音時,我會仔細聆聽我正在積極寫下的片段。如果你讓我描述我正坐在那里的房間,我會瞥一眼我正在描述的物體。

神經網絡可以使用注意力實現相同的行為,專注于他們給出的信息子集的一部分。例如,RNN可以通過另一個RNN的輸出參加。在每個時間步,它側重于其他RNN中的不同位置。

我們希望注意力是可以區分的,這樣我們就可以學會在哪里集中注意力。要做到這一點,我們使用神經圖靈機使用的相同技巧:我們專注于各處,只是不同程度。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

注意力分布通常是基于內容的注意力產生的。出席的RNN生成描述其想要關注的內容的查詢。每個項目都使用查詢進行點生成,以生成分數,描述它與查詢的匹配程度。將得分輸入softmax以產生注意力分布。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

RNN之間關注的一個用途是翻譯 。傳統的序列到序列模型必須將整個輸入分解為單個向量,然后將其擴展回來。注意通過允許RNN處理輸入傳遞關于它看到的每個單詞的信息來避免這種情況,然后RNN生成輸出以在它們變得相關時關注單詞。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

RNN之間的這種關注還有許多其他應用。它可以用于語音識別,允許一個RNN處理音頻,然后讓另一個RNN略過它,在生成成績單時關注相關部分。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

這種關注的其他用途包括解析文本 ,它允許模型在生成解析樹時瀏覽單詞,以及進行對話建模 ,它讓模型在生成響應時關注對話的前面部分。

注意也可以用在卷積神經網絡RNN之間的接口上。這允許RNN每一步都查看圖像的不同位置。這種關注的一種流行用途是用于圖像字幕。首先,conv網絡處理圖像,提取高級特征。然后運行RNN,生成圖像的描述。由于它在描述中生成每個單詞,RNN側重于conv網對圖像相關部分的解釋。我們可以明確地想象這個:

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

更廣泛地說,只要想要與其輸出中具有重復結構的神經網絡接口,就可以使用注意界面。

已經發現注意界面是一種非常通用且功能強大的技術,并且正變得越來越普遍。

自適應計算時間

標準RNN對每個時間步進行相同的計算量。這似乎不直觀。當事情艱難時,人們應該多考慮一下嗎?它還限制RNN對長度為n的列表進行O(n)運算。

自適應計算時間是RNN每步執行不同計算量的一種方法。全局的想法很簡單:允許RNN為每個時間步進行多個計算步驟。

為了讓網絡了解要執行的步驟數,我們希望步數可以區分。我們使用之前使用的相同技巧實現了這一點:我們不是決定運行一系列離散步驟,而是通過運行步驟數來分配注意力。輸出是每個步驟的輸出的加權組合。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

還有一些細節,在上圖中省略了。這是一個包含三個計算步驟的時間步驟的完整圖表。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

這有點復雜,所以讓我們一步一步地完成它。在高級別,我們仍在運行RNN并輸出狀態的加權組合:

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

每個步驟的重量由“停止神經元”決定。它是一個S形神經元,它看著RNN狀態并給出一個停止的重量,我們可以將其視為我們應該在該步驟停止的概率。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

暫停權重為1的總預算,因此我們跟蹤頂部的預算。當它達到低于epsilon時,我們停止。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

當我們停下來時,可能會有一些剩余的預算停止,因為當它達到低于epsilon時停止。我們該怎么辦呢?從技術上講,它將被用于未來的步驟,但我們不想計算這些步驟,因此我們將其歸因于最后一步。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

在訓練自適應計算時間模型時,可以在成本函數中添加“思考成本”項。這會使模型對其使用的計算量進行懲罰。你使用這個術語越大,就越需要權衡性能以降低計算時間。

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

代碼

目前唯一的自適應計算時間的開源實現似乎是Mark Neumann(TensorFlow)。

神經編輯器

神經網絡在許多任務中都很出色,但它們也很難做一些基本的事情,比如算法,這在普通的計算方法中是微不足道的。有一種方法可以將神經網絡與正常編程融合在一起,并獲得兩全其美的效果。

神經程序員是一種方法。它學會創建程序以解決任務。實際上,它學會了生成這樣的程序而不需要正確程序的例子。它發現如何制作程序作為完成某項任務的手段。

本文中的實際模型通過生成類似SQL的程序來查詢表來回答有關表的問題。然而,這里有許多細節使它有點復雜,所以讓我們首先想象一個稍微簡單的模型,給出一個算術表達式并生成一個程序來評估它。

生成的程序是一系列操作。每個操作都被定義為對過去操作的輸出進行操作。因此,操作可能類似于“在前兩步添加操作的輸出和在步驟前添加操作的輸出?!彼袷且粋€Unix管道,而不是一個帶有變量分配和讀取的程序。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

該程序由控制器RNN一次生成一個操作。在每個步驟,控制器RNN輸出下一個操作應該是什么的概率分布。例如,我們可能非常確定我們想要在第一步執行添加,然后很難確定我們是否應該在第二步增加或分割,依此類推......

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

現在可以評估由此產生的操作分布。我們不是在每一步都運行單個操作,而是通常運行所有這些操作的注意技巧,然后將輸出平均在一起,加權我們運行該操作的概率。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

只要我們可以通過操作定義衍生品,程序的輸出就可能性而言是可微的。然后我們可以定義一個損失,并訓練神經網絡以產生能夠給出正確答案的程序。通過這種方式,神經程序員學會了在沒有良好程序實例的情況下編寫程序。唯一的監督是該計劃應該產生的答案。

這是神經程序員的核心思想,但本文中的版本回答了有關表格的問題,而不是算術表達式。還有一些額外的巧妙技巧:

  • 多種類型:神經網絡編程器中的許多操作都處理標量數以外的類型。某些操作輸出表列的選擇或單元格的選擇。只有相同類型的輸出才能合并在一起。
  • 引用輸入:神經程序員需要回答“有多少城市人口超過1,000,000?”這樣的問題,給出一個有人口列的城市表。為了實現這一點,一些操作允許網絡引用他們正在回答的問題中的常量或列的名稱。這種引用以指針網絡的風格引起注意。

神經網絡編程器并不是神經網絡生成程序的唯一方法。另一個可愛的方法是神經程序員 - 解釋器這可以完成許多非常有趣的任務,但需要以正確程序的形式進行監督。

我們認為,彌合傳統編程和神經網絡之間差距的這個一般空間非常重要。雖然神經網絡程序員顯然不是最終解決方案,但我們認為從中可以學到很多重要的經驗教訓。

代碼

用于問答的神經程序員的最新版本已由作者開源,并以TensorFlow模型的形式提供。Ken Morishita(Keras)還實現了神經程序員 - 解釋器。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學習</a>之增強遞歸<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經網絡</a>來了

總結

從某種意義上說,擁有一張紙的人比沒有紙的人聰明得多。具有數學符號的人可以解決他們本來無法解決的問題。訪問計算機使我們能夠獲得令人難以置信的壯舉,否則這些壯舉將遠遠超出我們。

一般來說,似乎許多有趣的智力形式是人類的創造性啟發式直覺與一些更加清晰細致的媒體(如語言或方程式)之間的相互作用。有時,媒體是物理存在的東西,為我們存儲信息,防止我們犯錯誤,或者計算繁重。在其他情況下,媒體是我們操縱的頭腦中的模型。無論哪種方式,它似乎對情報至關重要。

機器學習的最新成果已經開始具有這種風格,將神經網絡的直覺與其他東西結合起來。一種方法是人們稱之為“啟發式搜索”。例如,AlphaGo有一個Go如何工作的模型,并探討游戲如何在神經網絡直覺的指導下發揮作用。同樣,DeepMath使用神經網絡作為操縱數學表達式的直覺。我們在本文中討論的“增強型RNN”是另一種方法,我們將RNN連接到工程媒體,以擴展其一般功能。

與媒體互動自然涉及制定一系列行動,觀察和采取更多行動。這帶來了一個重大挑戰:我們如何了解采取哪些行動?這聽起來像是強化學習問題,我們當然可以采用這種方法。但強化學習文獻實際上正在攻擊這個問題的最難版本,其解決方案很難使用。關注的奇妙之處在于它通過部分地采取不同程度的所有動作,為我們提供了一個更容易解決這個問題的方法。這是有效的,因為我們可以設計類似NTM內存的媒體 - 允許分數動作并且可以區分。強化學習讓我們走一條路,并嘗試從中學習。注意在fork的每個方向上,然后將路徑合并在一起。

注意力的一個主要弱點是我們必須在每一步都采取一切“行動”。這會導致計算成本線性增長,就像增加神經圖靈機中的內存量一樣。你能想到的一件事就是讓你的注意力稀少,這樣你只需觸摸一些記憶。然而,它仍然具有挑戰性,因為你可能想要做一些事情,比如你的注意力取決于記憶的內容,并且天真地強迫你去看每個記憶。我們已經看到了一些初步嘗試來解決這個問題,例如,但似乎還有很多工作要做。如果我們真的可以讓這種亞線性時間注意力發揮作用,那將是非常強大的!

增強型復現神經網絡以及潛在的注意力技術令人難以置信。我們期待看到接下來會發生什么!

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢