神經(jīng)圖靈機(jī) Neural Turing Machine-DeepMind

Neil Zhu,簡書ID Not_GOD,University AI 創(chuàng)始人 & Chief Scientist,致力于推進(jìn)世界人工智能化進(jìn)程。制定并實(shí)施 UAI 中長期增長戰(zhàn)略和目標(biāo),帶領(lǐng)團(tuán)隊(duì)快速成長為人工智能領(lǐng)域最專業(yè)的力量。
作為行業(yè)領(lǐng)導(dǎo)者,他和UAI一起在2014年創(chuàng)建了TASA(中國最早的人工智能社團(tuán)), DL Center(深度學(xué)習(xí)知識(shí)中心全球價(jià)值網(wǎng)絡(luò)),AI growth(行業(yè)智庫培訓(xùn))等,為中國的人工智能人才建設(shè)輸送了大量的血液和養(yǎng)分。此外,他還參與或者舉辦過各類國際性的人工智能峰會(huì)和活動(dòng),產(chǎn)生了巨大的影響力,書寫了60萬字的人工智能精品技術(shù)內(nèi)容,生產(chǎn)翻譯了全球第一本深度學(xué)習(xí)入門書《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》,生產(chǎn)的內(nèi)容被大量的專業(yè)垂直公眾號(hào)和媒體轉(zhuǎn)載與連載。曾經(jīng)受邀為國內(nèi)頂尖大學(xué)制定人工智能學(xué)習(xí)規(guī)劃和教授人工智能前沿課程,均受學(xué)生和老師好評(píng)。

作者:
Alex Graves gravesa@google.com
Greg Wayne gregwayne@google.com
Ivo Danihelka danihelka@google.com
Google DeepMind, London, UK

原文:http://arxiv.org/pdf/1410.5401.pdf

gitbook 鏈接

悠長的歷史會(huì)讓人迷失在巨大的信息中,所以直接從第三節(jié)開始給出神經(jīng)圖靈機(jī)的介紹、解釋和實(shí)驗(yàn)分析。

3 神經(jīng)圖靈機(jī)

神經(jīng)圖靈機(jī)包含兩個(gè)基本組成部分:神經(jīng)網(wǎng)絡(luò)控制器和記憶庫。

神經(jīng)圖靈機(jī)

控制器通過輸入輸出向量和外界交互。不同于標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)的是,控制器還會(huì)使用選擇性的讀寫操作和記憶矩陣進(jìn)行交互。類比于圖靈機(jī),我們將網(wǎng)絡(luò)的參數(shù)化這些操作的輸出稱為“讀頭”。
最關(guān)鍵的是,每個(gè)組成部分都是可微的,這樣可以更加直接地使用梯度下降進(jìn)行訓(xùn)練。我們通過定義?模糊的讀寫操作根據(jù)一個(gè)更高或者更低的度(degree)和的記憶中的所有元素進(jìn)行交互(而不是像在正常的圖靈機(jī)或者數(shù)字計(jì)算機(jī)那樣一次只是處理一個(gè)單個(gè)的元素)。這個(gè)模糊的度由一種注意力聚焦機(jī)制確定,將每個(gè)讀寫操作限制在記憶中的一小塊上,忽略其他部分。因?yàn)楹陀洃浀慕换ナ歉叨认∈璧?,NTM 傾向于無干擾地存儲(chǔ)數(shù)據(jù)。進(jìn)入注意力聚焦的記憶位置由讀頭特定的輸出確定。這些輸出定義了一個(gè)規(guī)范化的權(quán)重在記憶矩陣的行上(對(duì)應(yīng)于內(nèi)存位置)。每個(gè)權(quán)重,對(duì)應(yīng)于一個(gè)讀頭或者寫頭,定義了在每個(gè)位置讀寫的程度。讀頭可以在單個(gè)位置相當(dāng)重視或者分散精力在若干位置。

3.1讀

令 $$M_t$$ 為 $$N\times M$$ 在時(shí)間 $$t$$ 的記憶矩陣,其中 $$N$$ 是記憶位置的數(shù)目,而 $$M$$ 是每個(gè)位置的向量的大小。令 $$\mathbf{w}_t$$ 是在時(shí)間 t 一個(gè)讀頭輸出的在 N 個(gè)位置上的向量。因?yàn)樗袡?quán)重都是規(guī)范化的,$$\mathbf{w}_t$$ 的 N 個(gè)元素 $$w_t(i)$$ 遵循下面的限制:

由讀頭返回的長度為 $$M$$ 的讀向量 $$r_t$$ 定義成一個(gè)記憶中行向量 $$M_t(i)$$ 凸包:

