數學趣題

當群體比天才更聰明

由螞蟻費洛蒙、鳥群記憶與課室排程,理解 ACO、PSO 等群體智能如何共享有限資訊來搜尋複雜地景。

2025年12月18日 · 約 4 分鐘閱讀

第一篇文章放下完美,接受啟發式方法提供的足夠好解;第二篇攀越看不見的山,觀察局部搜尋、重啟和模擬退火如何在崎嶇適應度地景上移動。第三篇引入的新角色,不是孤獨的登山者,而是一個群體。

與其讓一位天才獨自解題,如果有一群能力不錯、只分享足夠資訊的思考者,結果會如何?

這個想法正是群體智能的核心。

螞蟻的早上通勤

炎熱日子,一列螞蟻在公園長椅下發現掉落的曲奇。牠們沒有地圖、領袖或白板計劃,數分鐘後卻形成一條由巢穴通往食物的密集有效路徑。

其機制來自簡單規則:

  • 每隻螞蟻遊走,找到食物後留下費洛蒙,並偏好費洛蒙較強的路徑。
  • 較短路線被走得更頻密,所以費洛蒙累積更快。
  • 較長繞路因蒸發及較少螞蟻補強而逐漸消失。

群體之所以「計算」出好路徑,不是因為任何一隻螞蟻特別聰明,而是整個系統共同放大有效選擇,並遺忘無效選擇。

這就是蟻群最佳化(Ant Colony Optimization,ACO)的設計模式:

  • 多個代理探索一張圖,例如道路、網絡連結或配送路線。
  • 每個代理提出一條路線,並按品質——較短距離、較低成本或較高收益——留下虛擬費洛蒙。
  • 演算法偏好費洛蒙較高的邊以利用目前知識,同時保留隨機探索及費洛蒙蒸發。

好路線得到「愈富愈富」的增強,差路線則退出集體記憶。不過增強過強亦會令群體過早集中於一條次佳路徑,所以蒸發率與探索機率十分重要。

一個真正成功的課室小組專案

想像教師要求全班設計學校時間表,盡量滿足:教師不能同時在兩間房、學生不應連續三堂重科,而且所有課堂下午四時前結束。

教師不讓一名學生獨自用試算表苦戰三晚,而是:

  1. 把全班分成十組;
  2. 給每組相同模板,但採用不同隨機起始時間表;
  3. 設定簡單規則:
    • 每輪可以複製另一組時間表中欣賞的部分;
    • 亦可自行作小修改,例如交換兩堂或移動一個時段;
    • 每輪結束後公開衝突總數及一個有效技巧。

數輪之後,沒有任何一組掌握完整答案,但好構想會傳播,失敗構想則因沒有人複製而消失。最後方案不是任何人的純粹創作,而是群體產物

把課室換成程式,這個過程便接近遺傳演算法或粒子群最佳化等族群式啟發法。

由鳥群走到粒子:PSO 的直覺

想像一群鳥在大田中尋找散落種子。每隻鳥知道目前位置,記得自己見過最多種子的地點,也留意鄰居發現的最佳位置。牠按三種作用調整速度:

  • **慣性:**大致保持原來方向;
  • **個人拉力:**移向自己曾見的最佳位置;
  • **社會拉力:**移向群體目前的最佳位置。

這就是粒子群最佳化(Particle Swarm Optimization,PSO)的核心:

  • 每隻鳥成為一個代表候選解的粒子。
  • 田野是搜尋空間,例如模型參數、機械人控制增益或定價決策。
  • 種子代表高適應度,即低誤差、低成本或高收益。

PSO 把山上一位登山者換成一群粒子。它們探索不同山坡和山谷,各自保存最佳高度,再共享全群看過的最佳位置;位置雲通常逐步收縮到有潛力的區域。

一張圖中的 PSO

在簡單二維地景中,水平與垂直軸是兩個決策變量,顏色代表目標值。可以想像四張快照:

  1. 初始化(t=0t=0
    • 三十個點隨機散佈。
    • 每點有一個方向與長度隨機的速度箭嘴。
  2. 早期探索(t=10t=10
    • 粒子開始漂移。
    • 部分粒子經過高值區,記錄為個人最佳。
    • 一個靠近高峰的粒子建立目前全局最佳。
  3. 中段(t=40t=40
    • 小群粒子圍繞多個有潛力山丘。
    • 速度同時指向個人與群體最佳。
    • 少數粒子仍大範圍遊走,保留探索。
  4. 後期收斂(t=100t=100
    • 大部分粒子聚集於同一盆地。
    • 速度縮小,由大幅越過轉為細微調整。
    • 群體先粗略廣搜,再在小範圍精搜。

PSO 不是在同一位置執着爬山,而是一種由集體記憶引導、逐步穩定的遊走。

實際更新常寫成

vit+1=ωvit+c1r1(pixit)+c2r2(gxit),xit+1=xit+vit+1,v_i^{t+1}=\omega v_i^t +c_1r_1(p_i-x_i^t)+c_2r_2(g-x_i^t), \qquad x_i^{t+1}=x_i^t+v_i^{t+1},

其中 ω\omega 控制慣性,pip_i 是粒子個人最佳,gg 是群體最佳,r1,r2r_1,r_2 是隨機係數。參數或速度限制選擇不當時,粒子可震盪、發散或過早聚集。

何時使用群體方法

群體不是魔法,也不是免費。它們以精確保證換取穩健探索與平行性,特別適合:

  • 地景非凸、帶雜訊、不連續或充滿誤導山谷;
  • 梯度不可得、不可靠或計算昂貴;
  • 多個候選可在 GPU、cluster 或雲端平行評估;
  • 重點是找到強而可行的解,而不是證明全局最優。

如果目標平滑、凸而且導數容易取得,經典梯度法通常更快、更乾淨。如果任務需要嚴格保證,或記憶體與評估預算極少,維持一整個群體亦可能不合適。

「目標評估昂貴」並不自動表示群體最好:群體每輪需要很多次評估。只有在這些評估可平行,或多點探索能明顯減少錯過好區域的風險時,額外成本才合理。

局部、退火與群體方法比較

方法核心概念優點缺點
局部搜尋/貪婪每步局部向上簡單、快速、每步便宜容易困在附近山丘
模擬退火有時接受較差移動可逃離陷阱,探索程度可調對冷卻排程敏感,只有一條軌跡
PSO/ACO 等群體方法多個代理分享部分資訊可平行、對崎嶇地景較穩健參數更多,每輪開銷較高,可能過早收斂

目的不是選出普遍冠軍,而是讓方法配合問題結構。若世界像一位登山者身處霧山,局部搜尋可能足夠;若像廣闊田野散佈多條線索,群體方法便更有吸引力。

小型思想實驗:調校機械人

假設要調整循線機械人的三個 PID 增益:比例、積分及微分。每組設定都要上載程式、讓機械人跑一圈,再按平順、速度與穩定程度評分。

可行方法包括逐個參數手動調整、在電腦執行模擬退火,或概念上使用一個群體:

  • 每個粒子是一組 (Kp,Ki,Kd)(K_p,K_i,K_d)
  • 每次測試數個粒子,先用模擬器,再間歇作真機測試;
  • 群體記住有效設定,逐步聚集到好區域。

即使沒有真正寫 PSO,群體式思考仍有用:同時保存數個候選控制器、共享「這個 KpK_p 範圍總是不穩定」等資訊,再收窄到多個候選都表現良好的位置。

這就是以人與便利貼實作的群體引導搜尋。要令研究可信,還需在獨立軌道及擾動下評估,避免群體只對用來調校的路線過度擬合。