新智元報道
編輯:如願 好睏 桃子
【新智元導讀】
可能你都想不到,一位不是計算機專業的UP主竟在「我的世界」裡搭建出世界首個紅石人工智慧,就連圖靈獎得主LeCun轉發稱讚。
耗時半年,B站UP主終於在「我的世界」實現了首個紅石人工智慧。
可以說,這是世界上第一個純紅石神經網路。
不僅可以實現15×15手寫數字識別,最重要的是,準確率能夠達到80%!
目前,這個影片已經有106萬播放量,收穫無數網友好評關注。
就連圖靈獎得主,LeNet架構提出者,Yann LeCun還在社交媒體上轉發了這個影片。
首個「紅石人工智慧」
紅石是我的世界中的一種獨特的材料。
它是傳遞紅石訊號的主要元器件,開關、紅石火把和紅石塊等能對導線或物體提供類似電流的能量。
而紅石電路能夠為玩家建造起來可以用於控制或啟用其他機械的結構。
電路本身既可以被設計為用於響應玩家的手動啟用,也可以讓其自動工作——或是反覆輸出訊號,或是響應非玩家引發的變化。
因此,在我的世界中,能夠被紅石控制的機械類別幾乎覆蓋了你能夠想象到的極限。
小到最簡單的機械(如自動門與光開關),大到佔地巨大的電梯、自動農場、小遊戲平臺,甚至遊戲內建的計算機。
也就是說,想要擴大在我的世界中可遊玩的深度,對紅石電路的玩轉一定要了如指掌。
UP主@辰佔鰲頭建立的世界首個紅石神經網路就是個典例。
作者玩梗寫了一個摘要,提到
我們使用非傳統的計算方式——隨機計算來實現神經網路,使得設計和佈局上比傳統的全精度計算簡單許多,且單次理論識別時間僅為5分鐘。
就拿作者演示手寫的2、5來說吧,可以看出其識別程度和置信度直接拉滿。
在具體實現過程中,作者在影片裡展示了所包含的元素:
單個神經元:接受多個輸入,產生一個輸出
乘法器:僅使用隨機數和單個邏輯閘運算小數乘法
神經元陣列:輸出識別結果或傳遞到下一層
各數字置信度;手寫板15×15
另外,作者介紹卷積層是用來提取筆畫特徵。
全連線第一層:壓縮資訊並分類;啟用函式陣列:將資料非線性地對映到高維特徵空間;全連線第二、三層:進一步分類並輸出識別結果。
不過,UP主提到,受限於Minecraft的運算能力,實際識別時間超過20分鐘。
儘管如此,這仍是紅石數電領域的重大突破,也可能啟發現實中的硬體神經網路。
背後原理
從實際出發考慮,識別手寫數字的任務,僅使用深度神經網路即可。
但是為了儘可能壓縮計算量和引數量,作者使用了經典的「LeNet-5」卷積神經網路。
「LeNet-5」架構最初就是為了實現手寫數字識別而生。不過,為了進一步減小計算開銷,作者將網路的5層結構分別設定成15×157×7303010。
權重也被相應的壓縮到[-1,1]。雖然這樣的做法會將識別率從90%降到50%,但是如果網路的輸入還算規整,那麼它依舊可以得到一個很不錯的識別率。
由於在Minecraft中實現反向傳播是不現實的,而且權重都是使用pytorch訓練好之後,再透過程式碼編輯到檔案中,隨後匯入Minecraft。
由於權重也是隨機串,所以只要編輯隨機數生成裝置即可。
那麼隨機數生成的原理又是什麼呢?
其實就是因為投擲器投擲物品的隨機性,藉此可以搭一個隨機數生成器。
例如,在這個影片中:將兩個投擲器臉對臉放置,用比較器檢測其中的一個內容物。一個放入不可堆疊的物品(礦車),另一個放入可堆疊的物品(混凝土)。
設定礦車輸出2格訊號強度,混凝土只輸出1格強度。再將一個偵測器對準一個投擲器,便可以隨機切換另一個偵測器裡邊的物品,此時有50%的機率可以檢測到是礦車。
因此,會得到一個「0」、「1」各佔一半的串。
透過調整可堆疊物品和不可堆疊物品的比例,可以產生分數機率的隨機數。將兩個隨機數生成器連線到同門上,便可計算二者的乘積。
經過簡單的最佳化後,就可以得到一個2tick輸出一次的高效隨機數生成器。它將生成網路權重。
隨後,啟用函式會將神經網路中的輸入資料非線性地對映到高維度特徵空間,然後再進行線性分割。
作者使用的「LeNet-5」架構自然也少不了應用啟用函式進行非線性對映。
在該過程中,首先先使用卷積提取筆畫特徵。
再將提取出來的特徵放進全連線層進行分類。
上述過程中的每一層都使用了「非線性對映-線性分割」進行分類。
紅石神經網路的宏觀流程:
映入眼簾的是輸入裝置,它包括一個單脈衝式壓力板手寫板和15x15的座標屏,手寫板每次產生2tick的座標訊號,然後由螢幕繪製手寫的數字。
對應到其微觀原理的實現,手寫的數字會先進入卷積層進行卷積運算,並將特徵圖結果送入下一層。
為了保證網路的非線性輸出,輸出結果前還會經過ReLU啟用函式。
由於卷積核大小為3x3,所以可以直接使用模電運算,並且在輸出端自動實現非線性化,之後透過硬連線接到手寫板輸入上。
全連線層的每一層由若干個神經元構成,每個神經元的輸入和輸出是「多對一」的關係。神經元會將每個輸入加權求和實現「線性分割」,再經過啟用函式進行「維度提升」。此處使用tanh作為啟用函式。
在實際的神經元電路中,輸入部分為加權求和,輸出便是啟用函式。
其中,每一層的權重引數(隨機串)會被存放在投擲器,然後輸入和權重相乘後再透過模電累加,
接下來,透過模電計算加法,而後轉為數電訊號,全加器則改裝了2tick流水線加法器,堆疊神經元構成一個全連線層。
最後一層的輸出使用一個模電計數器,這個計數器的容量可以達到1024。
在輸出層,計數器的高四位會被連線到計數板上,電路隨後選取最大的值並顯示到輸出面板上。
一項震驚眼球的工程便得以實現!
最後,我們看一下網路部署
首先使用PyTorch在「ImageNet」資料集上訓練,之後將權重部署到模擬器上調整網路的引數,再將訓練好的引數填入。schem檔案,隨後用小木斧將。schem檔案貼上至存檔,貼上完成後,檢查權重是否正確部署,終極網路版本結構,即15×157×7303010。
小彩蛋
影片最後,作者投了一個小彩蛋。
在更新的1。19手寫板中,特意安裝了幽匿感測器,能夠偵測出聲音。
更好玩兒的是,可以直接往這個幽匿感測器觸控式螢幕扔雪球輸入影象。
砰砰砰幾下,一個手寫非常潦草的6就出來了,識別置信度達到了75%。
Google Brain大佬
UP主@辰佔鰲頭的原名叫Yingtao Tian,目前是位於日本東京谷歌大腦機構的一名科學家。
2019年,他在Steven Skiena教授指導下取得了石溪大學的計算機科學博士學位,曾在2014年拿到了復旦大學計算機科學與技術學士學位。
Yingtao Tia的研究興趣在生成模型和表示學習,以及它們在影象生成、自然語言處理、知識庫建模、社交網路建模、生物資訊學等方面的應用。
他表示,最近自己特別關注創造力/人文研究和機器智慧的跨學科研究。
除了Yingtao Tia,還有4位團隊成員一起完成了這個紅石神經網路的構建。
值得一提的是,Yingtao Tia不是計算機專業的,而且神經網路原理也是從頭學起。
在與小夥伴一同合作下,編寫1000+行程式碼訓練和模擬紅石神經網路,閱讀50+頁英文文獻。
網友熱評
看完真正的紅石人工智慧後,網友調侃道,會紅石和會人工智慧的都沉默了。
還有人稱Pytorch和TensorFlow都過時了!以後自己寫網路就說用的是Minecraft庫。
網友還給其取了一個名,「紅石卷積神經網路,簡稱RCNN」。
參考資料:
https://b23。tv/TGELQpU
https://twitter。com/ylecun/status/1543309427893309440?s=21&t=okc8RM9FJdzPgUHXQMLYrw
https://minecraft-archive。fandom。com/wiki/Redstone
https://www。bilibili。com/read/cv17165331
https://alantian。net