當前位置:
首頁 > 新聞 > 基於Sonnet,DeepMind開源可微神經計算機實現包

基於Sonnet,DeepMind開源可微神經計算機實現包

選自Github

機器之心編譯

參與:蔣思源


去年 DeepMind 在自然期刊上曾介紹過一種記憶增強式的神經網路形式-可微神經計算機。而近日,DeepMind 開源了可微神經計算機的實現,該實現是基於 TensorFlow 和可在 TensorFlow 中快速構建神經網路的 Sonnet。

項目地址:https://github.com/deepmind/dnc

機器之心報道的可微神經計算機:

  • 業界 | DeepMind 深度解讀 Nature 論文:可微神經計算機

  • 資源 | DeepMind 提出的可微神經計算機架構的 TensorFlow 實現

該開源包提供可微神經計算機(論文發表在自然期刊)的實現。

任何使用源代碼展現該研究成果的出版物必須引用「Hybrid computing using a neural network with dynamic external memory」, Nature 538, 471–476 (October 2016) doi:10.1038/nature20101。

簡介

當研究者設計 DNC 時,他們想要機器能夠學習自己構建和引導複雜的數據結構。DNC 的核心是一個被稱為控制器(controller)的神經網路,其類似於計算機中的處理器。控制器的作用是獲取輸入、讀取和寫入記憶、以及生成可以被解讀為答案的輸出。而其記憶(memory)則是一個位置(location)的集合,其中每個位置都存儲了一個信息向量。

控制器可以在記憶上執行多種操作。在每一個時鐘,它都會選擇是否寫入記憶。如果它選擇寫入記憶,它可以選擇將信息存儲在一個新的、未經使用過的位置或已經包含了該控制器正在搜索的信息的位置。這讓控制器可以更新一個位置所存儲的內容。如果記憶中所有的位置都用盡了,該存儲器可以決定釋放一些位置,這就像計算機可以重新分配不再需要的存儲空間一樣。當該控制器執行寫入時,它會發送一個信息向量到記憶中被選中的位置。每一次寫入信息時,這些位置都會被關聯鏈接(links of association)連接起來,這代表了信息被存儲的順序。

除了寫入,控制器也可以從記憶中的多個位置讀取信息。它可以基於每個位置的內容對記憶進行搜索,即可以通過關聯時間鏈接(associative temporal links)向前和向後回調以順序或反序寫入的信息。其讀取出的信息可被用於生成問題的答案或在某個環境中要採取的行動。總的來說,這些操作讓 DNC 可以選擇如何重新分配記憶、在記憶中存儲信息、以及輕鬆地找到存儲在記憶中的信息。

基於Sonnet,DeepMind開源可微神經計算機實現包

架構的圖示。其神經網路控制器可接收外部輸入,並基於這些輸入通過讀取和寫入操作(這些操作被稱為 head)與記憶進行交互。為了幫助控制器引導記憶,DNC 會存儲「時間鏈接(temporal links)」以追蹤內容被寫入的順序,DNC 還會記錄每個記憶位置的當前「使用(usage)」水平。

可微神經計算機是一種循環神經網路。在每一個時間步中,它的狀態由當前記憶內容和諸如記憶使用的輔助信息組成,並將在時間 t 的輸入映射到時間 t 的輸出。該架構能作為 RNNCore 模塊的集合而實現,RNNCore 允許將不同的模塊嵌入到一起以試驗架構上的變體。

  • 訪問模塊(access module)是主 DNC 邏輯發生的地方,因為其是記憶寫入和讀取的位置。在每一時間步,訪問模塊的輸入是從 controller 傳遞的向量,而輸出是從記憶讀取的內容。該模塊使用兩個更深的RNNCores :TemporalLinkage 追蹤記憶寫入的順序,Freeness 追蹤哪些記憶位置已經被寫入,並沒有隨後「被釋放」。這些都在 addressing.py 定義了。

  • 控制器模塊(The controller module)「控制」記憶的訪問。通常情況下,其為一個前饋或 LSTM 網路(可能是深層網路),該模塊的輸入是整個循環神經網路的即時輸入,其與前一時間步訪問模塊的讀取記憶輸出相級聯。

  • DNC 將簡單地封裝訪問模塊和控制模塊,並形成整個架構的基本 RNNCore 單元。這一部分在 dnc.py。

基於Sonnet,DeepMind開源可微神經計算機實現包

訓練

DNC 要求安裝 TensorFlow 和 Sonnet。下面提供了一個示例訓練腳本,該示例可以使用 python 解釋器運行:


$ ipython train.py

通過 flags 你能夠指定訓練選項,包括模型參數和優化器:


$ python train.py --memory_size=64 --num_bits=8 --max_length=3

# Or with ipython:

$ ipython train.py -- --memory_size=64 --num_bits=8 --max_length=3

定期保存或「檢查點」在模型默認情況下是禁用的。如需要啟用它,請使用 checkpoint_interval flag。例如--checkpoint_interval=10000 將確保每 10000 步將創建一個檢查點。該模型默認將檢查點放入/tmp/tf/dnc,從這裡可以恢復訓練。要指定替代檢查點目錄,需使用 checkpoint_dir flag。請注意,在不同模型參數恢復訓練之前需要確保 /tmp/tf/dnc/ 已經刪除,以避免參數分布不一致錯誤。

更一般的,在 dnc.py 找到的 DNC 類可以用作標準 TensorFlow RNN 內核,並可以使用 TensorFlow rnn ops 展開,例如在任何序列任務的 tf.nn.dynamic_rnn。

免責聲明:該開源包不是谷歌官方產品。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

商湯科技獲賽領資本6000萬美元投資,將加速商業化布局
Adobe提出新方法,可將隨機梯度下降用作近似貝葉斯推理
神經網路:從基本概念到新的可能性
UC Berkeley教授:還原論遠不是通向人工智慧的坦途

TAG:機器之心 |

您可能感興趣

支持Python!Facebook開源預測工具Prophet
開源 .net license tool, EasyLicense !
超薄+開源,一款鑰匙大小的Linux計算機PocketBeagle
阿里巴巴積極擁抱開源 正式開源全球化OpenMessaging和ApsaraCache項目
Oracle 開源 Serverless Functions 平台 Fn
TensorFlow Agents日前開源,輕鬆在TensorFlow中構建並行強化學習演算法
TensorFLow可應用於Android Things的物聯網;GitHub發布開源指南
DeepMind開源Sonnet:可在TF中快速構建神經網路
Facebook開源Zstandard新型壓縮演算法代替Zlib 簡單使用
谷歌通過TensorFlow Object Detection API開源其物體識別系統
Facebook 開源新一代機器學習 GPU 伺服器 Big Basin;谷歌召開 Google Cloud Next 雲技術大會等
重磅!阿里巴巴正式開源全球化OpenMessaging和ApsaraCache項目
「深度學習測顏值」基於TensorFlow的開源項目FaceRank
OpenAI開源機器人模擬軟體Roboschool
Linux基金會開源物聯網邊緣計算項目:EdgeX Foundry
大規模Kafka集群的管理利器:LinkedIn最新開源的Cruise Control帶來了什麼?
XSS OR 開源,Hack with JavaScript
WPS Office for Linux項目中止 計劃開源Linux代碼
GitHub開發者呼籲Adobe將Flash開源