《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 學(xué)界 | 老論文沒有源碼?14年神經(jīng)圖靈機(jī)的復(fù)現(xiàn)被接收為大會(huì)論文

學(xué)界 | 老論文沒有源碼?14年神經(jīng)圖靈機(jī)的復(fù)現(xiàn)被接收為大會(huì)論文

2018-08-15

在篇篇論文都是 state-of-the-art 的年代,論文的可復(fù)現(xiàn)性與官方代碼一直受到研究者的關(guān)注,我們希望知道實(shí)際的模型性能或改進(jìn)方法到底有沒有原論文寫的那么好。最近都柏林圣三一學(xué)院的研究者通過一篇論文描述如何復(fù)現(xiàn) 14 年提出的神經(jīng)圖靈機(jī),并同時(shí)公開了源代碼。他們表示原論文沒有提供源代碼,且其它研究者復(fù)現(xiàn)的代碼在速度和性能上都有缺陷,因此他們重新使用 TensorFlow 仔細(xì)復(fù)現(xiàn)了這篇論文。目前該論文已被 ICANN 2018 接收。


項(xiàng)目地址:https://github.com/MarkPKCollier/NeuralTuringMachine


神經(jīng)圖靈機(jī)(NTM)[4] 是幾種新的神經(jīng)網(wǎng)絡(luò)架構(gòu) [4, 5, 11] 的一個(gè)實(shí)例,這些架構(gòu)被分類為記憶增強(qiáng)神經(jīng)網(wǎng)絡(luò)(MANN)。MANN 的典型特征是存在外部記憶單元。這與門控循環(huán)神經(jīng)網(wǎng)絡(luò)(如長短期記憶單元(LSTM),其記憶是一個(gè)在時(shí)間維度上保持不變的內(nèi)部向量)不同。LSTM 已在許多商業(yè)上重要的序列學(xué)習(xí)任務(wù)中取得了當(dāng)前最優(yōu)性能,如手寫體識(shí)別 [2]、機(jī)器翻譯 [12] 和語音識(shí)別 [3]。但是,已經(jīng)證明了 MANN 在一些需要一個(gè)大型存儲(chǔ)器和/或復(fù)雜的存儲(chǔ)器訪問模式的人工序列學(xué)習(xí)任務(wù)上優(yōu)于 LSTM,如長序列記憶和圖遍歷 [4, 5, 6, 11]。


NTM 文章的原作者沒有提供其實(shí)現(xiàn)的源碼。NTM 的開源實(shí)現(xiàn)是存在的,但是其中一些實(shí)現(xiàn)報(bào)告顯示,在訓(xùn)練期間,它們的實(shí)現(xiàn)梯度有時(shí)會(huì)變成 NaN,導(dǎo)致培訓(xùn)失敗。然而其他開源代碼會(huì)報(bào)告收斂緩慢或不報(bào)告其實(shí)現(xiàn)的學(xué)習(xí)速度。缺乏可靠的 NTM 開源實(shí)現(xiàn)使得從業(yè)者更難將 NTM 應(yīng)用于新問題,使得研究者更難去改進(jìn) NTM 框架。


本文定義了一個(gè)成功的 NTM 實(shí)現(xiàn),該實(shí)現(xiàn)學(xué)會(huì)完成三個(gè)基準(zhǔn)的序列學(xué)習(xí)任務(wù) [4]。作者指定了控制 NTM 實(shí)現(xiàn)的可選參數(shù)集合,并對(duì)其他開源的 NTM 實(shí)現(xiàn)中的許多記憶內(nèi)容初始化方案進(jìn)行了經(jīng)驗(yàn)對(duì)比,發(fā)現(xiàn)如何選擇 NTM 記憶內(nèi)容初始化方案是能否成功實(shí)現(xiàn) NTM 的關(guān)鍵。作者在另一個(gè)開源的 NTM 實(shí)現(xiàn)上建立了 Tensorflow 實(shí)現(xiàn),但在得出實(shí)驗(yàn)結(jié)果之后,作者對(duì)記憶內(nèi)容初始化、控制器頭部參數(shù)計(jì)算和接口進(jìn)行了重大改變,從而使其能更快地收斂,更可靠地優(yōu)化,并且更容易與現(xiàn)有的 Tensorflow 方法集成。


這個(gè)存儲(chǔ)庫包含神經(jīng)圖靈機(jī)的一個(gè)穩(wěn)定、成功的 Tensorflow 實(shí)現(xiàn),已經(jīng)在原論文的 Copy,Repeat Copy 和 Associative Recall 任務(wù)上進(jìn)行了測試。


應(yīng)用


from ntm import NTMCell

cell = NTMCell(num_controller_layers, num_controller_units, num_memory_locations, memory_size,
 num_read_heads, num_write_heads, shift_range=3, output_dim=num_bits_per_output_vector,
 clip_value=clip_controller_output_to_value)

outputs, _ = tf.nn.dynamic_rnn(
 cell=cell,
 inputs=inputs,
 time_major=False)


該實(shí)現(xiàn)源自另一個(gè)開源 NTM 實(shí)現(xiàn) https://github.com/snowkylin/ntm。作者對(duì)鏈接的代碼做了微小但有意義的更改,使得實(shí)現(xiàn)中的訓(xùn)練變得更加可靠,收斂更加快速,同時(shí)更容易與 Tensorflow 集成。該論文的貢獻(xiàn)是:


作者比較了三種不同的記憶初始化方案并發(fā)現(xiàn)將神經(jīng)圖靈機(jī)的記憶內(nèi)容初始化為小的常數(shù)值比隨機(jī)初始化或通過記憶初始化的反向傳播效果要好。

作者將 NTM 控制器的輸出剪切到一個(gè)范圍內(nèi),有助于解決優(yōu)化的困難。

NTMCell 實(shí)現(xiàn)了 Tensorflow RNNCell 接口(https://www.tensorflow.org/api_docs/python/tf/contrib/rnn/RNNCell),因此可以直接與 tf.nn.dynamic_rnn 等一起使用。

從未像其他一些實(shí)現(xiàn)一樣,看到損失出現(xiàn) NaN 的情況。

作者實(shí)現(xiàn)了 NTM 論文中 5 個(gè)任務(wù)中的 3 個(gè)。與 LSTM、DNC 和 3 個(gè)記憶內(nèi)容初始化方案相比,作者進(jìn)行了很多實(shí)驗(yàn)并報(bào)告了實(shí)現(xiàn)的收斂速度和泛化性能。


論文:Implementing Neural Turing Machines

微信圖片_20180815134159.jpg


論文地址:https://arxiv.org/abs/1807.08518


神經(jīng)圖靈機(jī)(NTM)是記憶增強(qiáng)神經(jīng)網(wǎng)絡(luò)的一個(gè)實(shí)例,是一類新的循環(huán)神經(jīng)網(wǎng)絡(luò),通過引入外部記憶單元將計(jì)算從存儲(chǔ)器中分離。NTM 在一些序列學(xué)習(xí)任務(wù)上的性能要優(yōu)于長短期記憶單元。存在許多 NTM 的開源實(shí)現(xiàn),但是它們?cè)谟?xùn)練時(shí)不穩(wěn)定,同時(shí)/或者無法重現(xiàn) NTM 該有的性能。本文介紹了成功實(shí)現(xiàn) NTM 的細(xì)節(jié)。本文的實(shí)現(xiàn)學(xué)習(xí)去解決 NTM 原文中的 3 個(gè)序列學(xué)習(xí)任務(wù)。作者發(fā)現(xiàn)記憶內(nèi)容初始化方案的選擇對(duì)于能否成功實(shí)現(xiàn) NTM 至關(guān)重要。記憶內(nèi)容初始化為小常數(shù)值的網(wǎng)絡(luò)平均收斂速度是第二名記憶內(nèi)容初始化方案的 2 倍。


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


NTM 由一個(gè)控制器網(wǎng)絡(luò)和一個(gè)外部記憶單元組成,控制器網(wǎng)絡(luò)可以是一個(gè)前饋神經(jīng)網(wǎng)絡(luò)或一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò),外部存儲(chǔ)器單元是 N * W 的記憶矩陣,其中 N 表示記憶位置的數(shù)量,W 表示每個(gè)記憶單元的維度。無論控制器是否是循環(huán)神經(jīng)網(wǎng)絡(luò),整個(gè)架構(gòu)都是循環(huán)的,因?yàn)橛洃浘仃嚨膬?nèi)容不隨時(shí)間而變化??刂破骶哂性L問記憶矩陣的讀寫頭。在一個(gè)特定記憶單元上讀或?qū)懙挠绊懲ㄟ^一個(gè)軟注意力機(jī)制進(jìn)行加權(quán)。這種尋址機(jī)制類似于神經(jīng)機(jī)器翻譯中使用的注意力機(jī)制 [1, 9],不同之處在于,它將基于位置的尋址與這些注意力機(jī)制中基于內(nèi)容的尋址相結(jié)合。


5 結(jié)果


5.1 記憶初始化方案對(duì)比


作者根據(jù)常數(shù)初始化方案初始化的 NTM 收斂到接近 0 誤差,比學(xué)習(xí)的初始化方案快約 3.5 倍,而隨機(jī)初始化方案無法在分配的時(shí)間內(nèi)解決 Copy 任務(wù)(圖 1)。

微信圖片_20180815134242.jpg

圖 1:Copy 任務(wù)不同記憶初始化方案下,學(xué)習(xí)曲線的對(duì)比。對(duì)于根據(jù)常數(shù)、學(xué)習(xí)的和隨機(jī)的初始化方案初始化的每一個(gè) NTM 來說,誤差是每訓(xùn)練 10 次后取中值。


根據(jù)常數(shù)初始化方案初始化的 NTM 收斂到接近 0 的誤差,比學(xué)習(xí)的初始化方案快約 1.15 倍,比隨機(jī)初始化方案快 5.3 倍(圖 3)。

微信圖片_20180815134316.jpg

圖 3:Associative Recall 任務(wù)在不同記憶初始化方案下,學(xué)習(xí)曲線的對(duì)比。對(duì)于根據(jù)常數(shù)、學(xué)習(xí)的和隨機(jī)的初始化方案初始化的每一個(gè) NTM 來說,誤差是每訓(xùn)練 10 次后取中值。


5.2 架構(gòu)比較

微信圖片_20180815134357.jpg

圖 4:Copy 任務(wù)采用不同架構(gòu)時(shí),學(xué)習(xí)曲線的對(duì)比。對(duì)于 DNC,NTM 和 LSTM 來說,誤差是每訓(xùn)練 10 次后取中值。

微信圖片_20180815134422.jpg

圖 6:Associative Recall 任務(wù)采用不同架構(gòu)時(shí)學(xué)習(xí)曲線的對(duì)比。對(duì)于 DNC、NTM 和 LSTM 來說,誤差是每訓(xùn)練 10 次后取中值。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。