三:自適應(yīng)計(jì)算時(shí)間
標(biāo)準(zhǔn)RNN在每個(gè)時(shí)間步驟執(zhí)行相同的計(jì)算量。 這似乎太不直觀了。 舉個(gè)例子來說,人在思考更難的問題時(shí)是不是會(huì)動(dòng)更多的腦筋?并且在每個(gè)時(shí)間步驟執(zhí)行相同的計(jì)算量會(huì)限制RNN處理長度為n的列表時(shí)的時(shí)間復(fù)雜度為O(n)。
自適應(yīng)計(jì)算時(shí)間[15]是一種讓RNN在每步執(zhí)行不同計(jì)算量的方法。 總體來看,這個(gè)想法的主旨很簡(jiǎn)單:允許RNN為每個(gè)時(shí)間步執(zhí)行多個(gè)計(jì)算步驟。
為了讓網(wǎng)絡(luò)學(xué)習(xí)到需要執(zhí)行多少個(gè)計(jì)算步驟,我們希望計(jì)算步驟的數(shù)量是可微的。 我們使用與之前相同的技巧來實(shí)現(xiàn)這一點(diǎn):即不是直接去確定離散的計(jì)算步驟,而是建立一個(gè)在計(jì)算步驟數(shù)量上的注意力分布。 輸出是每個(gè)步驟輸出的加權(quán)求和。
四:神經(jīng)元程序員
神經(jīng)網(wǎng)絡(luò)在許多任務(wù)中都非常出色,但他們也很難做一些基礎(chǔ)的東西,比如算術(shù)題,這對(duì)普通的計(jì)算方法來說則微不足道。如果能將神經(jīng)網(wǎng)絡(luò)與正常編程融合在一起,就兩全其美了。
神經(jīng)元程序員 [16]是一個(gè)這樣的方法:它學(xué)習(xí)創(chuàng)建程序來解決任務(wù)。事實(shí)上,它不需要正確的程序的例子,就能學(xué)習(xí)生成正確的程序。它探索如何以編程為手段,去完成某項(xiàng)任務(wù)。
本文中的實(shí)際模型通過生成類似SQL的程序來查詢表格,以回答關(guān)于表格的問題。但是,這里有一些細(xì)節(jié)使得它有點(diǎn)復(fù)雜,所以我們首先想象一個(gè)稍微簡(jiǎn)單的模型,給出一個(gè)算術(shù)表達(dá)式并生成一個(gè)程序來評(píng)估該表達(dá)式。
生成的程序是以一系列操作的形式存在的。每個(gè)操作基于過去操作的輸出進(jìn)行操作。所以一個(gè)操作可能是類似于“把兩步之前的操作的輸出和一步之前的操作的輸出相加”這樣的操作。它更像是一個(gè)Unix管道,而不是一個(gè)分配和讀取變量的程序。
只要我們可以通過操作來定義導(dǎo)數(shù),就可以根據(jù)概率分布來區(qū)分出程序的輸出。然后,我們就可以定義一個(gè)損失函數(shù)來訓(xùn)練神經(jīng)網(wǎng)絡(luò),以產(chǎn)生可以獲得正確答案的程序。這樣,神經(jīng)元程序員就不需要參照好的程序,也能學(xué)會(huì)編程。神經(jīng)程序員只需要問題答案來監(jiān)督它的學(xué)習(xí)。
這就是神經(jīng)元程序員的核心思想。但這篇論文中的神經(jīng)元程序員,編寫出的程序只能回答表格問題,而不能解算術(shù)題。還有一些不錯(cuò)的技巧:
- 多類別:神經(jīng)元程序員中的許多操作處理標(biāo)量數(shù)以外的類型。一些操作輸出表格列或單元格的選擇。只有相同類型的輸出會(huì)合并在一起。
- 參考輸入:神經(jīng)元程序員需要回答諸如“有多少城市人口超過100萬?”等問題。為了促進(jìn)這一點(diǎn),一些操作允許網(wǎng)絡(luò)在他們正在回答的問題中引用常量或列的名稱。這種引用發(fā)生在指針網(wǎng)絡(luò)的樣式中[17]。
神經(jīng)元程序員不是神經(jīng)網(wǎng)絡(luò)編程的唯一方法。另一個(gè)令人愉悅的方法是神經(jīng)元程序員 - 解釋器[18],它可以完成一些非常有意思的任務(wù),但需要以正確的程序進(jìn)行監(jiān)督。
我們認(rèn)為,縮小傳統(tǒng)編程與神經(jīng)網(wǎng)絡(luò)之間的差距是非常重要的。雖然神經(jīng)元程序員不是最終的解決方案,但我們還是能從中學(xué)到很多。
代碼
光明前景
在某種意義上,有一張紙寫寫畫畫的人比沒有的人更聰明。使用數(shù)學(xué)符號(hào)的人可以解決缺乏數(shù)學(xué)符號(hào)時(shí)難以解決的問題。而計(jì)算機(jī)的使用使我們能夠獲得超乎尋常的卓越功績。
一般來說,似乎有很多有趣的智力形式是人類創(chuàng)造性的啟發(fā)式直覺,與一些像語言或方程這樣更為清晰謹(jǐn)慎的媒介之間的相互作用。有時(shí),媒介以物質(zhì)的形式存在,為我們存儲(chǔ)信息,阻止我們犯錯(cuò)誤或繁復(fù)計(jì)算。在其他情況下,媒體是我們大腦里可操縱的模型。無論哪種方式,媒介對(duì)智能都很重要。
機(jī)器學(xué)習(xí)的最新研究也開始這么干了——把神經(jīng)網(wǎng)絡(luò)的直覺和別的東西結(jié)合起來。一種方法可以稱為“啟發(fā)式搜索”,例如AlphaGo[19],既有一個(gè)玩圍棋的模型,它也探索在神經(jīng)網(wǎng)絡(luò)直覺的指導(dǎo)下進(jìn)行游戲。同樣,DeepMath[20]使用神經(jīng)網(wǎng)絡(luò)作為處理數(shù)學(xué)表達(dá)式的“直覺”。我們?cè)诒疚闹刑岬降摹霸鰪?qiáng)型RNN”是另一種方法,將RNN連接到工程媒介,以擴(kuò)展其通用功能。
與媒體互動(dòng),自然涉及到采取行動(dòng)、觀察以及采取更多行動(dòng)的序列。這產(chǎn)生了一個(gè)重大挑戰(zhàn):怎樣讓機(jī)器學(xué)會(huì)采取行動(dòng)?這聽起來像是一個(gè)強(qiáng)化學(xué)習(xí)的問題。基于強(qiáng)化學(xué)習(xí)的研究正在試圖解決這個(gè)問題的最難版本,不過其提出的解決方案難以實(shí)際使用。而注意力機(jī)制的奇妙之處在于,通過在部分上施加不同程度的注意力來運(yùn)行所有的行動(dòng)來解決問題。它有效,因?yàn)槲覀兛梢栽O(shè)計(jì)類似于NTM內(nèi)存空間的媒介,來允許分?jǐn)?shù)計(jì)算和可微。強(qiáng)化學(xué)習(xí)每次只走一條路,從中學(xué)習(xí)。而注意力機(jī)制則把路口的所有分叉,合而為一。
注意力機(jī)制的一個(gè)主要弱點(diǎn)是,每一步都要采取一次“行動(dòng)”。這導(dǎo)致當(dāng)你增加神經(jīng)圖靈機(jī)中的內(nèi)存量時(shí),計(jì)算成本也會(huì)線性增加。對(duì)此,想象一下這樣的情景:先分散你的注意力,然后每次我們只需要訪問部分存儲(chǔ)空間。然而,如果你想讓注意力依賴于存儲(chǔ)內(nèi)容,從而可以輕易的查看每個(gè)存儲(chǔ)空間,這仍然很有挑戰(zhàn)。我們已經(jīng)看到了一些試圖攻克這個(gè)問題而做出的嘗試,比如[21],但似乎還有很多工作要做。如果我們真的能夠做出這樣的次線性時(shí)間的注意力工作,那將是非常強(qiáng)大的成果!