顯示具有 snn 標籤的文章。 顯示所有文章
顯示具有 snn 標籤的文章。 顯示所有文章

9/18/2026

(仿生智慧 Part-3 ) 利用果蠅腦來做 同音錯別字查詢更正


這是第二個實驗,試圖讓果蠅腦來幫忙做「電商網站的同音錯別字查詢」。在電商網站,使用者不見得輸入完全正確的產品查詢名稱,例如使用者想要查的是「哈利波特」但很有可能打太快,輸入法選字的等等。會輸入「哈力波忑」,所以鐵定查不到產品,但現在大多數網站都有建立不同程度的同音字錯別字查詢,這裡我們想要果蠅大腦來解決此問題:




果蠅的嗅覺

果蠅靠嗅覺才能活著。牠必須在很吵雜、很混亂的環境裡分辨氣味:這東西是我可以吃的嗎?一顆水果開始腐爛了嗎?有掠食者靠近了嗎?空氣裡混著十幾上百種種味道,牠得瞬間判斷「這是不是我要的東西」。

科學家研究牠的腦子,發現果蠅處理氣味的方式非常聰明。牠腦中有一個區域,會把「進來的氣味訊號」做一個很特別的轉換:
首先,果蠅把訊號「攤開變大」。本來只有幾十種氣味感測器,訊號進來後會被投射到大約兩千個神經細胞上(這種細胞叫做「肯氏細胞」)。等於把一個很擁擠的訊息,攤開到一個很大的空間。

第二,只留下「最有反應的少數幾個」。這兩千個細胞不會全部亮起來,腦中有一個像「總開關」的抑制機制,會強制只讓其中大約百分之五的細胞放電,其他全部安靜。

這樣做的結果很奇妙:兩個「聞起來很像」的氣味,會讓幾乎同一批腦細胞亮起來;兩個完全不同的氣味,亮起來的細胞則幾乎不重疊。


換句話說,果蠅的嗅覺天生就是一台「相似度比對機」。相似的東西,牠給的判斷就相似。

2017 年,有科學家在《科學》(Science)期刊上指出:這根本就是一套大自然演化了幾億年的「相似搜尋演算法」,而且效率驚人。


把產品字串變成嗅覺訊號

既然果蠅能把「相似的氣味」對應到「相似的腦內反應」,我能不能把「讀音相似的中文字」餵進去,讓牠幫我把「哈利波特」跟「哈力波忑」對應到同一個地方?畢竟所謂氣味,在進到果蠅腦時就是電子訊號。果蠅不認識中文,牠只聞認懂「訊號」。所以我要先把每一個商品名稱,翻譯成一種果蠅能聞的「氣味」。做法是把名字拆成「讀音的成分」:


* 先用注音把每個字的讀音拆出來,例如「特」是 ㄊㄜˋ。
* 把聲母、韻母、聲調分開處理,這樣「特(ㄊㄜˋ)」跟「忑(ㄊㄜˋ)」因為讀音一模一樣,就會產生幾乎相同 「氣味」。
* 也可以還特別加一些「台灣人常見的混音」規則:像是 ㄓ/ㄗ、ㄔ/ㄘ、ㄕ/ㄙ 因為很多人打字時這些音本來就會搞混。

除了讀音,我還加了一條「長相」的線索。有些錯別字不是同音,而是「長得像」,例如「己」跟「已」、「未」跟「末」。在加了一份公開的漢字字型資料庫(Unicode 的 Unihan),把每個字的部首、筆畫數、倉頡碼也加進「氣味」裡。這樣長得像的字,氣味也會接近。

把這些成分全部混在一起,一個商品名稱就變成了一團獨特的「氣味」。接著,就把這團氣味送進前面說的那套「果蠅嗅覺」機制:攤開變大、只留最強的百分之幾,最後得到一串稀疏的「腦內指紋」。

每一個商品,都被轉成這樣一串指紋,事先存起來。等到使用者輸入查詢(哪怕打錯字),就把查詢也轉成指紋,看看哪些重疊越多,代表越接近