這顯然是對(duì)記憶和權(quán)重都是可微的。

3.2 寫

受到 LSTM 中的輸入和忘記門的啟發(fā),我們將每個(gè)寫操作分解成了兩個(gè)部分:消除和添加:erase + add。

給定在時(shí)間 t 寫頭輸出的權(quán)重 w_t,跟上一個(gè)消除向量 e_t 其中 M 個(gè)元素都是在 (0,1) 之內(nèi)的,來自前一個(gè)時(shí)間步記憶向量 M_{t-1}(i) 做出如下修改:


其中 $$\mathbf{1}$$ 是元素都是 $$1$$ 的行向量,按點(diǎn)進(jìn)行每個(gè)記憶位置的乘法。因此,記憶位置的元素重置為 0 如果在位置處的權(quán)重和消除元素都是 1;如果兩個(gè)中有一個(gè)為 0,記憶就保持不變。當(dāng)多個(gè)寫頭給出了,消除操作可以按照任意的順序進(jìn)行,因?yàn)槌朔▽?shí)際上是可交換的。

每個(gè)寫頭同樣還會(huì)產(chǎn)生一個(gè)長度為 M 的加法向量 a_t,這個(gè)會(huì)在每個(gè)消除步執(zhí)行后被加到記憶中:

另外,多個(gè)頭進(jìn)行的加法操作的順序是不相關(guān)的。所有寫頭上的消除和添加操作產(chǎn)生了在時(shí)間 $$t$$ 最終的記憶內(nèi)容。由于消除和添加操作都是可微的,符合寫操作就也是可微的了。注意到,消除和添加向量有 $$M$$ 個(gè)獨(dú)立的部分,這樣可以更好地控制在每個(gè)內(nèi)存位置上的那些需要修改的元素。

3.3 尋址機(jī)制

盡管我們已經(jīng)展示了讀寫操作的方程,還沒有描述權(quán)重如何產(chǎn)生。這些權(quán)重是通過合并兩個(gè)尋址機(jī)制產(chǎn)生的。第一個(gè)機(jī)制,“基于內(nèi)容的尋址”,將注意力集中在基于當(dāng)前值和控制器產(chǎn)生的值之間的相似度來確定的位置上。這和 Hopfiled 網(wǎng)絡(luò)的基于內(nèi)容尋址方式是相似的。(Hopfield 1982)這樣的好處是檢索變得簡單,僅僅需要控制器去產(chǎn)生存儲(chǔ)數(shù)據(jù)的部分的近似,然后這個(gè)值會(huì)和內(nèi)存進(jìn)行比較從而產(chǎn)生準(zhǔn)確的存儲(chǔ)值。

然而,不是所有的問題都是適合基于內(nèi)容的尋址的。在某些任務(wù)中,變量的內(nèi)容是任意的,但是變量仍然需要可識(shí)別的名稱或者地址。算術(shù)問題就屬于這一類:變量 $$x$$ 和變量 $$y$$ 可以用兩個(gè)值作為輸入,但是過程 $$f(x,y) = x \times y$$ 仍然需要定義。對(duì)該任務(wù)的控制值需要以 $$x$$ 和 $$y$$ 作為輸入,將他們存放在不同的地址中,然后對(duì)他們進(jìn)行檢索,并執(zhí)行乘法算法。這種情形下,變量通過地址進(jìn)行檢索,而不是內(nèi)容。我們將這種類型的尋址稱為“基于地址的尋址”?;趦?nèi)容的尋址嚴(yán)格上比基于地址的尋址更加一般,因?yàn)閮?nèi)存地址中的內(nèi)容可以包含地址的信息。不過在我們的實(shí)驗(yàn)中,提供基于地址的尋址作為原語曹組可以對(duì)某些形式的泛化更加有效(essential),所以我們將兩種機(jī)制同時(shí)采用了。

圖 2 展示了整個(gè)尋址系統(tǒng)的流程圖,包含了在讀或者寫的時(shí)候構(gòu)造一個(gè)權(quán)重向量的操作的順序。

圖 2

3.3.1 通過內(nèi)容聚焦

對(duì)基于內(nèi)容尋址,每個(gè)讀頭(用在讀或者寫上)首先會(huì)產(chǎn)生一個(gè)長度為 M 的 key vector $$k_t$$,這個(gè)會(huì)和每個(gè)向量 $$M_t(i)$$ 通過相似性度量 $$K[\dot,\dot]$$ 進(jìn)行比較?;趦?nèi)容的系統(tǒng)產(chǎn)生了一個(gè)正規(guī)化的權(quán)重 $$w_t^c$$ 基于相似度和正的 key strength $$\beta_t$$,這個(gè)可以擴(kuò)大或者減少聚焦(focus)的準(zhǔn)確度:

