MNIST 機器:一款可以用手進行訓練的神經(jīng)網(wǎng)絡
神經(jīng)網(wǎng)絡通常是通過數(shù)學、代碼和布滿箭頭的圖表來進行教學的。我覺得這沒什么問題。但有時感覺人們會說:“別擔心,損失會減少的。”然后就希望你不再提出疑問了。
我想做出一些你能夠?qū)嶋H觸摸到的東西。
我想要制造一臺這樣的機器:
?輸入的是實物。
?這些重量是實實在在的。
?這些神經(jīng)元是實實在在存在的。
?而“訓練”這一概念也不再讓人覺得像是某種無形的計算機魔法了。
所以我制作了 MNIST 機器。
這是一個帶有發(fā)光按鈕、旋鈕和顯示屏的盒子,通過它我可以手動訓練一個小型的數(shù)字識別神經(jīng)網(wǎng)絡。它并非能高效地完成這項任務。那樣做簡直是荒謬至極。它采用的方式能讓人們更好地理解其中的過程。
而對我來說,那則更加有趣。
其功能是什么
以下是其運作方式:
?我在一個 5×5 的網(wǎng)格上按按鈕來繪制一個數(shù)字,比如數(shù)字 3 。
?我從 5 個隱藏神經(jīng)元中挑選出一個。
?我轉(zhuǎn)動了 25 個旋鈕來改變輸入到那個神經(jīng)元中的信號強度。
?我通過另一組旋鈕來控制輸出層的效果。
?我按下正確的輸出按鈕,比如“3。”
?該機器會在分段顯示屏上顯示損失情況。
?我不斷調(diào)整權(quán)重,直到損失值變得更小為止。
所以基本上,我是在親手完成梯度下降的過程,這樣我就能更好地理解它了。
為何這很酷
很多機器學習技術是難以理解的。
您會聽到諸如以下這樣的詞語:
?重量
?神經(jīng)元
?激活;啟動;啟用
?損失
但這些都只是些空洞的言辭,除非你能直接去操作它們才行。
在這臺機器中:
?重量就是一個實實在在的控制旋鈕。
?一個神經(jīng)元就像是一個實實在在的按鈕,你可以對其進行選擇。
?一個數(shù)字是你自己畫出來的。
?而這種損失是一個數(shù)值,當你做事出錯時這個數(shù)值會上升,而當你最終停止這種錯誤行為時,這個數(shù)值又會下降。
這樣一來,整個事情就更容易理解了,甚至對于小孩子來說也是如此。
這樣一來,機器學習就更像是一個謎題、一場游戲,或者是一個小小的發(fā)光機器人,它會禮貌地告訴你你自制的“3”簡直糟糕透頂。
注意:本次不附上任何電路圖,因為我的電路圖是錯誤的!在收到印刷電路板后,我不得不對一些線路進行裁剪等操作,因為我在繪制圖紙時出現(xiàn)了錯誤。以下是我在制作這個東西時拍攝的一些照片:
總的來說,我非常享受這個項目。
那真是很有趣,ChatGPT 也幫了大忙。我學到了很多關于焊接和拆焊的知識,還明白了像這樣的項目搭建過程中需要多么小心謹慎。
例如,我先在 EasyEDA 軟件中設計好了電路板(這個過程很有趣),然后將這些電路板制作出來并寄給了我,之后我完成了所有的焊接工作。之后我使用了一臺熱成像相機,發(fā)現(xiàn)其中一個芯片異常發(fā)熱。原來是我不小心將那個芯片的接地端和電源端搞反了。那個芯片本身沒問題,但最終卻損壞了另一個芯片。我更換了那個芯片,但仍然無法正常工作,后來發(fā)現(xiàn)問題在于大約五年前我購買 Pi Pico 時對其進行的某些弱化焊接。這部分確實讓我感到很沮喪,甚至想要放棄,但其余部分還是很有趣的!我非常感激能夠完成這個項目。
本文編譯自hackster.io