商品名稱在電腦裡當然就是一串二進位編碼(文字的位元)。但這串位元本身對神經元沒有意義,不能直接餵進去,中間一定要先做一次轉換。

第一步是把名稱轉成一個「特徵向量」。我的做法是用「雜湊」(hashing)把前面說的那些讀音、字形成分,各自對應到一個固定長度的向量上,這個專案裡是一個長度 4096 的浮點數陣列。注意它不是二進位的 0 與 1,而是一串有大有小的數值(例如某個位置是 0.7、某個位置是 0.0),代表「這個名稱在各個成分上的強度」。最後這個向量會做正規化(L2 normalization),讓長短不同的名稱可以公平比較。

如何送進果蠅腦?使成爲嗅覺訊號?

接下來「怎麼送進果蠅」,有兩種不一樣的方法:

在輕量版本裡,其實沒有真的模擬神經元放電。所謂「送進蘑菇體」,實際上是一次矩陣運算:把那個 4096 維的向量,乘上一個代表「投射神經元 vs 肯氏細胞」連接關係的稀疏矩陣,直接算出每個肯氏細胞的活躍值,再取數值最高的前百分之幾當作指紋。換句話說,那串數值是以「數字」的身分直接參與計算的,沒有轉成波形、也沒有轉成脈衝。這也是它能做到毫秒級的原因,它借用的是果蠅那套運算「結構」,而不是真的果蠅頭腦,如果是真的果蠅頭腦,那我們需要模擬讓神經放電。


在真實果蠅腦版本,會模擬神經元放電的,就必須把數值翻譯成神經元之間真正的溝通語言,而那個語言不是二進位、也不是連續波形,而是「放電頻率」,也就是每個神經元每秒放電幾次(單位是赫茲)。具體做法是把特徵向量分配到果蠅真正的 685 個嗅覺輸入神經元上,把每個神經元收到的強度換算成一個放電頻率(這個專案設在每秒約 5 到 200 次之間),數值越大就放得越頻繁。而且這裡用的是「卜瓦松放電」(Poisson spiking)你只設定「平均每秒幾次」,至於每一次實際在哪個瞬間放電則是隨機的,比較接近真實神經的行為。這種「用放電頻率來承載訊息」的方式,在神經科學裡稱為「頻率編碼」(rate coding)。


用果蠅大腦,怎麼幫上萬個商品建立索引?

既然可以模擬果蠅腦聞商品味道,那就把它認真跑一遍,將三萬多個商品建一份真正的「腦內指紋」目錄。這一步就是所謂的「建立索引」,做法其實跟你想像的一樣直白:一個一個商品,讓果蠅去。具體是這樣:

第一,拿出一個商品名稱,例如「哈利波特第一集」。把它照前面說的方式轉成「氣味」拆讀音、拆字形,變成一串特徵數值。

第二,讓果蠅大腦「聞」這個氣味。把這串氣味換算成放電頻率,強力地注入那六百多個嗅覺神經元,然後讓整顆十三萬神經元的大腦跑一段模擬。訊號會從鼻子一路流進去,激發、傳遞,最後在蘑菇體那五千多個肯氏細胞上,點亮其中特定的一小群。這「一小群被點亮的細胞」,就是「哈利波特第一集」這個商品在果蠅腦裡的專屬指紋。

第三,把這個指紋登記到一張「反向索引」表裡。這張表記的不是商品對應到"它點亮了哪些細胞",而是反過來:每一個細胞有哪些商品會點亮它。舉例來說,如果第 3、17、42……號細胞被「哈利波特第一集」點亮了,我就在第 3 號細胞的名單上加一筆「哈利波特第一集」,第 17 號、第 42 號也各加一筆。就是反向索引。

第四,換下一個商品,重複第一到第三步。三萬多個商品,就讓果蠅腦逐一"聞"、逐一登記進表裡。