在我們現(xiàn)在的實(shí)現(xiàn)中,相似性度量就是余弦相似度:

3.3.2 通過位置聚焦

基于位置的尋址機(jī)制為了利用在內(nèi)存的空間上進(jìn)行簡單的迭代和隨機(jī)訪問跳躍的好處。這是通過一個(gè)權(quán)重的旋轉(zhuǎn)變換來實(shí)現(xiàn)的。例如,如果當(dāng)前權(quán)重聚焦在一個(gè)單個(gè)位置上,$$1$$ 的旋轉(zhuǎn)將會(huì)聚焦到下一個(gè)位置。而一個(gè)負(fù)的變換則會(huì)將權(quán)重聚焦到相反的方向上。

在旋轉(zhuǎn)前,每個(gè)讀頭產(chǎn)生一個(gè)標(biāo)量的 interpolation gate $$g_t$$,其值在 $$(0,1)$$ 內(nèi)。$$g$$ 的值被用來在前一個(gè)時(shí)間步讀頭產(chǎn)出的權(quán)重 $$w_{t-1}$$ 和在當(dāng)前時(shí)間步內(nèi)容系統(tǒng)的產(chǎn)出的權(quán)重 $$w_t^c$$ 之間進(jìn)行合成(blend)得到 gated weighting $$w_t^g$$:

如果這個(gè) gate 是 $$0$$,那么內(nèi)容權(quán)重就整個(gè)被忽略了,就會(huì)使用前一時(shí)間步的權(quán)重。相反,如果 gate 是 $$1$$,來自前一步的權(quán)重就完全被忽略了,整個(gè)系統(tǒng)就使用了基于內(nèi)容的尋址。

在 interpolation 之后,每個(gè)讀頭產(chǎn)生一個(gè) shifting 權(quán)重 $$s_t$$,在所有允許的整數(shù)偏移上的定義了一個(gè)正規(guī)化的分布。例如,如果在 $$-1$$ 到 $$1$$ 之間的 shifting 權(quán)重被允許,$$s_t$$ 就有是哪個(gè)元素對(duì)應(yīng)于偏移的程度 $$-1$$,$$0$$ 和 $$1$$。定義偏移權(quán)重的最簡單的方式就是使用一個(gè)在跟控制器相關(guān)的合適大小 softmax 層。我們還實(shí)驗(yàn)了另一種技術(shù),其中控制器產(chǎn)生一個(gè)單個(gè)標(biāo)量被解釋為一個(gè)在偏移上的均勻分布的寬度下界。例如,如果偏移變量是 $$6.7$$,那么 $$s_t(6) = 0.3$$,$$s_t(7) = 0.7$$,剩下的就是 $$s_t = 0$$。

如果我們將 $$N$$ 個(gè)內(nèi)存位置索引為 $$0$$ 到 $$N-1$$,那么通過 s_t 應(yīng)用在 w_t^g 上的選擇可以按照下面的 circular 卷積表示:

其中所有的索引算術(shù)都是進(jìn)行了模 $$N$$ 處理。在偏移權(quán)重不很平緩時(shí),卷積操作可能會(huì)隨時(shí)間產(chǎn)生權(quán)重的丟失或者發(fā)散(leakage or dispersion)例如,如果偏移 -1 0 1 給定了權(quán)重 0.1 0.8 0.1,那么旋轉(zhuǎn)將會(huì)轉(zhuǎn)換權(quán)重聚焦在一個(gè)單一的點(diǎn)變成三個(gè)點(diǎn)上的模糊不清。為了避免這個(gè)情況,每個(gè)讀頭產(chǎn)生一個(gè)另一個(gè)標(biāo)量 $$\gamma_t\geq 1$$,其作用就是將最終的權(quán)重變得更加的陡峭:

權(quán)重 interpolation 和基于內(nèi)容及地址機(jī)制合并的尋址系統(tǒng)可以以三種互補(bǔ)方式執(zhí)行。第一,權(quán)重可以通過內(nèi)容系統(tǒng)選出而不需要位置系統(tǒng)的支持。第二,通過內(nèi)容尋址系統(tǒng)產(chǎn)生的權(quán)重可以被選擇然后進(jìn)行偏移。這使得聚焦可以跳到緊鄰的下一個(gè)位置,但是不能夠跳到由內(nèi)容獲取的位置;用計(jì)算機(jī)科學(xué)術(shù)語就是這允許讀頭找到連續(xù)的數(shù)據(jù)塊,并在這個(gè)塊中獲取一個(gè)特定的元素。第三,來自前一個(gè)時(shí)間步的權(quán)重可以不用任何基于內(nèi)容尋址系統(tǒng)的輸入進(jìn)行旋轉(zhuǎn)。這可以讓權(quán)重可以通過一系列的尋址在每個(gè)時(shí)間步增加同樣的距離進(jìn)行。

3.4 控制器網(wǎng)絡(luò)

上面描述的神經(jīng)圖靈機(jī)架構(gòu)有幾個(gè)自由參數(shù),包括內(nèi)存的大小,讀寫頭的數(shù)量和允許的位置偏移的范圍。但是可能表現(xiàn)最好的選擇是將神經(jīng)網(wǎng)絡(luò)作為控制器。特別地,我們需要確定是否使用一個(gè)循環(huán)或者前驅(qū)神經(jīng)網(wǎng)絡(luò)。諸如 LSTM 這樣的循環(huán)控制器有其本身的內(nèi)存,可以作為矩陣中更大的內(nèi)存的補(bǔ)充。如果我們將此控制器和計(jì)算機(jī)的中央處理器,將內(nèi)存矩陣和 RAM 進(jìn)行對(duì)比,那么循環(huán)神經(jīng)網(wǎng)絡(luò)的控制器的隱藏層激活就和處理器重的多個(gè)時(shí)間步相關(guān)了。他們可以用控制器來混合多個(gè)時(shí)間步的信息。另一方面,前驅(qū)控制器可以通過在每一步內(nèi)存中進(jìn)行讀寫模仿一個(gè)循環(huán)網(wǎng)絡(luò)。甚至,前驅(qū)控制器常常能給出更大的網(wǎng)絡(luò)操作的透明度,因?yàn)閺膬?nèi)存矩陣中讀出和寫入到內(nèi)存矩陣通常比一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)的內(nèi)部狀態(tài)更容易解釋。然而,前驅(qū)控制器的一個(gè)缺點(diǎn)就是并發(fā)讀和寫頭會(huì)產(chǎn)生NTM的計(jì)算瓶頸。使用單一的讀頭,就只能執(zhí)行一個(gè)在每個(gè)時(shí)間步對(duì)單個(gè)的內(nèi)存向量進(jìn)行一元變換,兩個(gè)讀頭則可以進(jìn)行雙向量變換,如此類推。循環(huán)控制器可以內(nèi)部存儲(chǔ)前一個(gè)時(shí)間步的讀向量,所以不會(huì)受到這個(gè)的限制。

4. 實(shí)驗(yàn)

本節(jié)給出一些基本的實(shí)驗(yàn),在一些簡單算法任務(wù)上,例如數(shù)據(jù)的復(fù)制和排序。不僅僅是為了展示 NTM 能夠解決這些問題,而且說明了 NTM 能夠通過學(xué)習(xí)緊致的內(nèi)部程序。這些解決方案的特點(diǎn)是他們可以超越訓(xùn)練數(shù)據(jù)的界限。例如,我們很好奇如果一個(gè)網(wǎng)絡(luò)已經(jīng)學(xué)會(huì)了復(fù)制 20 長度的序列,是不是它就可以復(fù)制長度 100 的序列,而不需要額外的訓(xùn)練。

對(duì)所有的實(shí)驗(yàn),我們比較了三個(gè)架構(gòu):使用前驅(qū)控制器的 NTM,LSTM 控制器的 NTM 和標(biāo)準(zhǔn)的 LSTM 網(wǎng)絡(luò)。因?yàn)樗腥蝿?wù)都是按階段的,我們就在每個(gè)輸入序列的開始重置了網(wǎng)絡(luò)的動(dòng)態(tài)狀態(tài)。對(duì) LSTM 網(wǎng)絡(luò),這種設(shè)置下前一時(shí)間步的隱藏狀態(tài)就是一個(gè)學(xué)到的偏差向量。對(duì) NTM 控制器的前一個(gè)狀態(tài),前一階段讀出的向量,和內(nèi)存的內(nèi)容都會(huì)重設(shè)置為偏差值。所有這些任務(wù)都是監(jiān)督學(xué)習(xí)問題,其目標(biāo)是二元的;所有網(wǎng)絡(luò)都是 logistic sigmoid 輸出層并且使用了 cross-entropy 目標(biāo)函數(shù)訓(xùn)練。序列預(yù)測誤差按照 bits-per-sequence 進(jìn)行匯報(bào)。更多細(xì)節(jié)參見 4.6 節(jié)的實(shí)驗(yàn)參數(shù)。

4.1 復(fù)制

復(fù)制任務(wù)測試 NTM 是否能夠存儲(chǔ)和復(fù)現(xiàn)一個(gè)任意信息的長序列。網(wǎng)絡(luò)會(huì)用隨機(jī)二元向量作為輸入序列,并跟上一個(gè)分隔符。對(duì)長期時(shí)間段的信息的存儲(chǔ)和獲取是循環(huán)神經(jīng)網(wǎng)絡(luò)和其他一些動(dòng)態(tài)架構(gòu)的弱項(xiàng)。我們特別想知道 NTM 是不是能夠比 LSTM 更好地銜接更長的時(shí)間間隔。

網(wǎng)絡(luò)訓(xùn)練復(fù)制 8 個(gè)bit 的隨機(jī)向量,其中序列長度是 1 到 20 之間隨機(jī)值。目標(biāo)序列簡單就是輸入序列的副本(不含有分隔符)注意在網(wǎng)絡(luò)接收到目標(biāo)時(shí),并沒有輸入給網(wǎng)絡(luò),這樣保證它可以不要任何幫助回憶起整個(gè)序列。

正如在圖 3 中展示的那樣,NTM(用前驅(qū)或者 LSTM 控制器)比單單的 LSTM 學(xué)得更快,并且收斂到一個(gè)更低的代價(jià)上。而 NTM 和 LSTM 學(xué)習(xí)曲線之間的明顯差距也給出了一個(gè)可以定性分析兩個(gè)模型解決這個(gè)問題方式的不同。

圖 4
圖 5

我們同樣研究了這些網(wǎng)絡(luò)泛化到更長序列的能力。圖 4 和圖 5 展示了 LSTM 和 NTM 在這個(gè)設(shè)置下的行為差異巨大。NTM 在長度增加時(shí)還能夠復(fù)制,不過 LSTM 在超過 20 長度后迅速變差。

圖 6

前面的分析說明和 LSTM 不同 NTM它已經(jīng)學(xué)到某種形式的復(fù)制算法。為了確定這種算法是怎么樣的,我們檢查了控制器和內(nèi)存之間的交互,見圖 6。我們相信操作序列可以被下列偽代碼總結(jié):

initialise: move head to start location

while input delimiter not seen do

  • receive input vector
  • write input to head location
  • increment head location by 1

end while
return head to start location

while true do

  • read output vector from head location
  • emit output
    *increment head location by 1

end while

這實(shí)際上就是一個(gè)人類程序員在低級(jí)程序設(shè)計(jì)語言上執(zhí)行同樣任務(wù)的方式。用數(shù)據(jù)結(jié)構(gòu)的術(shù)語看,我們可以說 NTM 已經(jīng)學(xué)會(huì)了如何創(chuàng)建和數(shù)據(jù)迭代。注意算法合并了基于內(nèi)容的尋址(跳到序列的開始)和基于位置的尋址(在序列上進(jìn)行移動(dòng))。同樣要注意不增加從前一個(gè)讀寫權(quán)重相對(duì)偏移的能力迭代可能不會(huì)推廣到長的序列(公式 7) 以及不使用聚焦增陡(sharpening)機(jī)制(公式 9)權(quán)重可能就隨時(shí)間丟失精度了。

4.2 重復(fù)復(fù)制

重復(fù)復(fù)制任務(wù)以輸出復(fù)制的序列指定次數(shù)并輸出一個(gè)序列終止符作為復(fù)制任務(wù)的擴(kuò)展。我們進(jìn)行這個(gè)實(shí)驗(yàn)的動(dòng)機(jī)是想看看 NTM 是否可以學(xué)習(xí)一個(gè)嵌套的函數(shù)。理想目標(biāo)是,我們希望它可以執(zhí)行一個(gè) for 循環(huán),包含任意已經(jīng)學(xué)到的子過程。

網(wǎng)絡(luò)接受了隨機(jī)長度的隨機(jī)二元向量序列,跟隨一個(gè)標(biāo)量值表示復(fù)制的次數(shù),使用一個(gè)分開的輸入信道進(jìn)行。為了在正確的時(shí)間輸出終止標(biāo)志網(wǎng)絡(luò)必須能夠解釋額外的的輸入并保存已經(jīng)進(jìn)行過了的復(fù)制次數(shù)。和復(fù)制任務(wù)類似,在初始化序列和復(fù)制數(shù)目之后并沒有其他輸入給網(wǎng)絡(luò)。網(wǎng)絡(luò)訓(xùn)練的目標(biāo)是重新產(chǎn)生長度為 $$8$$ 的隨機(jī)二元向量,其中序列長度和復(fù)制次數(shù)都是從 $$1$$ 到 $$10$$ 之間隨機(jī)選擇的。代表重復(fù)次數(shù)的輸入被正規(guī)化為均值為 $$0$$ 方差為 $$1$$。

