爆肝6個(gè)月!B站大佬用我的世界搞出卷積神經(jīng)網(wǎng)絡(luò),LeCun轉(zhuǎn)發(fā)
發(fā)布日期:2022/7/6 13:39:20 瀏覽量:
豐色 發(fā)自 凹非寺量子位 | 公眾號 QbitAI
非計(jì)算機(jī)專業(yè)、神經(jīng)網(wǎng)絡(luò)小白,爆肝六個(gè)月——
在《我的世界》里搭建一個(gè)卷積神經(jīng)網(wǎng)絡(luò),這是什么神操作?
最近,來自B站up主@辰占鰲頭的作品著實(shí)火了一把。
他和朋友們合作完成的這個(gè)號稱“世界首個(gè)純紅石神經(jīng)網(wǎng)絡(luò)”,神經(jīng)元、卷積層、全連接層、激活函數(shù)、乘法器、輸入、輸出……樣樣俱全、蔚為壯觀,而且可以真的實(shí)現(xiàn)手寫數(shù)字識別,準(zhǔn)確率還達(dá)到了80%。
這波,妥妥就是如網(wǎng)友所說:
- 簡直是實(shí)力與耐心做出來的超凡成果。
目前,這個(gè)視頻的播放量已經(jīng)上了一百萬,在外網(wǎng),它甚至還引起了LeCun的注意:不僅轉(zhuǎn)發(fā)了他們的作品,還給出了“Very meta”的評價(jià)。
耗時(shí)6個(gè)月,用紅石搭建卷積神經(jīng)網(wǎng)絡(luò)
紅石是我的世界里一種可以傳遞信號的礦石資源,可以用來制作紅石電路,進(jìn)而完成小到如自動門、光開關(guān)、頻閃電源的簡單機(jī)械,大到電梯、自動農(nóng)場、盾構(gòu)機(jī)、小游戲平臺甚至計(jì)算機(jī)的復(fù)雜工具。
本次作者們搭建的這個(gè)神經(jīng)網(wǎng)絡(luò)的架構(gòu),基于LeCun于1998年提出的經(jīng)典卷積結(jié)構(gòu)LeNet-5,它就是用來實(shí)現(xiàn)手寫數(shù)字識別的。
相比傳統(tǒng)的全精度計(jì)算(乘法器和加法器),作者經(jīng)過一番思考和估算,決定采用隨機(jī)計(jì)算的方式來實(shí)現(xiàn)這個(gè)神經(jīng)網(wǎng)絡(luò),這樣可以讓設(shè)計(jì)和布局都簡單一些。
畢竟對于用隨機(jī)計(jì)算實(shí)現(xiàn)乘法來說,只需一個(gè)與門就可以表示單極,一個(gè)同或就能表示雙極。
由于在我的世界中進(jìn)行反向傳播不太可能,網(wǎng)絡(luò)的權(quán)重都是先在Pytorch中訓(xùn)練好,然后直接搬進(jìn)去。
為了生成由隨機(jī)串組成的權(quán)重,作者利用“投擲器投擲物品是隨機(jī)的”這一原理造了一個(gè)隨機(jī)數(shù)生成器。
總的來說,他們采用的是一個(gè)壓縮的LeNet-5,先使用一個(gè)帶權(quán)重的窗口(卷積核)逐次掃描圖像并提取筆畫特征,然后將這些筆畫特征饋入到深度神經(jīng)網(wǎng)絡(luò)(全連接層)進(jìn)行分類識別。
具體來說:
首先由輸入設(shè)備:一個(gè)單脈沖式壓力板手寫板和15×15坐標(biāo)屏,產(chǎn)生坐標(biāo)信號,并在屏幕上繪制出筆跡。
然后手寫數(shù)字進(jìn)入卷積層,累加卷積核被遮蓋的部分,并將結(jié)果輸出到下一層。
其中:
(1)在卷積層,作者沒有使用隨機(jī)計(jì)算,而是使用我的世界中的模擬信號進(jìn)行加法運(yùn)算;
(2)為了保證輸入數(shù)據(jù)可以非線性地映射到高維度特征空間然后進(jìn)行線性分類,輸出經(jīng)過了激活函數(shù)ReLU;
(3)由于卷積無法隨意移動,所以采用直接堆疊的方式,再通過硬連線連接到手寫板輸入上。
隨后,是全連接層。每層由若干神經(jīng)網(wǎng)絡(luò)構(gòu)成,每個(gè)神經(jīng)元都連接多個(gè)輸入,并產(chǎn)生一個(gè)輸出。神經(jīng)元將每個(gè)輸入加權(quán)累加,然后帶入一個(gè)激活函數(shù)輸出。
全連接層使用的是隨機(jī)計(jì)算,
激活函數(shù)用的是非線性的tanh。
實(shí)際的神經(jīng)元電路如下:
最后一層的輸出使用一個(gè)模電計(jì)數(shù)器,用來統(tǒng)計(jì)5Hz串中“1”的數(shù)量,容量則為1024。
最終,輸出部分,計(jì)數(shù)器的高4位被連接到計(jì)數(shù)板上,然后電路選取最大的值并在面板上顯示結(jié)果。
結(jié)構(gòu)總覽:
網(wǎng)絡(luò)架構(gòu)總覽:
作者介紹,該神經(jīng)網(wǎng)絡(luò)在MNIST數(shù)據(jù)集上約實(shí)現(xiàn)了80%的準(zhǔn)確率,作為對比,同權(quán)重的全精度網(wǎng)絡(luò)的準(zhǔn)確率為88%。
另外,它的單次理論識別時(shí)間約為5分鐘,但沒想到Minecraft的運(yùn)算能力實(shí)在有限——在實(shí)際測試中,可能要40分鐘以上。
由此作者得出,Minecraft隨機(jī)計(jì)算神經(jīng)網(wǎng)絡(luò)在時(shí)間開銷上未必優(yōu)于全精度網(wǎng)絡(luò)。不過全精度網(wǎng)絡(luò)目前還沒有人做出來。
“工作量和難度都很大”
在這個(gè)作品的評論區(qū),都是一水兒的稱贊有加與膜拜(連大V籽岷都冒泡了)——
看完大佬的巨作,有網(wǎng)友甚至開始懷疑自己和up主們玩的不是一個(gè)游戲。(手動狗頭)
還有人指出,別看最終實(shí)現(xiàn)的功能只是相當(dāng)于機(jī)器學(xué)習(xí)中的“hello world”,但用游戲中提供的紅石元件復(fù)現(xiàn)出來,可以說是“工作量和難度都很大”。
因?yàn)椤斑@要求作者對算法的底層實(shí)現(xiàn)或者硬件執(zhí)行原理(類似cuda編程)有深刻的理解,還能使用游戲機(jī)制來優(yōu)化執(zhí)行過程以及完成并行計(jì)算”。
雖然最終識別速度比較慢,但“在這里探討效率的意義不大”。
言外之意,它本身就很有價(jià)值,“我們不能拿cpu的兩個(gè)線程經(jīng)過無數(shù)層模擬器嵌套后的識別效率去跟顯卡識別效率比較”。
最后,還有人感嘆:好了,現(xiàn)在紅石神經(jīng)網(wǎng)絡(luò)有了,硬盤、CPU、顯示器也早就有了,紅石超級電腦是不是也不遠(yuǎn)了?
“說不定到時(shí)我們就能在MC里玩MC了~”
關(guān)于作者
這個(gè)紅石卷積神經(jīng)網(wǎng)絡(luò)一共有5位作者,up主@辰占鰲頭是主要貢獻(xiàn)者,負(fù)責(zé)電路的總體設(shè)計(jì)、搭建和調(diào)試。
他和另外一位作者@學(xué)雜不善(GitHub@leamoon)都是香港科技大學(xué)的學(xué)生,現(xiàn)在分別攻讀理論物理學(xué)博士和電子工程學(xué)博士。
其他3位合作者中,有一位高中剛畢業(yè)(@NKID00),另外兩位(@enadixxoOxoxO和@愛紅石的小章魚)沒有透露自己的身份。
@辰占鰲頭在2014年的時(shí)候就開始接觸《我的世界》這款游戲了,曾做過一個(gè)編碼漢字的顯示器和一個(gè)8位的CPU。
問及為什么一個(gè)非計(jì)算機(jī)專業(yè)的學(xué)生想要搭建一個(gè)神經(jīng)網(wǎng)絡(luò)時(shí),他告訴我們,其實(shí)自己參加過信息競賽,由于之前接觸過隨機(jī)計(jì)算(stochastic computing),最初是想展示一下隨機(jī)計(jì)算在特定任務(wù)下的優(yōu)越性所以開始了這個(gè)項(xiàng)目。
最終為了搭建完整的神經(jīng)網(wǎng)絡(luò),他看了50+頁英文文獻(xiàn),寫了1000多行代碼。
要說最難/耗時(shí)最久的部分,他回答:是全連接層調(diào)試,因?yàn)檫\(yùn)行速度很慢而且使用隨機(jī)計(jì)算很難找到問題所在。
對于未來,up主表示,他正在考慮搭建一臺支持RISC-V指令集的紅石CPU。
查了一下,目前似乎還沒人做出來,值得期待~
B站視頻:
https://www.bilibili.com/video/BV1yv4y1u7ZX?vd_source=6eb6d925760348954531a2288dcd74be
原理介紹:
https://www.bilibili.com/video/BV1wF411F7PU/?spm_id_from=333.788&vd_source=6eb6d925760348954531a2288dcd74be
馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來的不僅僅是技術(shù),還有行業(yè)經(jīng)驗(yàn)積累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 聯(lián)系人:石先生/雷先生