姓名:張玉軍 ?17021210876
轉(zhuǎn)載自:http://www.itdecent.cn/p/d3d7528b2963
【嵌牛導(dǎo)讀】數(shù)獨(dú)游戲如何用深度學(xué)習(xí)攻破?RRN是個(gè)什么東東?
【嵌牛鼻子】數(shù)獨(dú)游戲,深度學(xué)習(xí),RRN
【嵌牛提問】數(shù)獨(dú)游戲如何用深度學(xué)習(xí)攻破?
【嵌牛正文】引言
什么是關(guān)系推理?考慮上面的圖像,不要把這看成是球體,立方體等等。我們可以用數(shù)百萬(wàn)個(gè)數(shù)字構(gòu)成圖像像素值的來考慮它或者圖像中所有邊緣的角度或者考慮每個(gè)10x10像素區(qū)域。
試著回答下面的問題:“大球體左邊的棕色金屬物體留下的圓柱體的大小是多少?”這是來自CLEVR數(shù)據(jù)集的示例問題。為了回答它,你需要考慮對(duì)象相對(duì)于彼此的相對(duì)位置。這個(gè)對(duì)象和交互中心思維被稱為關(guān)系推理,它是人類智力的核心部分。
深度神經(jīng)網(wǎng)絡(luò)非常擅長(zhǎng)識(shí)別物體,但是當(dāng)涉及到它們的相互作用的推理時(shí),即使是最先進(jìn)的神經(jīng)網(wǎng)絡(luò)也不過如此。
例如,現(xiàn)有的卷積網(wǎng)絡(luò)可以很容易地識(shí)別上面圖像中的每個(gè)對(duì)象,但是由于它需要關(guān)于彼此的關(guān)于對(duì)象的推理,所以它沒有回答我們剛剛提到的那個(gè)問題。
Adam Santoro和他的合作者者提出了關(guān)系網(wǎng)(RN)。這是一個(gè)非常簡(jiǎn)單的模塊,可以將關(guān)系推理能力添加到任何神經(jīng)網(wǎng)絡(luò)中。他們將一個(gè)RN添加到標(biāo)準(zhǔn)的卷積網(wǎng)絡(luò)中,并在CLEVR數(shù)據(jù)集上訓(xùn)練最終獲得了超人類性能。他們還將其用于BaBi——一個(gè)文本問題解答任務(wù),而且解決了20個(gè)任務(wù)中的18個(gè)。
RN在深度學(xué)習(xí)領(lǐng)域向前邁出了重要一步,但它也有其局限性。它的構(gòu)建方式是,每個(gè)被識(shí)別的對(duì)象只能與其他被識(shí)別的對(duì)象進(jìn)行一次交互,之后網(wǎng)絡(luò)必須給出答案。這是RN的限制,因?yàn)樗荒芡茖?dǎo)導(dǎo)出的交互,即對(duì)象A影響了對(duì)象B,反過來影響對(duì)象C等等。在RN中,對(duì)象A必須直接影響對(duì)象C,或者根本不能影響對(duì)象C。這看起來這種方法有些呆萌。
為了解決這個(gè)限制,我們引入了遞歸關(guān)系網(wǎng)絡(luò)(RRN)。RRN執(zhí)行多個(gè)步驟,而不是僅執(zhí)行關(guān)聯(lián)推理的單個(gè)步驟。在每個(gè)步驟中,每個(gè)對(duì)象都受到其他對(duì)象的影響,同時(shí)也考慮到它自己以前的狀態(tài)。這允許交互可以從一個(gè)對(duì)象傳播到另一個(gè)對(duì)象,從而形成復(fù)雜的交互鏈。
為了表明RRN可以解決需要非常復(fù)雜的關(guān)系推理的問題,我們使用它來解決數(shù)獨(dú)(Sudoku)難題。
現(xiàn)在,有很多算法來解決Sudokus。RRN在兩個(gè)重要的方面不同于這些傳統(tǒng)的算法:
1.這是一個(gè)神經(jīng)網(wǎng)絡(luò)模塊,從數(shù)據(jù)中學(xué)習(xí)算法,而不是手工制作。
2.它可以被添加到任何其他的神經(jīng)網(wǎng)絡(luò)中進(jìn)行端到端的訓(xùn)練,并給神經(jīng)網(wǎng)絡(luò)賦予一個(gè)復(fù)雜的關(guān)系推理能力。
對(duì)于那些不熟悉Sudoku拼圖的人來說,這是一個(gè)數(shù)字難題,在9x9網(wǎng)格中有81個(gè)單元格。每個(gè)單元格都是空的,或者從一開始就包含一個(gè)數(shù)字(1-9)。我們的目標(biāo)是用一個(gè)數(shù)字填充每個(gè)空單元格,使得每列,每行和3×3不重疊的數(shù)字包含1到9的數(shù)字。看到下面的兩個(gè)圖像,一個(gè)相對(duì)簡(jiǎn)單的數(shù)獨(dú):30個(gè)給定的細(xì)胞和紅色的解決方案。
你不能一步步推斷Sudoku的解決方案。它需要很多步驟的方法演繹,中間結(jié)果,并可能嘗試幾個(gè)部分的解決方案之前找到正確的。
我們訓(xùn)練了一個(gè)RRN來解決Sudokus,通過考慮每個(gè)單元格的一個(gè)對(duì)象,這個(gè)對(duì)象影響到同一行、列和框中的每個(gè)其他單元格。我們沒有告訴它任何策略,也沒有提供任何其他的提示。神經(jīng)網(wǎng)絡(luò)學(xué)到了一個(gè)強(qiáng)大的策略,即使是最困難的數(shù)獨(dú)也只有17個(gè)回應(yīng),成功率達(dá)到96.6%。為了比較,其他的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)并未能解決這些難題中的任何一個(gè),盡管具有更多參數(shù)且被訓(xùn)練更長(zhǎng)時(shí)間。
在每個(gè)步驟,RRN為1-9個(gè)數(shù)字上的每個(gè)小區(qū)輸出一個(gè)概率分布,表示網(wǎng)絡(luò)認(rèn)為應(yīng)該在該小區(qū)中的哪個(gè)數(shù)字。
這是巴比數(shù)據(jù)集中一個(gè)簡(jiǎn)單的問題。
瑪麗在那里喝牛奶。
約翰去了臥室。
桑德拉回到了廚房。
瑪麗走向走廊。
牛奶在哪里?
我們也訓(xùn)練了BaBi數(shù)據(jù)集的RRN,并且我們解決了19/20個(gè)任務(wù)。相比之下RN同樣也解決了19/20的最先進(jìn)的稀疏的可微神經(jīng)計(jì)算機(jī)。值得注意的是,RRN花費(fèi)了大約24小時(shí)的時(shí)間在四臺(tái)GPU上進(jìn)行訓(xùn)練,而RN在10臺(tái)GPU上花費(fèi)了幾天的時(shí)間。我們認(rèn)為這是因?yàn)镽RN被設(shè)計(jì)來解決需要多于一個(gè)推理步驟的問題。
遞歸關(guān)系網(wǎng)絡(luò)(RRN)是一個(gè)通用模塊,它可以用強(qiáng)大的關(guān)系推理能力來增強(qiáng)任何神經(jīng)網(wǎng)絡(luò)模型性能。
我們認(rèn)為關(guān)系推理對(duì)許多任務(wù)都很重要。例如,玩游戲,Go或Starcraft II,需要識(shí)別和推理游戲中的對(duì)象,以預(yù)測(cè)行動(dòng)的長(zhǎng)期結(jié)果。另一個(gè)例子是自駕車。要安全駕駛,必須識(shí)別相關(guān)的物體,例如汽車,騎自行車的人,停車標(biāo)志等,以及他們將如何相互作用的原因。