圖 7
圖 8
圖 9

圖 7 展示了 NTM比 LSTM 在這個(gè)任務(wù)上學(xué)習(xí)得更快,但是都是能夠很好地解決這個(gè)問題。其中這兩個(gè)架構(gòu)的差異就是在讓進(jìn)行更加泛化的任務(wù)時(shí)變得明顯了。我們這里考量了兩個(gè)維度的泛化:序列長度和重復(fù)數(shù)目。圖 8 分別對(duì) NTM 和 LSTM 解釋了前者 2 倍的效果及后后者 2 倍的效果。LSTM 在這兩種情形下都出問題了,NTM 對(duì)更長的序列也是有效的,并且可以執(zhí)行超過 10 次的重復(fù);不過 NTM 不能夠保持自己已經(jīng)完成了多少次重復(fù),沒有能夠正確預(yù)測正確的終止符。這可能是數(shù)值表示重復(fù)次數(shù)的后果,因?yàn)檫@樣不能夠輕易地進(jìn)行超過一個(gè)固定長度的泛化。

圖 9 給出了 NTM 學(xué)到一個(gè)在前一節(jié)中復(fù)制算法的簡單擴(kuò)展,其中序列化讀取重復(fù)了足夠多次。

4.3 關(guān)聯(lián)回憶

前面的任務(wù)展示了 NTM可以應(yīng)用算法到相對(duì)簡單、線性數(shù)據(jù)結(jié)構(gòu)上。下一個(gè)復(fù)雜性就出現(xiàn)在帶有指針的數(shù)據(jù)結(jié)構(gòu)上——其中的項(xiàng)指向另一個(gè)。我們測試了 NTM 學(xué)習(xí)這類更加有趣的結(jié)構(gòu)的實(shí)例上,通過構(gòu)造一個(gè)項(xiàng)目的列表是的查詢其中一個(gè)項(xiàng)目需要網(wǎng)絡(luò)返回后續(xù)的項(xiàng)目。更加細(xì)節(jié)地說,我們定義一個(gè)項(xiàng)目作為二元向量的序列,通過左右終止符來進(jìn)行限制。在幾個(gè)項(xiàng)目已經(jīng)被傳遞給網(wǎng)絡(luò)后,我們通過展示一個(gè)隨機(jī)的項(xiàng)目進(jìn)行查詢,我們讓網(wǎng)絡(luò)產(chǎn)生這個(gè)項(xiàng)目后面的一個(gè)。在我們的實(shí)驗(yàn)中,每個(gè)項(xiàng)目包含三個(gè) 6 bit 的二元向量(總共就是 18 bit 每項(xiàng)目)。在訓(xùn)練的時(shí)候,我們使用最小 2 項(xiàng)目和最大 6 個(gè)項(xiàng)目在每個(gè)階段(episode)。

圖 10
圖 11

圖 10 展示了 NTM 比 LSTM 學(xué)習(xí)的速度明顯快很多,在接近 30,000 episode 的時(shí)候接近 0 的代價(jià),而 LSTM 并沒有在 100 萬 episode 后達(dá)到 0 的代價(jià)。另外,采用前驅(qū)控制器的 NTM 比使用 LSTM 控制器的 NTM 學(xué)習(xí)的速度更加快。這兩個(gè)結(jié)果表明 NTM 的外存的確是比 LSTM 的內(nèi)部內(nèi)存更加有效的一種維持?jǐn)?shù)據(jù)結(jié)構(gòu)的方式。NTM 同樣比 LSTM 在更加長的序列上泛化得更好,可以在圖 11 中看到。使用前驅(qū)控制器的 NTM 對(duì) 接近 12個(gè)項(xiàng)目的情形下接近完美的效果(兩倍于訓(xùn)練數(shù)據(jù)的最大長度),仍然有低于 15 個(gè)項(xiàng)目的序列每序列 1 bit 的平均代價(jià)。

圖 12