跑完之後,我們就得到一份完整的「腦內指紋目錄」:三萬多個商品,每個都有牠專屬的一小群肯氏細胞;而那張反向索引表,則記錄了每一個細胞背後掛著哪些商品。整份東西存成一個檔案,之後查詢時直接載進來用,不必每次重建。

這一步很花時間,因為每個商品都得讓整顆十三萬神經元的大腦實際跑一遍模擬,三萬多個商品用我的mac pro 32G要大約要跑二十分鐘。


用果蠅大腦,怎麼找到使用者要的商品?


索引建好之後,真正查詢的那一刻其實很簡單,跟建索引用的是同一顆腦、同一套流程。假設使用者打了錯字「哈力波特」:

第一,讓果蠅去聞「哈力波特」這個字串。跟處理商品時一模一樣:轉成氣味、強力注入嗅覺神經元、讓整顆大腦跑一遍,得到「哈力波特」這串查詢的專屬指紋:也就是它點亮了哪一小群肯氏細胞。因為「力」和「利」同音,這串指紋會跟「哈利波特」當初存下來的指紋高度重疊。


第二,拿這串指紋去反向索引表裡「對指紋」。看查詢點亮了哪些細胞,就翻開那些細胞的名單,把上面掛著的商品全部撈出來,投票累加。跟查詢共用越多細胞的商品,得票越高。因為有前面那張反向索引表,我不需要拿查詢去跟三萬多個商品逐一硬碰,只要碰到「有共用細胞」的少數商品就好,所以幾毫秒就能算完。

第三,算相似度分數、排名。把得票依照「細胞的稀有度」加權、再normalize成 0 到 1 的分數,由高到低排出來。分數越高,代表這個商品的指紋跟「哈力波特」的指紋越像。

第四,用分數決定要不要回給使用者。這裡我們設定了門檻,只有相似度分數超過大約 0.4 的商品,才夠格算「可能是你要找的」。以「哈力波特」來說,正牌的「哈利波特」系列會拿到明顯高於 0.4 的分數、穩穩排在最前面;而那些只是碰巧共用一兩個細胞、其實八竿子打不著的商品,分數遠低於 0.4,就被擋掉、不會拿去煩使用者。最後呈現出來的,就是幾個高分、確實跟「哈力波特」讀音相近的正確商品。

數位果蠅腦的一些基本數字

這個數位果蠅腦的實驗是從一個真實的購物網站(墊腳石)持續爬取商品名稱,本文的測試就是用當時已經抓到的約三萬兩千個真實商品名稱跑出來的。

整個「大腦」用到大約三萬兩千個模擬的肯氏細胞(每個名稱最後會點亮其中兩百多個,形成指紋)。

要建立建立整套索引(也就是把三萬多個商品都轉成指紋)大約花二十多分。

這裡要強調一件事:這個過程完全不需要「訓練」。 它不像時下的 AI 要吃大量資料、跑好幾天。果蠅的這套機制是「結構本身就是功能」。只要把架構搭好,資料一進去,指紋就自動生成了。

三萬多個商品的索引檔案大約 15 MB,還是小到可以輕鬆塞進一台普通主機。

查一次大約 2 到 7 毫秒(在三萬多個商品裡搜尋)。正確率並沒有極端高,大概都有95%以上

============================  

技術上來說,這個實驗,其實就是相似搜尋 / 局部敏感雜湊(LSH)的解決方案,其實 早在1990 年代就做得出來。

但沒有參考物的時候,我們得自己摸索:要把訊號展開幾倍?只保留多少比例的『最強反應』?要不要一個全域的抑制機制?

這些架構上的抉擇,並沒有標準答案,不同語言也會有很大差別,得靠實驗逐一嘗試。而大自然這隻經過幾億年天擇的果蠅,等於把這份『架構設計圖』先調好、示範給我們看:展開約四十倍、稀疏度壓在百分之五、用一顆抑制神經元管理全部等等。等於參考了一份被演化認證過的答案,省下的是摸索架構的時間。


========
市面上 同音錯別字查詢更正 解決方案的比較

做法一:果蠅腦

優點:
- 極度輕量。整個引擎加索引可以壓在十幾 MB 以內,1000 筆商品的索引才 1.4 MB,理論上可以直接跑在手機、甚至瀏覽器裡,不需要任何伺服器。
- 快。查一次不到 1 毫秒。
- 完全免費、可離線。沒有任何 API 費用,資料不用送到外面,隱私有保障。
- 不需要訓練。搭好架構、資料丟進去就能用,改商品也只要重建索引(幾秒鐘)。
- 專門對付「同音/形近錯字」這種表層錯誤,非常對症下藥。
- 運作費用很低,以一個中型電商,一個月要600到1000台幣而已。

缺點:
- 它只懂「讀音和字形」,完全不懂「意思」。你打「魔法師的書」想找「哈利波特」,它幫不了你。
- 對「只打片段」(例如只打三四個字去搜一個長書名)比較弱。


做法二:Elasticsearch(業界最常見的搜尋引擎)優點:

- 成熟、穩定、功能齊全,全世界無數網站都在用,出問題有大量社群和文件可查。
- 除了模糊比對,還能做各種篩選、排序、分頁、統計,是一整套完整的搜尋方案。
- 擴充性強,資料量從一千筆到一億筆都能撐。

缺點:
- 對「中文同音錯別字」其實不是天生擅長。它內建的模糊比對是看「字面差幾個字元」(編輯距離),但「利」跟「力」在電腦眼中是兩個完全不同的字,字面上差距很大。要讓它懂同音,你得自己額外做注音/拼音的處理,設定相當繁瑣。
- 它是一個需要獨立架設、吃記憶體的伺服器程式,不太會為了「更正錯別字」這一件小事去養一整套 Elasticsearch,有點殺雞用牛刀。一般來說這樣的elasticsearch還會做其他事情。
- 營運成本是那台elasticsearch,無論用什麼方案,都需要2000~5000台幣。



做法三:直接呼叫大型語言模型(LLM API,例如 Gemini 類的服務)

優點:
- 最聰明、最全能。它不只懂同音錯字,還懂意思、懂上下文,甚至你打「那本魔法師小男孩的書」它都可能猜到是哈利波特。
- 幾乎不用自己開發,串個 API、寫幾句提示詞就能動。- 對各種千奇百怪的錯誤(同音、形近、語意、外文夾雜)都有很好的容忍度。
- 對於小型電商來說,成本可能反而更低,因為做查詢的人本來就不多,如果每天只有一兩次查詢,費用極端的低。

缺點:
- 如果使用者多,會發現它慢又貴。每查一次都要透過網路呼叫外部服務,通常至少要一秒以上,是果蠅腦的幾百倍到上千倍。理論上,查詢都要付費,量一大,帳單很可觀。
- 有可能有天生LLM「一本正經地亂講」的風險。雖然機率低,但是可能推薦一個根本不存在的商品。
- 很難「只回傳你商品庫裡真的有的東西」,還得額外做一層驗證。



======

以墊腳石為例,一個月要花多少錢?前面講優缺點還是有點抽象,我們乾脆用一個真實的例子把「營運成本」算出來。注意,這裡算的是「東西做好之後,每個月持續要付的錢」,不包含一開始的開發工。


先設定情境。墊腳石購物網(tcsb.com.tw)大約有十八萬個商品,假設一天約有三百筆成交。花錢的不是「購買次數」,而是「搜尋次數」。 會買的人,通常搜了好幾次、逛了好一陣子才下單;而且更多人是搜一搜、沒買就走了。以電商的經驗,搜尋量大概是成交量的幾十倍。我們保守,一個月大約六十萬次查詢。



方案一:果蠅腦

每月營運成本估計極低(600台幣)這套東西很輕,可以直接跑在你原本就有的網站主機上。一次查詢 5 毫秒,一台最普通的主機一秒就能處理好幾百次查詢,六十萬次查詢對它的運算量來說是很小的。

