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