0
本文作者: 三川 | 2017-04-08 16:52 |
去年 DeepMind 作出決定,將全部研究搬到 TensorFlow 框架上進(jìn)行。
近一年時(shí)間過(guò)去,回頭來(lái)看,DeepMind 認(rèn)為這項(xiàng)選擇十分正確——許多模型的學(xué)習(xí)過(guò)程大幅加速;TensorFlow 內(nèi)置的分布式訓(xùn)練功能,還幫助工程師們極大得精簡(jiǎn)了代碼。
在這過(guò)程中,DeepMind 發(fā)現(xiàn):TensorFlow 的靈活性和可適性,使得以它為基礎(chǔ)、為特定任務(wù)開(kāi)發(fā)專(zhuān)用高級(jí)框架變得十分可行。
DeepMind 就開(kāi)發(fā)了一個(gè)能在 TensorFlow 上快速創(chuàng)建神經(jīng)網(wǎng)絡(luò)模塊的高級(jí)框架,名為 Sonnet。
雷鋒網(wǎng)消息,兩天前,其代碼被上傳到 GitHub。昨夜,DeepMind 在官方博客宣布了這一消息:Sonnet 正式開(kāi)源。
對(duì)于 TensorFlow 而言,自從其在 2015 年末開(kāi)源,一個(gè)由眾多高級(jí)算法庫(kù)組成的多樣生態(tài)系統(tǒng),便已圍繞著它迅速發(fā)展起來(lái)。這些高級(jí)工具,允許常用任務(wù)以更簡(jiǎn)便、更快的方式完成,極大節(jié)省了開(kāi)發(fā)者的時(shí)間精力。
作為該生態(tài)的新成員,Sonnet 也是如此。它與現(xiàn)有的神經(jīng)網(wǎng)絡(luò)算法庫(kù)有許多共同點(diǎn),但部分功能專(zhuān)為 DeepMind 的研究需要而設(shè)計(jì)。
這并不是 Sonnet 的源代碼頭一回被公開(kāi)——據(jù)雷鋒網(wǎng)了解,幾個(gè)月前 DeepMind 開(kāi)源的算法庫(kù) “Learning to learn”,以及去年 6月發(fā)表的論文 《Learning to learn by gradient descent by gradient descent》,就包含了早期的 Sonnet 代碼?,F(xiàn)在,該算法庫(kù)的完全版本以 “Sonnet” 新名稱(chēng)重新包裝。
DeepMind 在博客上表示:
“我們?nèi)栽诓粩嚅_(kāi)發(fā)這一代碼庫(kù),但當(dāng)前版本已經(jīng)對(duì)我們的研究貢獻(xiàn)巨大。接下來(lái)的代碼發(fā)布,將以今日發(fā)布的版本為基礎(chǔ)。
向公眾開(kāi)源 Sonnet,能方便 DeepMind 與深度學(xué)習(xí)社區(qū)分享我們的算法模型。當(dāng)然,我們也殷切希望,Sonnet 能夠幫助社區(qū)同仁將研究更進(jìn)一步。最近幾個(gè)月,我們已經(jīng)開(kāi)源了公司的旗艦平臺(tái) DeepMind Lab,并正在和動(dòng)視暴雪合作,針對(duì)《星際爭(zhēng)霸 2 》的AI 研究開(kāi)發(fā)開(kāi)源 API 。更多工具的發(fā)布正在路上,我們將會(huì)在官網(wǎng)開(kāi)源頁(yè)面與大家分享,敬請(qǐng)期待?!?/p>
雷鋒網(wǎng)獲知,Sonnet 走的是面向?qū)ο螅╫bject-oriented)的路子,與 Torch/NN 類(lèi)似,使得定義某些運(yùn)算前饋通路(forward pass)的模塊能夠被創(chuàng)建出來(lái)。模塊使用輸入 Tensor 來(lái)調(diào)用,這向計(jì)算圖(Graph)添加任務(wù),并返回輸出 Tensor。其中一項(xiàng)設(shè)計(jì)目標(biāo),是確保以透明的方式進(jìn)行變量分享。這是通過(guò)對(duì)同個(gè)模塊接下來(lái)的調(diào)用,自動(dòng)重復(fù)使用變量來(lái)實(shí)現(xiàn)。
DeepMind 認(rèn)為,許多深度學(xué)習(xí)文獻(xiàn)中的模型,可被看做是一個(gè)等級(jí)結(jié)構(gòu)(hierarchy)。比方說(shuō),一個(gè) Differentiable Neural Computer (可微分神經(jīng)計(jì)算機(jī))包含一個(gè)控制器,這有可能是一個(gè) LSTM,后者可按照包含標(biāo)準(zhǔn)線性層的形式來(lái)執(zhí)行。DeepMind 發(fā)現(xiàn),編寫(xiě)明確代表了子模塊的代碼,使得代碼重復(fù)使用變得更容易,試驗(yàn)變得更快。因此,對(duì)于能在內(nèi)部 declare 其他子模塊的模塊,Sonnet 支持鼓勵(lì)其編寫(xiě);或者在模型創(chuàng)建期間傳遞給其他模塊。
DeepMind 認(rèn)為十分有用的另外一項(xiàng)技術(shù),是允許特定模塊在隨機(jī)聚集的 Tensor 群組上運(yùn)行。RNN 的狀態(tài),最適合于以異構(gòu) Tensor 集合來(lái)表示,用扁平列表來(lái)表示它們很容易會(huì)導(dǎo)致錯(cuò)誤。Sonnet 提供了處理這些隨機(jī)等級(jí)結(jié)構(gòu)的功能,所以改變你的試驗(yàn),使用另一種 RNN,并不需要繁冗地修改代碼。DeepMind 已經(jīng)對(duì)核心 TensorFlow 做了修改,以更好地支持這一使用情況。
Sonnet 專(zhuān)為 TensorFlow 而設(shè)計(jì),因此并不會(huì)導(dǎo)致用戶(hù)無(wú)法訪問(wèn)底層細(xì)節(jié),比如 Tensors 和 variable_scopes。在 Sonnet 中編寫(xiě)的模型,可與原始 TensorFlow 代碼自由地混在一起,和其他高級(jí)算法庫(kù)也可以。
最后,DeepMind 在博客上表示將會(huì)不斷更新 Sonnet,使開(kāi)源版本與公司內(nèi)部使用版本相吻合。
via deepmind
相關(guān)文章:
DeepMind 彈性權(quán)重鞏固算法讓 AI 擁有“記憶” ,將成機(jī)器高效學(xué)習(xí)的敲門(mén)磚
從 AlphaGo 說(shuō)起, DeepMind 官方回顧 2016 年大事記
繼 OpenAI 之后,DeepMind 開(kāi)源深度學(xué)習(xí)訓(xùn)練平臺(tái) DeepMind Lab
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。