但要記得一個容易被忽略的成本:索引在查詢時必須放進記憶體(RAM)。 你不會希望每次查詢都去硬碟讀一次 90 MB 的檔案,那太慢了;正確做法是把它整份載入記憶體常駐。而且實際放進記憶體後,為了查得快,它會展開成一個「反向索引」的結構,比原始檔案還大,以十八萬商品來說,實測大約會吃掉 350 到 400 MB 的記憶體,加上商品名稱字串和程式本身,保守估計要為它多留大約 0.5 到 1 GB 的 RAM。1G記憶體的成本每個月大概600台幣(GCP)


方案二:Elasticsearch,每月營運成本估計約新台幣 3,000 到 15,000 元

十八萬商品對 Elasticsearch 來說是小事,但它是一個需要「一直開著」的伺服器程式,比較吃記憶體。營運成本主要是那台(或那幾台)伺服器的租金。

- 自己租雲端主機架設:一台中小型主機(足夠跑十八萬商品)一個月大約 3,000 到 8,000 元;若要考慮穩定性做兩台備援,那就要兩倍。
- 用雲端業者的「代管 Elasticsearch」服務:入門方案通常一個月落在 5,000 到 15,000 元之間
- 它是「按時間」計費(開著就在花錢),不是「按查詢次數」計費,所以查詢多寡影響不大,而且就目前預估查詢量也不太會超過

每月營運成本估計:約 3,000 到 15,000 元,取決於要不要備援與是否用代管服務。


方案三:LLM API,每月營運成本估計約新台幣 6,300 到 更多無上限 

這不見得比方案二貴,但因為它是「按查詢次數計費」的查越多、付越多,而墊腳石一個月有六十萬次查詢。

假設每一次查詢用到500token,60萬次就是300個百萬token。每一個百萬token假設是0.7美元(按20%是輸出 80%是輸入,用gemini的價格) 那們,這樣的API就要花300*0.7*30=6300台幣起跳。
這個方案有可能在極端情況下會比elasticsearch多很多。但在某些時候也可能少很多。


9/17/2026

(仿生智慧 part-2) 用一隻果蠅的大腦,來判斷這張圖片是不是"A"

 承接上篇

本文要分享一個小實驗:把一隻果蠅的整顆大腦「搬」進一台筆記型電腦裡,讓牠透過兩隻眼睛「看」圖片,然後訓練他回答一個很簡單的問題「這張圖裡面有沒有大寫的英文字母 A」。結果是可以的:果蠅大腦學會了,而且在簡單的測試裡,正確率高達百分之九十九以上。

果蠅大腦是誰做出來的?


我們的大腦裡有幾百億個神經元,彼此用類似電線東西連在一起,形成一張超級複雜的網路。這張「神經元的接線圖」,科學家給它一個名字,叫做「連接體」( Connectome)。

連接體就像是把大腦裡「哪個神經元接到哪個神經元」全部畫出來的地圖。有了這張地圖,我們才有機會了解大腦是怎麼運作的。

當然人類的大腦太大了,目前科技還做不到把每一條線都畫出來。所以科學家先從小動物下手,而果蠅(學名黑腹果蠅)就是最好的目標。牠的大腦只有大約十三萬個神經元,卻已經能夠飛行、學習、記憶、求偶、打架,麻雀雖小五臟俱全。反過來說,雖然他五臟俱全,但果蠅還真的夠小,小到可以直接切片分析。

這個把整顆果蠅大腦畫出來的計畫,叫做「FlyWire」。

這裡要特別澄清一個常見的誤會,很多人以為 FlyWire 是「Google 的專案」,我一開始查資料的時候也誤以為他是google的研究計劃,但其實它主要是由美國普林斯頓大學(Princeton University)的兩個實驗室主導的,背後有全世界上百位研究人員一起參與標註。Google 的研究團隊在其中扮演了很關鍵的角色,他們提供了強大的人工智慧影像技術,幫忙把電子顯微鏡拍下來的大腦切片,自動辨識、重建成一個一個的神經元。可以說,這是一個「學術界主導、Google 出力」的合作成果,成果在 2024 年登上了頂尖期刊《自然》(Nature)。

