【為什麼我們要挑選這篇文章】蓋房子是玩 Minecraft 的樂趣之一,近期有科學家開發 3D 神經元細胞自動機(3D NCA),讓 AI 學會在 Minecraft 蓋房子。或許我們哪一天玩創世神,會在裡面遇到 AI 玩家呢!(責任編輯:郭家宏)
本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請連繫出處
作者:量子位
了解遊戲「當個創世神(MineCraft)」的讀者,一定很熟悉這樣的畫面。

但是,如果蓋房子的不是人,而是 AI 呢?
這是來自哥本哈根信息技術大學、約克大學和上海大學的學者,利用 3D 神經元細胞自動機(NCA)完成的新研究。
不僅能生成靜態結構,例如公寓,樹木、城堡:


還能生成功能性機器,比如爬行的毛毛蟲:

把它一切兩段,還會玩再生術,成功分身……
(咦~有畫面感了)
這是怎麼做到的?
科學家開發 3D 神經元細胞自動機,讓 AI 學會蓋房子
研究者其實是受到「生命遊戲」中元胞自動機(CA)的啟發,在 2D 基礎上開發了 3D 神經元細胞自動機(NCA)。
「生命遊戲」就是基於元胞自動機的原理製作的,也可以說是元胞自動機的一個展示。
它是由英國數學家約翰.康威在 1970 年發明的。在網格中,每個方格居住著一個細胞,其狀態由其周圍的 8 個細胞決定,以黑色代表細胞存活。
之後,許多研究採用了更為複雜的神經網絡規則,被稱為神經元細胞自動機(NCA)。但是其應用大多侷限於 2D 結構,或是只能生成簡單的 3D 結構。
為了提高 NCA 在實際應用中的通用性,研究團隊開發了 3D NCA。
它利用 3D 卷積捕捉周圍更多的細胞,以生成複雜的 3D 結構,並且具有更多類型的建造單元。

研究人員試圖利用 NCA 從單個活細胞生成目標實體,利用監督學習對重建損失進行優化。
並且,將「當個創世神」中的實體作為 3D 網格中的細胞,其狀態向量包含:塊類型、存活狀態、隱藏狀態。
但是,由於每個單元是單一的塊類型,於是他們將結構重建任務視為一個多類分類問題,預測給定單元的類型。
利用 Pytorch 提供的 LogSoftmax 和 NLLLoss 方法組合,以實現是在目標與預測的細胞結構之間,最小的交叉熵損失。
這種損失導致性能不穩定,並且模型展現出對「空氣」塊的偏好。
在訓練中,「空氣」塊通常佔據了所選結構的大部分,因此,訓練數據不平衡可能會導致模型過度預測。
為解決這一問題,研究人員根據是否歸類為「空氣」塊,將損失計算劃分為兩部分,並且增加了一個交叉重疊(IOU)成本,測量非「空氣」塊與實體之間的絶對差,以此提升精度。
NCA 蓋房子,效果如何?
針對模型在靜態結構和動態功能機器的重構性能,研究人員進行了評估,並記錄了各項參數。
結果顯示,NCA 的重構能力具有穩健性:


不過,NCA 對於構建較大的實體(比如:教堂)仍具有挑戰性,因為模型經常陷入局部極小值,需要更長的時間來訓練。
儘管大教堂模型比一些實體的損失更低,但有許多隨機生成的結構,因此沒有其他實體自然。目標結構與生成效果的對比: