在我的世界(Minecraft)中,紅石是一種非常重要的物品。它是遊戲中的獨特材料,開關、紅石火把和紅石塊等能對導線或物體提供類似電流的能量。
紅石電路可以為你建造用於控製或激活其他機械的結構,其本身既可以被設計為用於響應玩家的手動激活,也可以反复輸出訊號或回應非玩家引發的變化,如生物移動、物品掉落、植物生長、日夜更換等等。
因此,在我的世界中,紅石能夠控制的機械類別極其多,小到簡單機械如自動門、光開關和頻閃電源,大到佔地巨大的電梯、自動農場、小遊戲平台甚至是遊戲內建的電腦。
近日,B 站UP 主@辰佔鰲頭等人在我的世界中實現了真正的“紅石人工智能”,他們耗時六個月,構建了世界上首個純紅石神經網絡,任務是識別15×15 手寫數字。
作者表示,他們使用非傳統的計算方式——隨機計算來實現神經網絡,在設計和佈局上比傳統全精度計算簡單許多,並且單次理論識別時間僅為 5 分鐘。
這個純紅石神經網路完成了機器學習領域常見的圖像識別任務——手寫數字識別,並且準確率達到了 80%(在MNIST資料集上模擬)。
在實作的過程中,作者所使用的各種元素包括如下:
單一神經元接受多個輸入並產生一個輸出。
加入「乘法器」,只使用隨機數和單一邏輯閘運算小數乘法。
神經元陣列輸出識別結果或傳遞到下一層。
各數字的置信度。
#卷積層用來擷取筆畫特徵。
全連接第一層:壓縮資訊並分類。
激活函數陣列:將資料非線性地映射到高維特徵空間。
全連接第二、三層:進一步分類並輸出辨識結果。
作者表示,網路使用的架構是壓縮的 LeNet-5,準確率達 80%。
不過,受限於 Minecraft 的運算能力,實際辨識時間超過 20 分鐘。儘管如此,這仍是紅石數電領域的重大突破,也可能啟發現實中的硬體神經網路。
目前,影片的播放量已經超過 80 萬,全 B 站排行榜最高第 39 名,讓各路網友嘆為觀止。就連圖靈獎得主Yann LeCun 也在Facebook 上轉發了該視頻,表示「一位非常有耐心且堅持不懈的人使用紅石在我的世界中實現了LeNet-5。」LeCun 是 LeNet 架構提出者。
【Minecraft】世界首個純紅石神經網路!真正的紅石人工智慧(中文/English)【Minecraft】紅石卷積神經網路—原理
在另外一個影片《【Minecraft】紅石卷積神經網路——原理》中,作者詳細解釋了紅石卷積神經網路的原理。
總的來說,他們使用的是壓縮的LeNet-5 卷積神經網絡,卷積是網絡的第一步計算,使用一個帶有權重的窗口(卷積核)逐次掃描圖像並提取筆畫特徵。
然後將這些筆畫特徵饋入到深度神經網路(全連接層)進行分類識別。
在我的世界中實作紅石神經網路
作者首先列出了輸入設備,包括一個單脈衝式壓力板手寫板和15×15 座標螢幕。其中手寫板每次產生 2tick 的座標訊號,接著由螢幕繪製。
接著輸入的手寫數字進入卷積層,計算方法是累加卷積核被遮蓋的部分,並將結果輸出到下一層。並且,為了確保非線性,輸出也經過了 ReLU 函數。
由於卷積核只有 3×3,因而作者直接使用了電模運算,並在輸出端自動進行 ReLU。
另外,又由於卷積無法像動畫裡那樣移動,所以採用了直接堆疊的方式,再透過硬連線連接到手寫板輸入上。
到了全連接層,它的每層由若干神經網路構成。每個神經元連接多個輸入,並產生一個輸出。神經元將每個輸入加權累加,然後帶入一個激活函數輸出。需要注意的是,加權求和是「線性分割」,而活化函數一定是非線性的,用來提升維度。作者使用了 tanh(雙曲正切)作為了激活函數。
反映到實際的神經元電路中,如下圖所示。
同時,權重被儲存在投擲器(用來調整物品配比產生不同頻率的隨機串)中,輸入乘以權重後通過模電累加。
關於電路實現,先透過模電計算加法,然後轉為數電訊號。
累加器則是改裝了另一位 Up 主提供的 2tick 管線加法器,使之不會溢位。
接著堆疊神經元,構成一個全連接層。
最後一層的輸出以及層間快取使用如下模電計數器,它可以統計5Hz 串中「1」的數量,容量則為1024。
最後在輸出層,計數器的高 4 位元被連接到計數板上,然後電路選取最大的值並在輸出面板上顯示。
影片最後,作者展示了最終的網路結構,如下圖所示。其中,權重範圍為 [-1, 1],隨機串長度為 1024,MNIST 資料集上的準確率約為 80%。不過當串長為 256 時,準確率僅 62%。
###########
以上是"B站UP主成功打造全球首個基於紅石的神經網絡在社交媒體引起轟動,得到Yann LeCun的點贊讚賞"的詳細內容。更多資訊請關注PHP中文網其他相關文章!