在圖 12 中,我們展示了在一個(gè)單個(gè)測試 episode 通過一個(gè) LSTM 控制讀頭的 NTM 內(nèi)存操作。在“?Inputs”中,我們看到輸入代表項(xiàng)目的分隔符在第 7 行作為單一的 bit。在項(xiàng)目的序列已經(jīng)進(jìn)行傳遞后,在第 8 行的一個(gè)分隔符讓網(wǎng)絡(luò)準(zhǔn)備接受一個(gè)查詢項(xiàng)目。這里,查詢項(xiàng)目對(duì)應(yīng)于在序列中(在綠色盒子中)的第二個(gè)項(xiàng)目。在“?Outputs”中,我們看到了網(wǎng)絡(luò)給出了輸出在訓(xùn)練中的項(xiàng)目 3 (在紅色盒子中)。在“讀取權(quán)重”中,在最后三個(gè)時(shí)間步,我們看到控制器從連續(xù)位置上讀取了項(xiàng)目 3 的時(shí)間分片。這非常奇怪,因?yàn)檫@看起來網(wǎng)絡(luò)已經(jīng)直接跳到了正確的存儲(chǔ)項(xiàng)目 3 的位置。然而,我們可以解釋這個(gè)行為通過看“寫權(quán)重”。這里我們發(fā)現(xiàn),內(nèi)存甚至在輸入給出了一個(gè)分隔符的時(shí)候進(jìn)行了寫操作。我們可以在“Add”確認(rèn)這個(gè)數(shù)據(jù)實(shí)際上在給定分隔符的時(shí)候已經(jīng)寫入內(nèi)存(比如,在黑色盒子中的數(shù)據(jù));而且,每次分隔符出現(xiàn),加入到內(nèi)存中的向量是不同的。更多的分析揭示出網(wǎng)絡(luò)在通過使用基于內(nèi)容的查找獲得了器讀取后相應(yīng)的位置移動(dòng)一位的位置。另外,使用內(nèi)容查找的 key 對(duì)應(yīng)于添加到這個(gè)黑色盒子的向量。這其實(shí)表示了下面的算法:在每個(gè)項(xiàng)目分隔符給出的時(shí)候,控制器寫一個(gè)該項(xiàng)目的前三個(gè)時(shí)間片壓縮的表示。在查詢過來時(shí),控制器重新計(jì)算同樣的查詢的壓縮表示,使用基于內(nèi)容的查找來獲得第一次寫表示的位置,然后偏移 1 位來產(chǎn)生后續(xù)的序列中的項(xiàng)目(這樣就把基于內(nèi)容的查找和基于位置的偏移結(jié)合起來了)。

4.4 動(dòng)態(tài) N-Grams

動(dòng)態(tài) N-Grams 任務(wù)的目標(biāo)就是測試 NTM 是否可以快速適應(yīng)新的預(yù)測分布。特別地,我們對(duì) NTM 是否能使用其內(nèi)存作為一個(gè)重寫的表,可以用來保存變換統(tǒng)計(jì)的數(shù)量,因此來衡量傳統(tǒng)的 N-Gram 模型。
我們考慮所有可能的在二元序列上的 6-Gram 分布。每 6-Gram 分布可以被表示成一個(gè) $$2^5 = 32$$ 個(gè)數(shù)字的表,表示了在給定所有可能的長度為 5 的二元?dú)v史序列時(shí)下一個(gè) bit 為 1 的概率。對(duì)每個(gè)訓(xùn)練樣本,我們首先通過獨(dú)立地從 $$Beta(\frac{1}{2},\frac{1}{2})$$ 中采樣所有 32 個(gè)概率產(chǎn)生隨機(jī)的 6-Gram 的概率。

我們?nèi)缓笫褂卯?dāng)前的查找表通過采樣 200 個(gè)按 bit 順序產(chǎn)生的特殊的訓(xùn)練序列。這個(gè)網(wǎng)絡(luò)一次看序列的一個(gè) bit,然后被詢問預(yù)測下一個(gè) bit。這個(gè)問題的最有預(yù)測器可以通過貝葉斯分析(Murphy,2012)獲得:

圖 13

其中 $$c$$ 是在前面的上下文中的 5 個(gè)bit,$$B$$ 則是下一個(gè) bit 的值,而 $$N_0$$ 和 $$N_1$$ 在序列中目前為止?對(duì)應(yīng)于 0 和 1 的次數(shù)。因此,我們可以將 NTM 和 LSTM 進(jìn)行對(duì)比。為了衡量性能,我們使用了一個(gè)從 1000 個(gè) 長度為 200 的序列,從和訓(xùn)練數(shù)據(jù)同樣的分布中采樣出來的。如圖 13 所示,NTM 獲得了小的但是顯著地性能提升,但是并沒有達(dá)到最優(yōu)的代價(jià)。這兩種架構(gòu)在觀察到新的輸入時(shí)的進(jìn)化在圖 14 中進(jìn)行了展示,并加上最優(yōu)預(yù)測進(jìn)行比對(duì)。NTM 內(nèi)存使用情況的分析(圖 15)表明控制器使用內(nèi)存來計(jì)算有多少個(gè) 1 和 0,已經(jīng)在不同的上下文中看到了,這樣使得能夠?qū)崿F(xiàn)類似于最優(yōu)估計(jì)的算法。

圖 14
圖 15

4.5 優(yōu)先級(jí)排序

圖 16

這個(gè)任務(wù)測試 NTM 是否能對(duì)數(shù)據(jù)進(jìn)行排序——重要的基本算法。隨機(jī)二元序列向量的序列跟隨一個(gè)標(biāo)量的優(yōu)先級(jí)作為網(wǎng)絡(luò)的輸入。優(yōu)先級(jí)是從 $$[-1,1]$$ 之間進(jìn)行均勻采樣的。木i包含根據(jù)優(yōu)先級(jí)進(jìn)行排序后的二元向量,如圖 16 所示。

圖 17

每個(gè)輸入序列包含 20 個(gè)二元向量,及對(duì)應(yīng)的優(yōu)先級(jí),每個(gè)目標(biāo)序列是輸入中 $$16$$ 個(gè)最高優(yōu)先級(jí)向量。NTM 的內(nèi)存使用情況檢查讓我們得出一個(gè)假設(shè),它使用優(yōu)先級(jí)來確定每次寫得相對(duì)位置。為了檢測這個(gè)假設(shè),我們擬合了一個(gè)優(yōu)先級(jí)線性函數(shù)到觀測的寫位置。圖 17 展示了由這個(gè)線性函數(shù)緊緊的匹配的觀測到得些位置。同樣還展示了網(wǎng)絡(luò)從內(nèi)存位置中讀出是按照遞增順序,就是對(duì)排序的序列進(jìn)行遍歷。

圖 18

圖 18 中的學(xué)習(xí)曲線展示了使用了前驅(qū)控制器和 LSTM 控制器的 NTM 從本質(zhì)上在這個(gè)任務(wù)上超過了 LSTM。注意到 8 個(gè)并行的讀和寫頭需要用來在次任務(wù)上擁有最優(yōu)的性能;這可能會(huì)反映出僅僅使用一元的向量操作就能夠?qū)ο蛄窟M(jìn)行排序的難度。

4.6 實(shí)驗(yàn)細(xì)節(jié)

對(duì)所有的實(shí)驗(yàn),RMSProp 算法用來進(jìn)行訓(xùn)練,按照 Graves 2013 的研究形式并以 momentum 為 $$0.9$$。表 1 到 3 給出了網(wǎng)絡(luò)配置和學(xué)習(xí)率的細(xì)節(jié)。所有的 LSTM 網(wǎng)絡(luò)有三個(gè) stacked 隱藏層。注意 LSTM 參數(shù)的數(shù)量隨著隱藏元的個(gè)數(shù)以平方增長(由于遞歸鏈接的緣故)。這個(gè)和 NTM 不同,其中參數(shù)的數(shù)量并不會(huì)隨著內(nèi)存位置的數(shù)量而增加。在反向傳播訓(xùn)練中,所有的梯度部分都限制在 $$(-10,10)$$ 之間。

表 1
表 2
表 3

5 總結(jié)

我們介紹了 NTM,一種從生物可行內(nèi)存和數(shù)字計(jì)算機(jī)的啟發(fā)產(chǎn)生的神經(jīng)網(wǎng)絡(luò)架構(gòu)。如同傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),這個(gè)架構(gòu)也是可微的端對(duì)端的并且可以通過梯度下降進(jìn)行訓(xùn)練。我們的實(shí)驗(yàn)展示了它有能力從樣本數(shù)據(jù)中學(xué)習(xí)簡單的算法并且能夠?qū)⑦@些算法推廣到更多的超越了訓(xùn)練樣本本身的數(shù)據(jù)上。

6 致謝

Many have offered thoughtful insights, but we would especially like to thank Daan Wierstra,
Peter Dayan, Ilya Sutskever, Charles Blundell, Joel Veness, Koray Kavukcuoglu,
Dharshan Kumaran, Georg Ostrovski, Chris Summerfield, Jeff Dean, Geoffrey Hinton, and
Demis Hassabis

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容