今年六月可以讓人隨便下載。全部都是公開資料,任何人都能下載。


如何下載?


最簡單的方法,是透過一個叫做「Codex」的網站(網址是 codex.flywire.ai)。這是普林斯頓大學做的線上工具,讓一般人也能瀏覽、查詢這顆果蠅大腦。你只需要用一個 Google 帳號登入(不用錢啊!),同意使用條款,就可以在網站上直接下載資料檔案,包括:

* 每個神經元的基本資料(它是哪一類細胞、在左腦還是右腦)
* 神經元之間的連線表(誰接到誰、接了幾條線、是興奮性還是抑制性)
*視覺神經的「欄位座標」(這是果蠅眼睛的地圖,這個專案會用到)

...等等還有很多相關資料。

這些檔案大多是壓縮過的表格檔,最大的一個也2G而已,一般家用網路幾分鐘就能下載完。

另外有其他的方式:是直接使用其他研究團隊已經整理好的版本。有一組哈佛的研究人員(Shiu 等人,2024 年同樣發表在自然期刊)把整顆果蠅大腦做成了一個可以直接拿來「跑模擬」的電腦模型,並且大方地放在網路上開源分享。我們這個實驗,程式碼很大部分,就在他們的基礎上完成。

怎麼讓一個靜態的果蠅腦動起來?



下載回來的果蠅大腦,本質上只是一張「連線圖」,它告訴你哪個神經元接到哪個神經元,但它本身不會動。


要讓它「動」起來,我們需要寫一個程式,去模擬每一個神經元的行為。真實的神經元是這樣運作的:它會慢慢累積來自其他神經元的訊號,像水杯慢慢裝水一樣;當累積到一定程度(水滿了),它就會「放電」一次,發出一個電脈衝,把訊號傳給下游的神經元,然後自己歸零、重新開始。

這種一顆一顆神經元、用「放電脈衝」互相溝通的模型,專業上叫做「脈衝神經網路」(英文縮寫 SNN)。它跟一般大家聽到的 AI(例如 ChatGPT 背後的技術)不太一樣,更接近真實大腦的運作方式。

我們用一台蘋果 M4 筆電,寫程式讓這十三萬多個神經元同時運作。一張圖片只需要大約 0.15 秒,速度相當快。

那怎麼知道我們的模擬「跑得對不對」?這一步很重要。我們拿前面提到的哈佛團隊那個已經驗證過的模型當作標準答案,做同一個實驗來比對。結果我們的模擬和他們的官方模型,神經元活躍程度的相關性高達 0.99(1.0 是完全一致),幾乎一模一樣。這代表我們的「電腦版果蠅大腦」是可信的。


(小插曲:在比對的過程中,我們一度發現自己的模擬比標準答案多冒出百分之二十的訊號。追查了很久,才發現原來真實模型有一個很細微的規則:神經元在「放電後的短暫休息期」內,是完全不理會外界訊號的。我們把這個細節補上之後,兩邊的結果就核對成功了)


如何讓果蠅腦「看」圖片


果蠅又不認識英文字母,我們怎麼讓牠「看」到一張寫著 A 的圖?

果蠅的眼睛是複眼,由大約七、八百個「小眼」排成一個六角形的蜂巢狀陣列。FlyWire 的資料裡剛好就有這些小眼的座標地圖(左右眼各一份)。


於是我們把一張 28×28 像素的小圖,投影到這個蜂巢狀的「螢幕」上:圖片哪裡亮,對應位置的視覺神經元就活躍一點;哪裡暗,就安靜一點。這張圖會同時送進左右兩隻眼睛。


一開始我很自然地想把訊號直接送進最前端的感光細胞,結果整個大腦幾乎沒反應,甚至越亮的畫面反應越弱。後來才理解:真實果蠅的感光細胞和最前端的神經元,用的是「抑制性」的訊號(有光的時候反而變安靜),而且它們不是用脈衝溝通的。所以我們改成把圖片訊號送進稍微後面一點、確定會「放電」的視覺神經元,訊號這才順利地一路傳進模擬的果蠅腦裡面。

這件事本身就很有啟發性:就算你手上有一張完整的大腦地圖,如果不了解每條線運作方式也沒用!不過當然,現在這類型的錯誤,在你自己有點知識的情況下,是可以讓AI幫忙找到潛在問題。

如何教果蠅腦分辨是不是A

訊號進到大腦之後,我們要在末端放兩個「判斷用」的神經元:一個代表「這是 A」,一個代表「這不是 A」。哪個放電放得比較多,就當作果蠅的答案。


一開始,這兩個神經元是隨便亂連的,答案當然也是亂猜。那牠是怎麼「學會」的?

訓練方法,大致源於真實大腦的獎勵機制,多巴胺。在神經科學裡,多巴胺就是大腦裡的那塊獎勵/懲罰。

(但技術上來說,所謂的多巴胺,在這個專案的程式裡只是調整某些地方的權重+-而已)

具體來說,每看完一張圖、果蠅給出答案之後,我們就告訴牠對還是錯,並且據此微調相關神經連線的強度:答對就強化剛剛用到的連線,答錯就削弱它。這個過程一遍一遍重複,果蠅腦就會慢慢被訓練。

這裡又有一個,網路上很多人會分享,果蠅學習與記憶的中樞叫做「蕈狀體」(Mushroom Body),我們原本理所當然地想把學習放在那裡。但實驗做下去才發現:在我們這個視覺任務裡,蕈狀體幾乎完全沒有被activate,因為連到它的視覺神經細胞太少了,根本傳不進足夠的「形狀」資訊。這其實跟生物學是吻合的:果蠅的蕈狀體主要負責「氣味」的記憶,而視覺圖形的辨識,在真實果蠅身上是由大腦別的區域負責的。順道一提,接下來的另一個實驗就會用到氣味神經。

所以我們順勢把「學習的位置」,改到了視覺訊號真正豐富的地方。也就是眼睛後方、負責把視覺送進大腦中樞的那一批「投射神經元」。

結果?


講了這麼多,結果到底如何?以下是實際跑出來的結果:


在「簡單版」的測試裡(字母置中、字型單純、只有一點雜訊):
* 判斷 A 與非 A 的正確率高達 99.4%。 (5000張圖)
* 而且學得很快,資料只跑過一輪,正確率就已經接近滿分。
* 就算只給牠看 100 張圖來學習,正確率也有 96.7%。


在「困難版」的測試裡(六種字型、會旋轉、會縮放、位置會偏移、雜訊更多):

*正確率約 74%。雖然沒有簡單版那麼漂亮,但仍然明顯高於亂猜的 50%。



我們也做了幾個「對照實驗」來確認結果是真的,而不是碰運氣:如果用書上那種「答對給獎勵、答錯什麼都不做」的舊方法,果蠅根本學不起來,正確率停在 60% 動不了。這證明「答錯要給懲罰」這件事很關鍵。

另外,有一個結果很直得一提:如果我們把大腦裡的連線「隨機打亂」(保持每個神經元的連線數量不變,只是亂接),在簡單版測試裡正確率居然還有 98%。這說明在簡單任務上,真正運作的是前端那套「視覺投影」的機制,果蠅大腦「神經連結線路」本身,並沒有想像中那麼關鍵。到了困難版,真實大腦的接線才稍微展現出一點優勢(會得到74% )。老實說我後來想想也很合理,許多昆蟲的複眼直接就可以決定看到的東西是什麼,根本不用進到大腦思考。

另外,這個實驗不是造出一個會識字的果蠅,他其實只是認定這個A圖樣。換成其他簡單圖樣結果應該也差不多。

實務上我把以訓練過的果蠅腦,打包成一個python script.
讓我以可以這樣執行它#python3 fly_check_a.py --image somepicture.png

有興趣也可以與我聯繫交流一下其他玩法:)



(仿生智慧 part-1) 果蠅的頭腦 能做的事比想像中來得多

 


一隻果蠅的大概有16萬多個神經細胞,並且,這些細胞互相之間,總共有大概一億兩千百萬個神經連結。16萬細胞中,13萬大概在大腦,其他分布在身體不同地方。

順道一提。人類光是大腦就有860億個神經細胞,而且連結數量實在太多,情況因人而異,但大約在100兆到1000兆之內。跟果蠅完全是不同等級。

而google的研究中心,把果蠅頭腦所有神經連結逐一數位化,並在2025年六月,發表了成年雄性果蠅完整中央神經系統圖譜MaleCNS v1。從發表以來,各種奇奇怪怪的應用都出現了,最引人注目的就是訓練果蠅玩遊戲,訓練果蠅投資數位產品之類的,這些種種作為,其實都是為了想要得達到利用生物天生有的頭腦架構,搞出更快更省電的人工智慧。

技術上來說,暫時還不是像「攻殼機動隊」一樣可以把生物的意識放在電腦裡面,但是,他確實可能是微小的第一步。

不過初期的應用還是跟現在人工智慧的應用差不多,但利用大自然已經訓練過上百萬上億年的神經網路,會遠比人類加上現存的AI的設計要好太多。

這隻果蠅的大腦數位化之後。可以被人類操作的是"SNN" ( Spiking Neural Network 的縮寫,中文稱為脈衝神經網路/突觸脈衝神經網路)。簡單的說就是大腦的運作可以靠電腦來模擬。

每個人都可以搞出自己的模擬細胞,模擬神經連結,特別是有AI之後,就算不會寫程式也可以做出來。但是,為什麼使用「果蠅大腦天然結構」優於「自己自創 SNN」?

果蠅大腦經過億萬年演化優化,果蠅在自然界中必須在極強的雜訊環境下(如風向干擾、氣味混合、水果微腐敗變質),精準在短時間識別出「這是不是同一種水果」「我可以吃嗎」。而這樣的SNN即是人類可以自己設計,可以花很多LLM的錢去模擬,做了幾萬種,可能都不如經過自然演化篩選過的果蠅大腦。

而SSN跟現在AI(LLM)比較起來,最大的優勢就是極端節省能源,耗電量極低。 

簡而言之,我打算做幾件事情。

(1) 果蠅認字基本訓練:


先download果蠅大腦ssn,然後,撰寫訓練程式。試圖做個簡單的測試。測試內容就是先產生幾百張圖,訓練果蠅大腦神經節,如果在視覺上看到A這個字就給予神經 多巴胺 獎勵。這樣幾百張圖之後,果蠅應該就學習到了A這個字。
測試也很簡單,給一些不同角度的"A"這個字的圖,看看果蠅神經反應如何。




(2) 果蠅同音錯別字更正:


利用果蠅大腦原本有的嗅覺機制,把中文字改成拼音字之後,對比之前訓練過的「嗅覺拼音」得到是不是同音錯別字,或者是最接近的字。講得很複雜,但簡單的說,就是先把「哈利波特」變成中文拼音「ㄏㄚㄌㄧㄅㄛㄊㄜ」 在讓果蠅記得這個字,但是果蠅不認得字啊,所以把它變成一種嗅覺電位刺激,讓他知道這個嗅覺。接下來如果有人輸入「哈力波忑」一樣換成拼音,再去果蠅大腦看看這個刺激有沒有反應,有的話是哪個反應,就得到「哈利波特」這個之前聞過的嗅覺。
當然,實際上嗅覺對於腦就是一種「數位刺激」,視覺也是聽覺也是,會使用嗅覺,是因為果蠅的嗅覺架構足夠處理10萬多種不同刺激,但是視覺解析度就很低了。請看這張果蠅視覺圖,他的複眼解析度實在不高。


(3) 果蠅 最瘋狂的事:

我還在想,希望前兩篇結果做好之後,第三件事情我也想到了:)