
進化學習的基本循環1. 初始化一群模型/參數種群2. 評估每個個體的適應度fitness3. 選擇優秀個體4. 交叉、變異產生下一代5. 重複多代直到效果滿意常見方向· 遺傳算法 GA優化超參數、組合問題· 進化策略 ES優化連續參數如神經網絡權重· 遺傳編程 GP進化出表達式或程序· 神經進化 Neuroevolution進化神經網絡權重/結構· NEAT同時進化網絡拓撲結構和權重Python 常用庫· DEAP通用進化算法· PyGAD遺傳算法· NEAT-Python神經進化· EvoTorch基於 PyTorch 的進化策略· CMACMA-ES 連續優化一個可運行的簡單例子進化策略學線性回歸目標讓模型學會 y 2x 1。pythonimport numpy as npnp.random.seed(42)# 數據X np.linspace(-1, 1, 100)y 2 * X 1 0.1 * np.random.randn(100)# 個體是 [w, b]def fitness(p):w, b ppred w * X breturn -np.mean((pred - y) ** 2) # 負均方誤差越大越好pop_size 50elite_size 10sigma 0.1generations 200# 初始化種群pop np.random.randn(pop_size, 2)for gen in range(generations):scores np.array([fitness(p) for p in pop])best_idx np.argmax(scores)if gen % 20 0:print(fGen {gen:3d} | fitness{scores[best_idx]:.4f} | w,b{pop[best_idx]})# 選擇精英elite pop[np.argsort(scores)[-elite_size:]]# 變異產生下一代children []for _ in range(pop_size):parent elite[np.random.randint(elite_size)]child parent sigma * np.random.randn(2)children.append(child)pop np.array(children)# 最終結果best pop[np.argmax([fitness(p) for p in pop])]print(學到的參數:, best)print(真實參數: [2, 1])運行後會看到 w 接近 2b 接近 1。如果你想進化神經網絡把上面的 [w, b] 換成神經網絡的所有權重· 每個個體 一組網絡權重· fitness 遊戲得分、準確率、損失的倒數· 用 EvoTorch 或 NEAT-Python 更方便注意點· 適應度函數是關鍵設計不好進化會跑偏· 要保留種群多樣性避免早熟收斂· 可加入交叉、精英保留、自適應變異· 計算量大時可並行評估· 常和梯度下降混合使用進化調結構/超參數梯度訓權重仅供参考用。