Skip to Content
👋 嘿,快來看看全新 RWA 交易協議 Buxx.finance
文章NEWAI 代理模型奇幻的神經網路進化之旅

奇幻的神經網路進化之旅

Flappy Bird x 神經進化網路

當你看到螢幕上那些小鳥神奇地穿越障礙物時,也許會想:「這些賽博小鳥是怎麼變得這麼聰明的?」今天就讓我們一起揭開 Flappy Bird 背後的神秘面紗,探索那個讓小鳥從笨拙到優雅飛翔的進化之旅。

什麼是神經進化演算法?

如果你不曾聽過「神經進化演算法」(Neuroevolution),別擔心 - 它聽起來像是科幻電影裡的名詞,但實際上概念出奇簡單。

想像一下:

  1. 神經網路 = 模仿人腦的電腦程式
  2. 遺傳演算法 = 模仿達爾文進化論的優勝劣汰過程
  3. 神經進化 = 將上面兩者結合在一起的絕妙點子

簡單說,就是讓一群「電子鳥腦」彼此競爭,然後讓表現最好的「鳥腦」傳遞基因到下一代。就像現實生物的進化一樣,但速度快了幾百萬倍!

鳥腦解剖學:簡易版

我們的 AI 鳥有一個極其簡單的「大腦」結構:

  • 輸入:只有兩個神經元,分別接收鳥的高度和下一個管子的高度
  • 隱藏層:有兩個神經元進行數據處理
  • 輸出:一個神經元,決定是否拍動翅膀

就這樣!沒有什麼深度學習,沒有複雜的卷積,就這麼簡單的結構。但別小看這個「鳥腦」,它能創造奇蹟!

從菜鳥到鳥霸王:進化的秘訣

第一步:隨機大亂鬥

// 初始化 50 隻完全隨機的鳥 const neuvol = new Neuroevolution({ population: 50, network: [2, [2], 1], // 2個輸入, 2個隱藏神經元, 1個輸出 });

最初,所有的鳥都是「菜鳥」- 完全隨機行動。就像把 50 個初學者丟進鋼管舞教室,然後看誰能不摔斷腿堅持最久。大部分會悲慘撞牆,但總會有幾隻運氣好一點的。

第二步:優生學(不是邪惡的那種)

// 保留成績最好的 20% elitism: 0.2, // 讓 20% 完全隨機(防止陷入局部最優) randomBehaviour: 0.2, // 其餘 60% 是優秀鳥的後代

我們會做幾件事:

  • 保留表現最好的鳥(菁英主義萬歲!)
  • 引入一些全新的隨機鳥(新鮮血液!)
  • 讓菁英鳥「交配」產生後代(不要想太多…只是混合它們的神經權重)

第三步:突變基因,創造未來

// 10% 的機率讓神經連接發生突變 mutationRate: 0.1, // 突變幅度最大為 ±0.5 mutationRange: 0.5,

為了避免「近親繁殖」問題,我們會隨機改變一些神經連接的權重。這就像是自然界的基因突變,有時候會創造出超能力,有時候…嗯,就是災難。

AI 鳥類行為學:奇怪但有效的策略

經過幾十代進化後,你會發現這些 AI 鳥發展出一些有趣的行為模式:

  1. 驚慌失措鳥:總是在最後一刻才跳,看起來像是有嚴重的拖延症。
  2. 超級保守鳥:保持在畫面中央,就像一個不願冒險的會計師。 1.節奏大師鳥:發展出幾乎有音樂感的律動,讓人不禁想放些背景音樂。 1.作弊鳥?:有時候看起來它們找到了遊戲的漏洞,但實際上只是演算法最佳化的結果。

為什麼這麼簡單的東西能有效?

你可能會問:「真的這麼簡單就能讓 AI 學會玩遊戲?」

答案是:是的!因為:

  1. 問題很單純:Flappy Bird 是一個狀態簡單、動作有限的遊戲。
  2. 大量嘗試錯誤:電腦可以在短時間內嘗試數千次,比你自己練習幾百小時還有效。
  3. 適者生存:這是自然界最古老的學習法則之一,就算應用在虛擬鳥身上也一樣有效。

技術實現的獨特之處

breed(g1: Genome, g2: Genome, nbChilds: number): Genome[] { const datas: Genome[] = [] for (let nb = 0; nb < nbChilds; nb++) { // 深度複製第一個基因組 const data = new Genome(0, JSON.parse(JSON.stringify(g1.network))) if (g1.network && g2.network && data.network) { for (let i = 0; i < g2.network.weights.length; i++) { // 基因交叉:50% 機率採用第二個父母的基因 if (Math.random() <= 0.5) { data.network.weights[i] = g2.network.weights[i] } } // 隨機突變 for (let i = 0; i < data.network.weights.length; i++) { if (Math.random() <= self.options.mutationRate) { data.network.weights[i] += Math.random() * self.options.mutationRange * 2 - self.options.mutationRange } } } datas.push(data) } return datas }

這段代碼是整個系統的「DNA 實驗室」,負責將兩個成功的神經網路「基因」混合並產生下一代。這就像是把兩隻聰明鳥的「腦細胞連接方式」攪拌在一起,再加點突變調味料。

結論:AI 與達爾文的共舞

下次當你看到那些小鳥優雅地穿越管道時,請記住:它們不是被編程要這樣做的,而是「學會」了這樣做。通過無數代的失敗、學習和進化,從隨機行動到精確控制,這些虛擬生物展示了一個簡單而深刻的真理:

有時候,成功的秘訣不是聰明的設計,而是給予足夠的嘗試機會和適應環境的能力。

如果一群像素鳥能通過簡單的進化演算法學會玩遊戲,那麼我們人類是否也是通過類似的過程學會我們所有技能的呢?也許我們每個人都是自己基因和經驗的神經進化實驗品…

好了,深度思考時間結束。去調整那個速度按鈕,設定為 x1000,讓我們看看幾代之後那些小傢伙能有多厲害!

技術補充

如果你對神經進化演算法背後的數學和更多技術細節感興趣,可以參考以下資源:

  1. Kenneth O. Stanley 的 NEAT 論文 (NeuroEvolution of Augmenting Topologies)
  2. 《The Quest for Artificial Intelligence》- Nils J. Nilsson
  3. 《Evolutionary Optimization Algorithms》- Dan Simon
最後更新於: