文(wén)章來源:機器之心
編輯:杜偉
神奇的紅石,神奇的我的世界,不可(kě)思議的 UP 主。
在我的世界(Minecraft)中(zhōng),紅石是一種非常重要的物(wù)品。它是遊戲中(zhōng)的一種獨特材料,開關、紅石火把和紅石塊等能(néng)對導線(xiàn)或物(wù)體(tǐ)提供類似電(diàn)流的能(néng)量。
紅石電(diàn)路可(kě)以為(wèi)你建造用(yòng)于控制或激活其他(tā)機械的結構,其本身既可(kě)以被設計為(wèi)用(yòng)于響應玩家的手動激活,也可(kě)以反複輸出信号或者響應非玩家引發的變化,如生物(wù)移動、物(wù)品掉落、植物(wù)生長(cháng)、日夜更替等等。
因此,在我的世界中(zhōng),紅石能(néng)夠控制的機械類别極其多(duō),小(xiǎo)到簡單機械如自動門、光開關和頻閃電(diàn)源,大到占地巨大的電(diàn)梯、自動農場、小(xiǎo)遊戲平台甚至遊戲内建的計算機。
近日,B 站 UP 主 @辰占鳌頭等人在我的世界中(zhōng)實現了真正的「紅石人工(gōng)智能(néng)」,他(tā)們耗時六個月,構建了世界上首個純紅石神經網絡,任務(wù)是識别 15×15 手寫數字。
作(zuò)者表示,他(tā)們使用(yòng)非傳統的計算方式——随機計算來實現神經網絡,在設計和布局上比傳統全精(jīng)度計算簡單許多(duō),并且單次理(lǐ)論識别時間僅為(wèi) 5 分(fēn)鍾。
這個純紅石神經網絡完成了機器學(xué)習領域常見的圖像識别任務(wù)——手寫數字識别,并且準确率達到了 80%(在 MNIST 數據集上模拟)。
在實現的過程中(zhōng),作(zuò)者使用(yòng)到的各種元素包括如下:
單個神經元接受多(duō)個輸入并産(chǎn)生一個輸出。
加入「乘法器」,僅使用(yòng)随機數和單個邏輯門運算小(xiǎo)數乘法。
神經元陣列輸出識别結果或傳遞到下一層。
各數字的置信度。
卷積層用(yòng)來提取筆(bǐ)畫特征。
全連接第一層:壓縮信息并分(fēn)類。
激活函數陣列:将數據非線(xiàn)性地映射到高維特征空間。
全連接第二、三層:進一步分(fēn)類并輸出識别結果。
作(zuò)者表示,該網絡使用(yòng)的架構是壓縮的 LeNet-5,準确率達到 80%。
不過,受限于 Minecraft 的運算能(néng)力,實際識别時間超過 20 分(fēn)鍾。盡管如此,這仍是紅石數電(diàn)領域的重大突破,也可(kě)能(néng)啓發現實中(zhōng)的硬件神經網絡。
目前,視頻的播放量已經超過 80 萬,全 B 站排行榜最高第 39 名(míng),讓各路網友歎為(wèi)觀止。就連圖靈獎得主 Yann LeCun 也在 Facebook 上轉發了該視頻,表示「一位非常有(yǒu)耐心且堅持不懈的人使用(yòng)紅石在我的世界中(zhōng)實現了 LeNet-5。」LeCun 是 LeNet 架構提出者。
【Minecraft】世界首個純紅石神經網絡!真正的紅石人工(gōng)智能(néng)(中(zhōng)文(wén)/English)
【Minecraft】紅石卷積神經網絡——原理(lǐ)
背後的原理(lǐ)
在另外一個視頻《【Minecraft】紅石卷積神經網絡——原理(lǐ)》中(zhōng),作(zuò)者詳細解釋了紅石卷積神經網絡的原理(lǐ)。
總的來說,他(tā)們使用(yòng)的是壓縮的 LeNet-5 卷積神經網絡,卷積是網絡的第一步計算,使用(yòng)一個帶權重的窗口(卷積核)逐次掃描圖像并提取筆(bǐ)畫特征。
然後将這些筆(bǐ)畫特征饋入到深度神經網絡(全連接層)進行分(fēn)類識别。
在我的世界中(zhōng)實現紅石神經網絡
作(zuò)者首先列出了輸入設備,包括一個單脈沖式壓力闆手寫闆和 15×15 坐(zuò)标屏。其中(zhōng)手寫闆每次産(chǎn)生 2tick 的坐(zuò)标信号,接着由屏幕繪制。
随後輸入的手寫數字進入卷積層,計算方法是累加卷積核被遮蓋的部分(fēn),并将結果輸出到下一層。并且,為(wèi)了保證非線(xiàn)性,輸出還經過了 ReLU 函數。
由于卷積核隻有(yǒu) 3×3,因而作(zuò)者直接使用(yòng)了電(diàn)模運算,并在輸出端自動進行 ReLU。
另外,又(yòu)由于卷積無法像動畫裏那樣移動,所以采用(yòng)了直接堆疊的方式,再通過硬連線(xiàn)連接到手寫闆輸入上。
到了全連接層,它的每層由若幹神經網絡構成。每個神經元都連接多(duō)個輸入,并産(chǎn)生一個輸出。神經元将每個輸入加權累加,然後帶入一個激活函數輸出。
需要注意的是,加權求和是「線(xiàn)性分(fēn)割」,而激活函數一定是非線(xiàn)性的,用(yòng)于提升維度。作(zuò)者使用(yòng)了 tanh(雙曲正切)作(zuò)為(wèi)了激活函數。
反映到實際的神經元電(diàn)路中(zhōng),如下圖所示。
同時,權重被儲存在投擲器(用(yòng)來調整物(wù)品配比生成不同頻率的随機串)中(zhōng),輸入乘以權重後通過模電(diàn)累加。
最終電(diàn)路實現
關于電(diàn)路實現,首先通過模電(diàn)計算加法,然後轉為(wèi)數電(diàn)信号。
累加器則是改裝(zhuāng)了另一位 Up 主提供的 2tick 流水線(xiàn)加法器,使之不會溢出。
接着堆疊神經元,構成一個全連接層。
最後一層的輸出以及層間緩存使用(yòng)如下模電(diàn)計數器,它可(kě)以統計 5Hz 串中(zhōng)「1」的數量,容量則為(wèi) 1024。
最後在輸出層,計數器的高 4 位被連接到計數闆上,然後電(diàn)路選取最大的值并在輸出面闆上顯示。
視頻最後,作(zuò)者展示了最終的網絡結構,如下圖所示。其中(zhōng),權重範圍為(wèi) [-1, 1],随機串長(cháng)度為(wèi) 1024,MNIST 數據集上的準确率約為(wèi) 80%。不過當串長(cháng)為(wèi) 256 時,準确率僅為(wèi) 62%。
