一提起 RNN,我們最容易想到的實(shí)現(xiàn)就是 LSTM + attention。LSTM 作為經(jīng)典的網(wǎng)絡(luò)結(jié)構(gòu)可謂是老當(dāng)益壯,而另一方面注意力機(jī)制過于常見,我們甚至?xí)X得它是「理所當(dāng)然的」。但其實(shí)注意力機(jī)制其實(shí)并不是唯一一種網(wǎng)絡(luò)增強(qiáng)的方式。這篇 Distill.pub 博客的文章就帶我們重溫了包括注意力在內(nèi)的多種網(wǎng)絡(luò)增強(qiáng)方式,它們側(cè)重的方向不一樣,也就方便研究/開發(fā)人員們按照自己的實(shí)際需求進(jìn)行選取。
循環(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ìn)行標(biāo)注,甚至從頭開始生成一個(gè)新的序列。
基本的 RNN 設(shè)計(jì)過程需要對棘手的長序列進(jìn)行處理,但是一種特殊的RNN 變體——LSTM(long short-term memory,長短期記憶網(wǎng)絡(luò))可以在這種情況下很好地工作。人們發(fā)現(xiàn)這些模型十分強(qiáng)大,能夠在包括機(jī)器翻譯、語音識(shí)別和圖像理解(看圖說話)等許多任務(wù)中取得非常好的效果。因此,在過去的幾年里,循環(huán)神經(jīng)網(wǎng)絡(luò)已經(jīng)被廣泛使用。
隨著人們對循環(huán)神經(jīng)網(wǎng)絡(luò)的研究越來越深入,我們已經(jīng)看到越來越多的人試圖用一些新的特性來增強(qiáng)循環(huán)神經(jīng)網(wǎng)絡(luò)。有四個(gè)方向的改進(jìn)特別令人激動(dòng):
這些技術(shù)中,每一項(xiàng)技術(shù)都對神經(jīng)網(wǎng)絡(luò)有很大的提升。然而,真正炫酷的是,這些技術(shù)還能結(jié)合在一起使用,而且現(xiàn)有的這些技術(shù)似乎都只是廣闊的研究空間中的一葉扁舟。此外,它們都依賴于同樣的底層技術(shù)——注意力機(jī)制,從而發(fā)揮作用。
神經(jīng)圖靈機(jī)
神經(jīng)圖靈機(jī)[2] 將 RNN 與外部存儲(chǔ)單元相結(jié)合。由于向量是自然語言在神經(jīng)網(wǎng)絡(luò)中的表現(xiàn)形式,所以存儲(chǔ)單元中的內(nèi)容是一組向量:
但是對神經(jīng)圖靈機(jī)的讀寫的工作方式是怎樣的呢?真正的挑戰(zhàn)是,我們需要讓它們可微。特別是,我們需要讓它們對于我們讀和寫的位置可微,從而讓我們學(xué)會(huì)在哪里進(jìn)行讀寫操作的。由于存儲(chǔ)地址在根本上是離散的,要讓它們可微是十分困難的。為此,神經(jīng)圖靈機(jī)采取了一種很聰明的解決方案:在每一步操作中,它們會(huì)在存儲(chǔ)單元的所有位置進(jìn)行讀寫,只是程度不同而已。
舉例而言,讓我們重點(diǎn)關(guān)注讀操作。RNN 并沒有指定一個(gè)特定的讀取位置,而是輸出了一個(gè)「注意力分布」,它描述了我們對于不同的存儲(chǔ)位置關(guān)注程度的分布情況。由此得到的讀操作的結(jié)果就是一個(gè)加權(quán)和。
類似地,我們也會(huì)以不同程度在存儲(chǔ)單元中的各個(gè)位置進(jìn)行寫操作。我們再次用一個(gè)注意力分布描述我們在每個(gè)位置寫入了多少內(nèi)容。我們通過使存儲(chǔ)單元中每個(gè)位置的新值成為舊存儲(chǔ)內(nè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ǔ)單元中注意力的相對運(yùn)動(dòng)成為了可能,使神經(jīng)圖靈機(jī)能夠循環(huán)。
這種讀寫能力使得神經(jīng)圖靈機(jī)能夠執(zhí)行許多簡單的算法,而不僅限于神經(jīng)網(wǎng)絡(luò)范疇。例如,它們可以學(xué)習(xí)在存儲(chǔ)單元中存放一個(gè)長的序列,然后對其反復(fù)進(jìn)行循環(huán)操作。當(dāng)它們這樣做的時(shí)候,我們可以看到他們在哪些位置執(zhí)行了讀寫操作,以便更好地理解他們在做什么:
你可以在[3]中查看更多的實(shí)驗(yàn)結(jié)果。上圖是基于重復(fù)的復(fù)制實(shí)驗(yàn)得出的。
它們還可以學(xué)會(huì)模仿查表法,甚至學(xué)著對數(shù)字進(jìn)行排序(盡管采取了一些投機(jī)取巧的方法)!另一方面,有時(shí)他們面對一些很基礎(chǔ)的工作也會(huì)無能為力,比如對數(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ī)無法對數(shù)字進(jìn)行加法和乘法運(yùn)算的問。
Zaremba 和 Sutskever 等人[5]使用強(qiáng)化學(xué)習(xí)代替了最原始的神經(jīng)圖靈機(jī)中使用的可微的讀寫技術(shù)來訓(xùn)練神經(jīng)機(jī)器翻譯。神經(jīng)隨機(jī)存取存儲(chǔ)器(NRAM)是基于指針工作的。目前,一些論文已經(jīng)對棧和隊(duì)列這種可微的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了探究[7,8]。而記憶網(wǎng)絡(luò)[9,10](memory networks)則是另一種解決類似問題的方法。
從某種客觀意義上來講,這些模型可以執(zhí)行的許多任務(wù)(例如學(xué)會(huì)如何對數(shù)字做加法),并不是十分困難。對于傳統(tǒng)的編程技術(shù)說,這些任務(wù)可以說是小菜一碟。但是神經(jīng)網(wǎng)絡(luò)可以處理許多其他的問題,而目前像神經(jīng)圖靈機(jī)這樣的模型的能力似乎仍然收到了很大限制,沒有被完全開發(fā)出來。
代碼
這些模型有許多開源的實(shí)現(xiàn)版本。神經(jīng)圖靈機(jī)的開源實(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 代碼是開源的,并已經(jīng)被 TensorFlow 的模型庫囊括了進(jìn)去(https://github.com/tensorflow/models/tree/master/neural_gpu )。記憶網(wǎng)絡(luò)的開源實(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 )等人的版本。
注意力機(jī)制
當(dāng)我們翻譯一個(gè)句子時(shí),我們會(huì)特別注意當(dāng)前翻譯的單詞。當(dāng)我們轉(zhuǎn)錄一段錄音時(shí),我們會(huì)仔細(xì)聽我們正努力寫下的章節(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ī)制生成的。我們用來操作的RNN 會(huì)生成一個(gè)搜索詞描述它想要關(guān)注的位置。每一項(xiàng)都會(huì)與搜索詞進(jìn)行點(diǎn)乘從而產(chǎn)生一個(gè)得分,該得分將描述其與搜索詞的匹配程度。這個(gè)得分將作為輸入送給Softmax 函數(shù),用來創(chuàng)建注意力分布。
在RNN 之間應(yīng)用注意力機(jī)制的一個(gè)場景是機(jī)器翻譯[11]。一個(gè)傳統(tǒng)的序列到序列(Seq2Seq)的模型必須將整個(gè)輸入歸結(jié)為一個(gè)單一的向量,然后將其反向擴(kuò)展得到翻譯結(jié)果。注意力機(jī)制通過使RNN 能夠處理輸入來傳遞它所看到的每一個(gè)單詞信息,然后在生成輸出的RNN 中將注意力集中在相關(guān)的單詞上。
圖片來源:Bahdanau 等人于2014 年發(fā)表的論文中的圖3(https://arxiv.org/pdf/1409.0473.pdf )
這種 RNN 之間的注意力機(jī)制已經(jīng)有許多其它的應(yīng)用場景。它能夠在語音識(shí)別[12]中被使用,使一個(gè) RNN 能夠處理音頻信息,然后讓另一個(gè) RNN 能夠?yàn)g覽它,在它生成音頻相應(yīng)的文字時(shí)將注意力放在相關(guān)的部分上。
圖片來源:Chan 等人于2015 年發(fā)表的論文(https://arxiv.org/pdf/1508.01211.pdf)。
這種注意力機(jī)制其它的應(yīng)用還包括文本解析[13],這時(shí)注意力機(jī)制讓模型能夠在生成解析樹時(shí)對單詞進(jìn)行掃描。而在對話建模[14]任務(wù)中,注意力機(jī)制使模型能在生成回應(yīng)文字時(shí),重點(diǎn)關(guān)注對話前面相關(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)用場景是「看圖說話」。首先,一個(gè)卷積網(wǎng)絡(luò)會(huì)對圖片進(jìn)行處理從而抽取高級特征;接著會(huì)運(yùn)行一個(gè) RNN 生成對圖像的描述。當(dāng)它生成描述中的每個(gè)單詞時(shí),RNN 會(huì)關(guān)注卷積神經(jīng)網(wǎng)絡(luò)對圖像相關(guān)部分的解釋。我們可以用下圖顯示地可視化這個(gè)過程:
圖片來源:(arXiv preprint arXiv:1502.03044, Vol 2(3), pp. 5. CoRR.)
更廣泛地說,當(dāng)我們想要與一個(gè)在輸出中有重復(fù)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)對接時(shí),可以使用注意力接口。
人們發(fā)現(xiàn)注意力接口是一種極具通用價(jià)值并且十分強(qiáng)大的技術(shù),并且正在被越來越廣泛地使用。
自適應(yīng)計(jì)算時(shí)間
標(biāo)準(zhǔn)的 RNN 在每個(gè)時(shí)間步上執(zhí)行相同數(shù)量的計(jì)算。這似乎并不符合直覺。當(dāng)然,我們要處理的問題變得更加復(fù)雜時(shí),人們是否應(yīng)該再多考慮考慮呢?此外,標(biāo)準(zhǔn) RNN 還將其操作長度為 n 的序列的時(shí)間復(fù)雜度限制為 O(n)。
自適應(yīng)計(jì)算時(shí)間[15]是一種讓 RNN 能夠在每一步之行不同數(shù)量的計(jì)算的方法。大體的思路很簡單:它讓RNN 能在每個(gè)時(shí)間步上進(jìn)行多步計(jì)算。
為了讓網(wǎng)絡(luò)學(xué)習(xí)需要計(jì)算多少步,我們希望步驟的數(shù)量可微。我們用我們曾經(jīng)使用過的技術(shù)來實(shí)現(xiàn)這一點(diǎn):我們并不運(yùn)行離散數(shù)量的步驟,而是對運(yùn)行的步數(shù)使用了一個(gè)注意力分布。它的輸出是每個(gè)步驟的輸出的加權(quán)組合。
上圖還忽略了一些更多的細(xì)節(jié)。下圖是在一個(gè)時(shí)間步上包含三個(gè)計(jì)算步驟的完整示意圖:
此圖描述的計(jì)算過程有些復(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)該在這一步停下來的概率。
我們對于緩沖權(quán)重的總預(yù)算上限為1,接著我們根據(jù)下圖最上面一行的計(jì)算流程進(jìn)行計(jì)算(從1 開始,每一步減去相應(yīng)的值)。當(dāng)它變得小于epsilon 時(shí),我們就停止計(jì)算。
當(dāng)我們停下來時(shí),可能還會(huì)有一些在緩沖預(yù)算之外還沒有計(jì)算完的部分,這是因?yàn)槲覀冊谄湫∮?epsilon 時(shí)就會(huì)停止計(jì)算。我們該如何處理這種情況呢?從技術(shù)上講,它被賦予了未來可以繼續(xù)計(jì)算的步驟,而我們現(xiàn)在并不想計(jì)算它,因此我們將現(xiàn)在的狀態(tài)定義為最后一步。
當(dāng)我們訓(xùn)練自適應(yīng)計(jì)算時(shí)間模型時(shí),可以在損失函數(shù)中添加一項(xiàng)「思考成本」(ponder cost),用來懲罰模型的累積計(jì)算時(shí)間。這一項(xiàng)越大,就會(huì)更加因?yàn)榻档陀?jì)算時(shí)間而降低性能,達(dá)到折中的目的。
自適應(yīng)計(jì)算時(shí)間是一種非常新的想法,但是我們相信它和類似的思想都是非常重要的。
代碼
目前唯一的「自適應(yīng)計(jì)算時(shí)間」模型的開源代碼似乎是Mark Neumann的版本(TensorFlow 版,https://github.com/DeNeutoy/act-tensorflow)。
神經(jīng)網(wǎng)絡(luò)編程器
神經(jīng)網(wǎng)絡(luò)在許多任務(wù)上的表現(xiàn)都非常出色,但它們又是也很難做到一些基本的事情。比如算術(shù)對于神經(jīng)網(wǎng)絡(luò)就很困難,而這對于普通的計(jì)算方法是輕而易舉的。如果有一種方法可以將神經(jīng)網(wǎng)絡(luò)與普通的編程方法融合在一起,就會(huì)取得最大的雙贏局面。
神經(jīng)網(wǎng)絡(luò)編程器[16]是一種解決該問題的方法。它會(huì)學(xué)著創(chuàng)建程序來解決這個(gè)問題。事實(shí)上,它能在不需要正確的程序?qū)嵗侗镜那闆r下生成這樣的程序。它會(huì)發(fā)現(xiàn)要想完成某種任務(wù),做為手段,需要如何生產(chǎn)出程序。
論文中實(shí)際的模型通過生成類 SQL 程序查詢表格來回答這個(gè)問題。然而,這種環(huán)境下的大量細(xì)節(jié)讓它變得有些復(fù)雜。所以我們不妨從想象一個(gè)稍微簡單一點(diǎn)的模型開始,它給出了一個(gè)算術(shù)表達(dá)式,并生成了一個(gè)模型來評估它。
生成的程序是一個(gè)操作序列。每個(gè)操作都被定義為對過去操作的輸出進(jìn)行操作。因此,一個(gè)操作可能類似于「將兩步前的操作的輸出和一步前的操作的輸出相加」。它更像是一個(gè)Unix 管道,而不是一個(gè)擁有被賦值并被讀取的變量的程序。
該程序由控制器RNN 一次生成一個(gè)操作。在每個(gè)步驟中,控制器RNN都會(huì)輸出下一個(gè)操作應(yīng)該是什么的概率分布。例如,這個(gè)概率可以用來模擬:我們可能非常確定我們想要在第一個(gè)時(shí)間步上執(zhí)行加法,然后在決定我們是否需要在第二步執(zhí)行乘法或除法的時(shí)候會(huì)很艱難,等等…
現(xiàn)在,最終得出的操作的分布可以被我們評估。我們并不是在每一步運(yùn)行一個(gè)操作,而是采用了普遍使用的注意力技巧,同時(shí)運(yùn)行所有的操作,再根據(jù)我們執(zhí)行這些操作的概率作為權(quán)重對所有的輸出一起取平均。
只要我們能夠通過這些操作定義導(dǎo)數(shù),程序的輸出在概率上就是可微的。接著,我們可以定義一個(gè)損失函數(shù),訓(xùn)練神經(jīng)網(wǎng)絡(luò)生成給出正確答案的程序。這樣一來,神經(jīng)網(wǎng)絡(luò)編程器就學(xué)會(huì)了在沒有正確程序范例的情況下生成程序。唯一的監(jiān)督信息就是程序應(yīng)該產(chǎn)生的返回值。
這就是神經(jīng)網(wǎng)絡(luò)編程器的核心思想,但是論文中的版本回答了關(guān)于表的問題,而不是關(guān)于算術(shù)表達(dá)式。下面我們還將給出一些實(shí)用的小技巧:
多種數(shù)據(jù)類型:神經(jīng)網(wǎng)絡(luò)編程器中的許多操作都會(huì)處理除標(biāo)量值之外的其他類型的數(shù)據(jù)。一些操作輸出選中的表的列或者選中的單元格。只有相同類型的輸出才能被合并到一起。
參考輸入:神經(jīng)網(wǎng)絡(luò)編程器需要回答類似于「有多少個(gè)人口超過1 百萬人的城市?」為了使回答這種問題更加容易,一些操作允許網(wǎng)絡(luò)參考他們正在回答的問題中的常量,或者列的名字。這種參考是由于注意力機(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é)到。
代碼
最新版本的用于問答的神經(jīng)網(wǎng)絡(luò)編程器(https://openreview.net/pdf?id=ry2YOrcge )已經(jīng)被其作者開源,并且可以作為 TensorFlow 模型獲?。╤ttps://github.com/tensorflow/models/tree/master/neural_programmer )。而神經(jīng)網(wǎng)絡(luò)編程器-解釋器也有由Ken Morishita編寫的Keras 版本(https://github.com/mokemokechicken/keras_npi )。
整體把握
從某種意義上說,一個(gè)人類拿著一張紙,比沒有紙的人聰明得多。一個(gè)有數(shù)學(xué)符號的人可以解決他們不能解決的問題。使用電腦使我們能夠做出不可思議的壯舉,否則它們將遠(yuǎn)遠(yuǎn)超出我們的能力范圍。
一般來說,很多有趣的智力形式似乎是人類的創(chuàng)造性啟發(fā)式直覺和一些更加直觀具體的媒介之間的相互作用,如語言或方程式。有時(shí),媒介是客觀存在的東西,為我們儲(chǔ)存信息,防止我們犯錯(cuò)誤,或者執(zhí)行繁瑣的計(jì)算任務(wù)。在其他情況下,媒介是我們在腦海中操縱的一個(gè)模型。無論如何,這對于智能來說都是至關(guān)重要的。
最近機(jī)器學(xué)習(xí)的結(jié)果已經(jīng)開始有了這種味道,將神經(jīng)網(wǎng)絡(luò)的直覺和其他東西結(jié)合起來。其中一種方法就是人們所說的「啟發(fā)式搜索」。例如,AlphaGo [19]有一個(gè)關(guān)于圍棋如何工作的模型,并且探索了在神經(jīng)網(wǎng)絡(luò)直覺指導(dǎo)下如何玩這個(gè)游戲的模型。類似地,DeepMath [20]利用神經(jīng)網(wǎng)絡(luò)表征操作數(shù)學(xué)表達(dá)式的直覺。我們在本文中談到的「增強(qiáng)的RNN」是另一種方法,將RNN 連接到專門設(shè)計(jì)的媒介上,以提高它們的泛化能力。
與媒介的相互作用自然包括「采取一系列行動(dòng)、進(jìn)行觀察、再采取進(jìn)一步的行動(dòng)」。在這里,我們面臨著一個(gè)巨大的挑戰(zhàn):我們?nèi)绾螌W(xué)習(xí)應(yīng)該采取怎樣的行動(dòng)?這聽起來是個(gè)強(qiáng)化學(xué)習(xí)問題,我們當(dāng)然可以采用這樣的做法。但是,強(qiáng)化學(xué)習(xí)技術(shù)實(shí)際上是解決該問題最復(fù)雜的版本,而且這種解決方案很難使用。注意力機(jī)制的精妙之處在于,它使我們能夠更容易地通過對部分位置以不同程度執(zhí)行所有的動(dòng)作來解決這個(gè)問題。這是因?yàn)槲覀兛梢栽O(shè)計(jì)像神經(jīng)圖靈機(jī)這樣的存儲(chǔ)結(jié)構(gòu)使我們能進(jìn)行細(xì)微的操作,并且使該問題可微。強(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ì)算開銷直線上升??梢韵氲降慕鉀Q方法就是讓你的注意力模型變得稀疏一些,這樣以來你就只需要對一部分存儲(chǔ)單元進(jìn)行操作。然而,這仍然是具有挑戰(zhàn)性的,因?yàn)槟憧赡芟胍屇愕淖⒁饬δP鸵蕾囉诖鎯?chǔ)單元的內(nèi)容,而這樣做會(huì)令你不得不查看每一個(gè)存儲(chǔ)單元。我們已經(jīng)觀察到,目前有一些初步的工作在常識(shí)解決這個(gè)問題,例如[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)出來!
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4814瀏覽量
103678 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8503瀏覽量
134647
原文標(biāo)題:循環(huán)神經(jīng)網(wǎng)絡(luò)的增強(qiáng)方法:注意力機(jī)制以及更多
文章出處:【微信號:worldofai,微信公眾號:worldofai】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
NVIDIA實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)渲染技術(shù)的突破性增強(qiáng)功能
BP神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的比較
BP神經(jīng)網(wǎng)絡(luò)的優(yōu)缺點(diǎn)分析
什么是BP神經(jīng)網(wǎng)絡(luò)的反向傳播算法
BP神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)的關(guān)系
人工神經(jīng)網(wǎng)絡(luò)的原理和多種神經(jīng)網(wǎng)絡(luò)架構(gòu)方法

評論