0
雷鋒網(wǎng) AI 科技評(píng)論按:一提起 RNN,我們最容易想到的實(shí)現(xiàn)就是 LSTM + attention。LSTM 作為經(jīng)典的網(wǎng)絡(luò)結(jié)構(gòu)可謂是老當(dāng)益壯,而另一方面注意力機(jī)制過(guò)于常見(jiàn),我們甚至?xí)X(jué)得它是「理所當(dāng)然的」。但其實(shí)注意力機(jī)制其實(shí)并不是唯一一種網(wǎng)絡(luò)增強(qiáng)的方式。這篇 Distill.pub 博客的文章就帶我們重溫了包括注意力在內(nèi)的多種網(wǎng)絡(luò)增強(qiáng)方式,它們側(cè)重的方向不一樣,也就方便研究/開(kāi)發(fā)人員們按照自己的實(shí)際需求進(jìn)行選取。雷鋒網(wǎng) AI 科技評(píng)論編譯如下。
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)是深度學(xué)習(xí)技術(shù)中十分重要的一類模型,它讓神經(jīng)網(wǎng)絡(luò)能夠處理文本、音頻和視頻等序列數(shù)據(jù)。人們可以用循環(huán)神經(jīng)網(wǎng)絡(luò)將一個(gè)序列歸結(jié)為一個(gè)高級(jí)的理解模式,從而對(duì)序列進(jìn)行標(biāo)注,甚至從頭開(kāi)始生成一個(gè)新的序列。
基本的 RNN 設(shè)計(jì)過(guò)程需要對(duì)棘手的長(zhǎng)序列進(jìn)行處理,但是一種特殊的RNN 變體——LSTM(long short-term memory,長(zhǎng)短期記憶網(wǎng)絡(luò))可以在這種情況下很好地工作。人們發(fā)現(xiàn)這些模型十分強(qiáng)大,能夠在包括機(jī)器翻譯、語(yǔ)音識(shí)別和圖像理解(看圖說(shuō)話)等許多任務(wù)中取得非常好的效果。因此,在過(guò)去的幾年里,循環(huán)神經(jīng)網(wǎng)絡(luò)已經(jīng)被廣泛使用。
隨著人們對(duì)循環(huán)神經(jīng)網(wǎng)絡(luò)的研究越來(lái)越深入,我們已經(jīng)看到越來(lái)越多的人試圖用一些新的特性來(lái)增強(qiáng)循環(huán)神經(jīng)網(wǎng)絡(luò)。有四個(gè)方向的改進(jìn)特別令人激動(dòng):
這些技術(shù)中,每一項(xiàng)技術(shù)都對(duì)神經(jīng)網(wǎng)絡(luò)有很大的提升。然而,真正炫酷的是,這些技術(shù)還能結(jié)合在一起使用,而且現(xiàn)有的這些技術(shù)似乎都只是廣闊的研究空間中的一葉扁舟。此外,它們都依賴于同樣的底層技術(shù)——注意力機(jī)制,從而發(fā)揮作用。
神經(jīng)圖靈機(jī)[2] 將 RNN 與外部存儲(chǔ)單元相結(jié)合。由于向量是自然語(yǔ)言在神經(jīng)網(wǎng)絡(luò)中的表現(xiàn)形式,所以存儲(chǔ)單元中的內(nèi)容是一組向量:
但是對(duì)神經(jīng)圖靈機(jī)的讀寫(xiě)的工作方式是怎樣的呢?真正的挑戰(zhàn)是,我們需要讓它們可微。特別是,我們需要讓它們對(duì)于我們讀和寫(xiě)的位置可微,從而讓我們學(xué)會(huì)在哪里進(jìn)行讀寫(xiě)操作的。由于存儲(chǔ)地址在根本上是離散的,要讓它們可微是十分困難的。為此,神經(jīng)圖靈機(jī)采取了一種很聰明的解決方案:在每一步操作中,它們會(huì)在存儲(chǔ)單元的所有位置進(jìn)行讀寫(xiě),只是程度不同而已。
舉例而言,讓我們重點(diǎn)關(guān)注讀操作。RNN 并沒(méi)有指定一個(gè)特定的讀取位置,而是輸出了一個(gè)「注意力分布」,它描述了我們對(duì)于不同的存儲(chǔ)位置關(guān)注程度的分布情況。由此得到的讀操作的結(jié)果就是一個(gè)加權(quán)和。
類似地,我們也會(huì)以不同程度在存儲(chǔ)單元中的各個(gè)位置進(jìn)行寫(xiě)操作。我們?cè)俅斡靡粋€(gè)注意力分布描述我們?cè)诿總€(gè)位置寫(xiě)入了多少內(nèi)容。我們通過(guò)使存儲(chǔ)單元中每個(gè)位置的新值成為舊存儲(chǔ)內(nèi)容和新寫(xiě)入的值的凸組合來(lái)做到這一點(diǎn),而舊的存儲(chǔ)內(nèi)容和新值之間的位置取決于注意力權(quán)重。
但是,神經(jīng)圖靈機(jī)是如何確定應(yīng)該將注意力集中在存儲(chǔ)單元的哪些位置上呢?實(shí)際上,它們采用了兩種不同方法的組合:基于內(nèi)容的注意力機(jī)制和基于位置的注意力機(jī)制?;趦?nèi)容的注意力機(jī)制使神經(jīng)圖靈機(jī)可以在他們的存儲(chǔ)器中進(jìn)行搜索并重點(diǎn)關(guān)注于他們所尋找的目標(biāo)相匹配的位置,而基于位置的注意力機(jī)制則使存儲(chǔ)單元中注意力的相對(duì)運(yùn)動(dòng)成為了可能,使神經(jīng)圖靈機(jī)能夠循環(huán)。
這種讀寫(xiě)能力使得神經(jīng)圖靈機(jī)能夠執(zhí)行許多簡(jiǎn)單的算法,而不僅限于神經(jīng)網(wǎng)絡(luò)范疇。例如,它們可以學(xué)習(xí)在存儲(chǔ)單元中存放一個(gè)長(zhǎng)的序列,然后對(duì)其反復(fù)進(jìn)行循環(huán)操作。當(dāng)它們這樣做的時(shí)候,我們可以看到他們?cè)谀男┪恢脠?zhí)行了讀寫(xiě)操作,以便更好地理解他們?cè)谧鍪裁矗?/p>
你可以在[3]中查看更多的實(shí)驗(yàn)結(jié)果。上圖是基于重復(fù)的復(fù)制實(shí)驗(yàn)得出的。
它們還可以學(xué)會(huì)模仿查表法,甚至學(xué)著對(duì)數(shù)字進(jìn)行排序(盡管采取了一些投機(jī)取巧的方法)!另一方面,有時(shí)他們面對(duì)一些很基礎(chǔ)的工作也會(huì)無(wú)能為力,比如對(duì)數(shù)字進(jìn)行加法或乘法運(yùn)算。
自從最原始的神經(jīng)圖靈機(jī)論文發(fā)表后,相繼涌現(xiàn)了一大批在相關(guān)領(lǐng)域取得激動(dòng)人心的研究進(jìn)展的論文。神經(jīng) GPU[4] 解決了神經(jīng)圖靈機(jī)無(wú)法對(duì)數(shù)字進(jìn)行加法和乘法運(yùn)算的問(wèn)。Zaremba 和 Sutskever 等人[5]使用強(qiáng)化學(xué)習(xí)代替了最原始的神經(jīng)圖靈機(jī)中使用的可微的讀寫(xiě)技術(shù)來(lái)訓(xùn)練神經(jīng)機(jī)器翻譯。神經(jīng)隨機(jī)存取存儲(chǔ)器(NRAM)是基于指針工作的。目前,一些論文已經(jīng)對(duì)棧和隊(duì)列這種可微的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了探究[7,8]。而記憶網(wǎng)絡(luò)[9,10](memory networks)則是另一種解決類似問(wèn)題的方法。
從某種客觀意義上來(lái)講,這些模型可以執(zhí)行的許多任務(wù)(例如學(xué)會(huì)如何對(duì)數(shù)字做加法),并不是十分困難。對(duì)于傳統(tǒng)的編程技術(shù)說(shuō),這些任務(wù)可以說(shuō)是小菜一碟。但是神經(jīng)網(wǎng)絡(luò)可以處理許多其他的問(wèn)題,而目前像神經(jīng)圖靈機(jī)這樣的模型的能力似乎仍然收到了很大限制,沒(méi)有被完全開(kāi)發(fā)出來(lái)。
代碼
這些模型有許多開(kāi)源的實(shí)現(xiàn)版本。神經(jīng)圖靈機(jī)的開(kāi)源實(shí)現(xiàn)有 Taehoon Kim(Tensorflow 版,https://github.com/carpedm20/NTM-tensorflow )、Shanwn(Theano 版,https://github.com/shawntan/neural-turing-machines )、Fumin(Go 版,https://github.com/fumin/ntm )、Kai Sheng(Torch 版,https://github.com/kaishengtai/torch-ntm )、Snip(Lasagne 版,https://github.com/snipsco/ntm-lasagne )等人的版本。神經(jīng) GPU 代碼是開(kāi)源的,并已經(jīng)被 TensorFlow 的模型庫(kù)囊括了進(jìn)去(https://github.com/tensorflow/models/tree/master/neural_gpu )。記憶網(wǎng)絡(luò)的開(kāi)源實(shí)現(xiàn)包含F(xiàn)acebook(Torch/Matlab 版,https://github.com/facebook/MemNN )、YerevaNN(Theano 版,https://github.com/YerevaNN/Dynamic-memory-networks-in-Theano )、Taehoon Kim(TensorFlow 版,https://github.com/carpedm20/MemN2N-tensorflow )等人的版本。
當(dāng)我們翻譯一個(gè)句子時(shí),我們會(huì)特別注意當(dāng)前翻譯的單詞。當(dāng)我們轉(zhuǎn)錄一段錄音時(shí),我們會(huì)仔細(xì)聽(tīng)我們正努力寫(xiě)下的章節(jié)。如果你要我描述我所坐的房間,我會(huì)在描述的時(shí)候看看周圍的物體。
神經(jīng)網(wǎng)絡(luò)使用注意力機(jī)制實(shí)現(xiàn)同樣的行為,專注于整個(gè)環(huán)境中所獲的的信息的一部分。例如,RNN 可以處理另一個(gè) RNN 的輸出。在每一個(gè)時(shí)間步上,帶注意力機(jī)制的 RNN 都會(huì)關(guān)注另一個(gè) RNN 的不同位置上的內(nèi)容。
我們希望注意力機(jī)制是可微的,這樣我們就可以學(xué)到重點(diǎn)關(guān)注什么位置上的內(nèi)容。為了做到這一點(diǎn),我們獎(jiǎng)使用和神經(jīng)圖靈機(jī)一樣的技術(shù):我們關(guān)注所有的位置,只是關(guān)注的程度不同罷了。
注意力分布通常是由基于內(nèi)容的注意力機(jī)制生成的。我們用來(lái)操作的RNN 會(huì)生成一個(gè)搜索詞描述它想要關(guān)注的位置。每一項(xiàng)都會(huì)與搜索詞進(jìn)行點(diǎn)乘從而產(chǎn)生一個(gè)得分,該得分將描述其與搜索詞的匹配程度。這個(gè)得分將作為輸入送給Softmax 函數(shù),用來(lái)創(chuàng)建注意力分布。
在RNN 之間應(yīng)用注意力機(jī)制的一個(gè)場(chǎng)景是機(jī)器翻譯[11]。一個(gè)傳統(tǒng)的序列到序列(Seq2Seq)的模型必須將整個(gè)輸入歸結(jié)為一個(gè)單一的向量,然后將其反向擴(kuò)展得到翻譯結(jié)果。注意力機(jī)制通過(guò)使RNN 能夠處理輸入來(lái)傳遞它所看到的每一個(gè)單詞信息,然后在生成輸出的RNN 中將注意力集中在相關(guān)的單詞上。
這種 RNN 之間的注意力機(jī)制已經(jīng)有許多其它的應(yīng)用場(chǎng)景。它能夠在語(yǔ)音識(shí)別[12]中被使用,使一個(gè) RNN 能夠處理音頻信息,然后讓另一個(gè) RNN 能夠?yàn)g覽它,在它生成音頻相應(yīng)的文字時(shí)將注意力放在相關(guān)的部分上。
這種注意力機(jī)制其它的應(yīng)用還包括文本解析[13],這時(shí)注意力機(jī)制讓模型能夠在生成解析樹(shù)時(shí)對(duì)單詞進(jìn)行掃描。而在對(duì)話建模[14]任務(wù)中,注意力機(jī)制使模型能在生成回應(yīng)文字時(shí),重點(diǎn)關(guān)注對(duì)話前面相關(guān)求的內(nèi)容。
注意力機(jī)制還可以用在卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)之間的接口上。這里的注意力機(jī)制使 RNN 能夠在每一步關(guān)注圖像上的不同位置。這種注意力機(jī)制的一個(gè)流行的應(yīng)用場(chǎng)景是「看圖說(shuō)話」。首先,一個(gè)卷積網(wǎng)絡(luò)會(huì)對(duì)圖片進(jìn)行處理從而抽取高級(jí)特征;接著會(huì)運(yùn)行一個(gè) RNN 生成對(duì)圖像的描述。當(dāng)它生成描述中的每個(gè)單詞時(shí),RNN 會(huì)關(guān)注卷積神經(jīng)網(wǎng)絡(luò)對(duì)圖像相關(guān)部分的解釋。我們可以用下圖顯示地可視化這個(gè)過(guò)程:
更廣泛地說(shuō),當(dāng)我們想要與一個(gè)在輸出中有重復(fù)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)對(duì)接時(shí),可以使用注意力接口。
人們發(fā)現(xiàn)注意力接口是一種極具通用價(jià)值并且十分強(qiáng)大的技術(shù),并且正在被越來(lái)越廣泛地使用。
標(biāo)準(zhǔn)的 RNN 在每個(gè)時(shí)間步上執(zhí)行相同數(shù)量的計(jì)算。這似乎并不符合直覺(jué)。當(dāng)然,我們要處理的問(wèn)題變得更加復(fù)雜時(shí),人們是否應(yīng)該再多考慮考慮呢?此外,標(biāo)準(zhǔn) RNN 還將其操作長(zhǎng)度為 n 的序列的時(shí)間復(fù)雜度限制為 O(n)。
自適應(yīng)計(jì)算時(shí)間[15]是一種讓 RNN 能夠在每一步之行不同數(shù)量的計(jì)算的方法。大體的思路很簡(jiǎn)單:它讓RNN 能在每個(gè)時(shí)間步上進(jìn)行多步計(jì)算。
為了讓網(wǎng)絡(luò)學(xué)習(xí)需要計(jì)算多少步,我們希望步驟的數(shù)量可微。我們用我們?cè)?jīng)使用過(guò)的技術(shù)來(lái)實(shí)現(xiàn)這一點(diǎn):我們并不運(yùn)行離散數(shù)量的步驟,而是對(duì)運(yùn)行的步數(shù)使用了一個(gè)注意力分布。它的輸出是每個(gè)步驟的輸出的加權(quán)組合。
上圖還忽略了一些更多的細(xì)節(jié)。下圖是在一個(gè)時(shí)間步上包含三個(gè)計(jì)算步驟的完整示意圖:
此圖描述的計(jì)算過(guò)程有些復(fù)雜,所以讓我們一步步地分析它。在高層,我們?nèi)匀贿\(yùn)行RNN 并輸出一個(gè)狀態(tài)的加權(quán)組合:
每一個(gè)計(jì)算步驟的權(quán)重都由一個(gè)「緩沖神經(jīng)元」決定。它是一種能夠觀察RNN 的狀態(tài)并給出一個(gè)緩沖權(quán)重的sigmoid 神經(jīng)元,我們可以認(rèn)為它是我們應(yīng)該在這一步停下來(lái)的概率。
我們對(duì)于緩沖權(quán)重的總預(yù)算上限為1,接著我們根據(jù)下圖最上面一行的計(jì)算流程進(jìn)行計(jì)算(從1 開(kāi)始,每一步減去相應(yīng)的值)。當(dāng)它變得小于epsilon 時(shí),我們就停止計(jì)算。
當(dāng)我們停下來(lái)時(shí),可能還會(huì)有一些在緩沖預(yù)算之外還沒(méi)有計(jì)算完的部分,這是因?yàn)槲覀冊(cè)谄湫∮?epsilon 時(shí)就會(huì)停止計(jì)算。我們?cè)撊绾翁幚磉@種情況呢?從技術(shù)上講,它被賦予了未來(lái)可以繼續(xù)計(jì)算的步驟,而我們現(xiàn)在并不想計(jì)算它,因此我們將現(xiàn)在的狀態(tài)定義為最后一步。
當(dāng)我們訓(xùn)練自適應(yīng)計(jì)算時(shí)間模型時(shí),可以在損失函數(shù)中添加一項(xiàng)「思考成本」(ponder cost),用來(lái)懲罰模型的累積計(jì)算時(shí)間。這一項(xiàng)越大,就會(huì)更加因?yàn)榻档陀?jì)算時(shí)間而降低性能,達(dá)到折中的目的。
自適應(yīng)計(jì)算時(shí)間是一種非常新的想法,但是我們相信它和類似的思想都是非常重要的。
代碼
目前唯一的「自適應(yīng)計(jì)算時(shí)間」模型的開(kāi)源代碼似乎是Mark Neumann的版本(TensorFlow 版,https://github.com/DeNeutoy/act-tensorflow)。
神經(jīng)網(wǎng)絡(luò)在許多任務(wù)上的表現(xiàn)都非常出色,但它們又是也很難做到一些基本的事情。比如算術(shù)對(duì)于神經(jīng)網(wǎng)絡(luò)就很困難,而這對(duì)于普通的計(jì)算方法是輕而易舉的。如果有一種方法可以將神經(jīng)網(wǎng)絡(luò)與普通的編程方法融合在一起,就會(huì)取得最大的雙贏局面。
神經(jīng)網(wǎng)絡(luò)編程器[16]是一種解決該問(wèn)題的方法。它會(huì)學(xué)著創(chuàng)建程序來(lái)解決這個(gè)問(wèn)題。事實(shí)上,它能在不需要正確的程序?qū)嵗侗镜那闆r下生成這樣的程序。它會(huì)發(fā)現(xiàn)要想完成某種任務(wù),做為手段,需要如何生產(chǎn)出程序。
論文中實(shí)際的模型通過(guò)生成類 SQL 程序查詢表格來(lái)回答這個(gè)問(wèn)題。然而,這種環(huán)境下的大量細(xì)節(jié)讓它變得有些復(fù)雜。所以我們不妨從想象一個(gè)稍微簡(jiǎn)單一點(diǎn)的模型開(kāi)始,它給出了一個(gè)算術(shù)表達(dá)式,并生成了一個(gè)模型來(lái)評(píng)估它。
生成的程序是一個(gè)操作序列。每個(gè)操作都被定義為對(duì)過(guò)去操作的輸出進(jìn)行操作。因此,一個(gè)操作可能類似于「將兩步前的操作的輸出和一步前的操作的輸出相加」。它更像是一個(gè)Unix 管道,而不是一個(gè)擁有被賦值并被讀取的變量的程序。
該程序由控制器RNN 一次生成一個(gè)操作。在每個(gè)步驟中,控制器RNN都會(huì)輸出下一個(gè)操作應(yīng)該是什么的概率分布。例如,這個(gè)概率可以用來(lái)模擬:我們可能非常確定我們想要在第一個(gè)時(shí)間步上執(zhí)行加法,然后在決定我們是否需要在第二步執(zhí)行乘法或除法的時(shí)候會(huì)很艱難,等等…
現(xiàn)在,最終得出的操作的分布可以被我們?cè)u(píng)估。我們并不是在每一步運(yùn)行一個(gè)操作,而是采用了普遍使用的注意力技巧,同時(shí)運(yùn)行所有的操作,再根據(jù)我們執(zhí)行這些操作的概率作為權(quán)重對(duì)所有的輸出一起取平均。
只要我們能夠通過(guò)這些操作定義導(dǎo)數(shù),程序的輸出在概率上就是可微的。接著,我們可以定義一個(gè)損失函數(shù),訓(xùn)練神經(jīng)網(wǎng)絡(luò)生成給出正確答案的程序。這樣一來(lái),神經(jīng)網(wǎng)絡(luò)編程器就學(xué)會(huì)了在沒(méi)有正確程序范例的情況下生成程序。唯一的監(jiān)督信息就是程序應(yīng)該產(chǎn)生的返回值。
這就是神經(jīng)網(wǎng)絡(luò)編程器的核心思想,但是論文中的版本回答了關(guān)于表的問(wèn)題,而不是關(guān)于算術(shù)表達(dá)式。下面我們還將給出一些實(shí)用的小技巧:
多種數(shù)據(jù)類型:神經(jīng)網(wǎng)絡(luò)編程器中的許多操作都會(huì)處理除標(biāo)量值之外的其他類型的數(shù)據(jù)。一些操作輸出選中的表的列或者選中的單元格。只有相同類型的輸出才能被合并到一起。
參考輸入:神經(jīng)網(wǎng)絡(luò)編程器需要回答類似于「有多少個(gè)人口超過(guò)1 百萬(wàn)人的城市?」為了使回答這種問(wèn)題更加容易,一些操作允許網(wǎng)絡(luò)參考他們正在回答的問(wèn)題中的常量,或者列的名字。這種參考是由于注意力機(jī)制發(fā)生的,就像指針網(wǎng)絡(luò)[17]。
神經(jīng)網(wǎng)絡(luò)編程器并不是讓神經(jīng)網(wǎng)絡(luò)生成程序的唯一途徑。另一種好方法是神經(jīng)網(wǎng)絡(luò)編程器-解釋器[18],他可以完成很多有趣的任務(wù),但是需要正以確程序作為監(jiān)督信息。
我們認(rèn)為,這種彌合傳統(tǒng)編程和神經(jīng)網(wǎng)絡(luò)之間差距的一般空間是非常重要的。雖然神經(jīng)網(wǎng)絡(luò)編程器顯然不是最終的解決方案,我單們認(rèn)為有很多重要的經(jīng)驗(yàn)教訓(xùn)可以從中學(xué)到。
代碼
最新版本的用于問(wèn)答的神經(jīng)網(wǎng)絡(luò)編程器(https://openreview.net/pdf?id=ry2YOrcge )已經(jīng)被其作者開(kāi)源,并且可以作為 TensorFlow 模型獲取(https://github.com/tensorflow/models/tree/master/neural_programmer )。而神經(jīng)網(wǎng)絡(luò)編程器-解釋器也有由Ken Morishita編寫(xiě)的Keras 版本(https://github.com/mokemokechicken/keras_npi )。
從某種意義上說(shuō),一個(gè)人類拿著一張紙,比沒(méi)有紙的人聰明得多。一個(gè)有數(shù)學(xué)符號(hào)的人可以解決他們不能解決的問(wèn)題。使用電腦使我們能夠做出不可思議的壯舉,否則它們將遠(yuǎn)遠(yuǎn)超出我們的能力范圍。
一般來(lái)說(shuō),很多有趣的智力形式似乎是人類的創(chuàng)造性啟發(fā)式直覺(jué)和一些更加直觀具體的媒介之間的相互作用,如語(yǔ)言或方程式。有時(shí),媒介是客觀存在的東西,為我們儲(chǔ)存信息,防止我們犯錯(cuò)誤,或者執(zhí)行繁瑣的計(jì)算任務(wù)。在其他情況下,媒介是我們?cè)谀X海中操縱的一個(gè)模型。無(wú)論如何,這對(duì)于智能來(lái)說(shuō)都是至關(guān)重要的。
最近機(jī)器學(xué)習(xí)的結(jié)果已經(jīng)開(kāi)始有了這種味道,將神經(jīng)網(wǎng)絡(luò)的直覺(jué)和其他東西結(jié)合起來(lái)。其中一種方法就是人們所說(shuō)的「啟發(fā)式搜索」。例如,AlphaGo [19]有一個(gè)關(guān)于圍棋如何工作的模型,并且探索了在神經(jīng)網(wǎng)絡(luò)直覺(jué)指導(dǎo)下如何玩這個(gè)游戲的模型。類似地,DeepMath [20]利用神經(jīng)網(wǎng)絡(luò)表征操作數(shù)學(xué)表達(dá)式的直覺(jué)。我們?cè)诒疚闹姓劦降摹冈鰪?qiáng)的RNN」是另一種方法,將RNN 連接到專門(mén)設(shè)計(jì)的媒介上,以提高它們的泛化能力。
與媒介的相互作用自然包括「采取一系列行動(dòng)、進(jìn)行觀察、再采取進(jìn)一步的行動(dòng)」。在這里,我們面臨著一個(gè)巨大的挑戰(zhàn):我們?nèi)绾螌W(xué)習(xí)應(yīng)該采取怎樣的行動(dòng)?這聽(tīng)起來(lái)是個(gè)強(qiáng)化學(xué)習(xí)問(wèn)題,我們當(dāng)然可以采用這樣的做法。但是,強(qiáng)化學(xué)習(xí)技術(shù)實(shí)際上是解決該問(wèn)題最復(fù)雜的版本,而且這種解決方案很難使用。注意力機(jī)制的精妙之處在于,它使我們能夠更容易地通過(guò)對(duì)部分位置以不同程度執(zhí)行所有的動(dòng)作來(lái)解決這個(gè)問(wèn)題。這是因?yàn)槲覀兛梢栽O(shè)計(jì)像神經(jīng)圖靈機(jī)這樣的存儲(chǔ)結(jié)構(gòu)使我們能進(jìn)行細(xì)微的操作,并且使該問(wèn)題可微。強(qiáng)化學(xué)習(xí)讓我們采取一條單一的解決路徑,并且試著從中學(xué)到知識(shí)。注意力機(jī)制則在每一個(gè)選擇的交叉口采取了各個(gè)方向的動(dòng)作,并最終將各條路徑的結(jié)果合并在一起。
注意力機(jī)制的一個(gè)主要的缺點(diǎn)是,我們必須在每一步上采取「動(dòng)作」。由于我們會(huì)進(jìn)行進(jìn)行增加神經(jīng)圖靈機(jī)中的存儲(chǔ)單元等操作,這會(huì)導(dǎo)致計(jì)算開(kāi)銷直線上升。可以想到的解決方法就是讓你的注意力模型變得稀疏一些,這樣以來(lái)你就只需要對(duì)一部分存儲(chǔ)單元進(jìn)行操作。然而,這仍然是具有挑戰(zhàn)性的,因?yàn)槟憧赡芟胍屇愕淖⒁饬δP鸵蕾囉诖鎯?chǔ)單元的內(nèi)容,而這樣做會(huì)令你不得不查看每一個(gè)存儲(chǔ)單元。我們已經(jīng)觀察到,目前有一些初步的工作在常識(shí)解決這個(gè)問(wèn)題,例如[21] ,但是似乎還有許多工作有待探索。如果我們真的能做出這樣的在次線性時(shí)間復(fù)雜度內(nèi)的注意力機(jī)制的工作,這種模型會(huì)變得非常強(qiáng)大!
增強(qiáng)的循環(huán)神經(jīng)網(wǎng)絡(luò)和注意力機(jī)制的底層技術(shù)是如此令人激動(dòng)!我們期待著這個(gè)領(lǐng)域有更多的新技術(shù)涌現(xiàn)出來(lái)!
參考文獻(xiàn)
1. Understanding LSTM Networks ?[link](http://colah.github.io/posts/2015-08-Understanding-LSTMs)
Olah, C., 2015.
2. Neural Turing Machines
Graves, A., Wayne, G. and Danihelka, I., 2014. CoRR, Vol abs/1410.5401.
3. 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.
4. Neural GPUs Learn Algorithms
Kaiser, L. and Sutskever, I., 2015. CoRR, Vol abs/1511.08228.
5. Reinforcement Learning Neural Turing Machines
Zaremba, W. and Sutskever, I., 2015. CoRR, Vol abs/1505.00521.
6. Neural Random-Access Machines
Kurach, K., Andrychowicz, M. and Sutskever, I., 2015. CoRR, Vol abs/1511.06392.
7. Learning to Transduce with Unbounded Memory
Grefenstette, E., Hermann, K.M., Suleyman, M. and Blunsom, P., 2015. Advances in Neural Information Processing Systems 28, pp. 1828—1836. Curran Associates, Inc.
8. 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.
9. Memory Networks
Weston, J., Chopra, S. and Bordes, A., 2014. CoRR, Vol abs/1410.3916.
10. 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.
11. Neural machine translation by jointly learning to align and translate
Bahdanau, D., Cho, K. and Bengio, Y., 2014. arXiv preprint arXiv:1409.0473.
12. Listen, Attend and Spell
Chan, W., Jaitly, N., Le, Q.V. and Vinyals, O., 2015. CoRR, Vol abs/1508.01211.
13. 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.
14. A Neural Conversational Model
Vinyals, O. and Le, Q.V., 2015. CoRR, Vol abs/1506.05869.
15. Adaptive Computation Time for Recurrent Neural Networks
Graves, A., 2016. CoRR, Vol abs/1603.08983.
16. Neural Programmer: Inducing Latent Programs with Gradient Descent
Neelakantan, A., Le, Q.V. and Sutskever, I., 2015. CoRR, Vol abs/1511.04834.
17. Pointer networks
Vinyals, O., Fortunato, M. and Jaitly, N., 2015. Advances in Neural Information Processing Systems, pp. 2692—2700.
18. Neural Programmer-Interpreters
Reed, S.E. and Freitas, N.d., 2015. CoRR, Vol abs/1511.06279.
19. 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
20. 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.
21. Learning Efficient Algorithms with Hierarchical Attentive Memory
Andrychowicz, M. and Kurach, K., 2016. CoRR, Vol abs/1602.03218.
via distill,雷鋒網(wǎng) AI 科技評(píng)論編譯
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。