Python实现ai进化

進化學習的基本循環:

  1. 初始化一群模型/參數(種群)

  2. 評估每個個體的適應度(fitness)

  3. 選擇優秀個體

  4. 交叉、變異產生下一代

  5. 重複多代,直到效果滿意

常見方向:

· 遺傳算法 GA:優化超參數、組合問題

· 進化策略 ES:優化連續參數,如神經網絡權重

· 遺傳編程 GP:進化出表達式或程序

· 神經進化 Neuroevolution:進化神經網絡權重/結構

· NEAT:同時進化網絡拓撲結構和權重

Python 常用庫:

· DEAP:通用進化算法

· PyGAD:遺傳算法

· NEAT-Python:神經進化

· EvoTorch:基於 PyTorch 的進化策略

· CMA:CMA-ES 連續優化

一個可運行的簡單例子:進化策略學線性回歸

目標:讓模型學會 y = 2x + 1。

```python

import numpy as np

np.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 = p

pred = w * X + b

return -np.mean((pred - y) ** 2) # 負均方誤差,越大越好

pop_size = 50

elite_size = 10

sigma = 0.1

generations = 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(f"Gen {gen:3d} | fitness={scoresbest_idx:.4f} | w,b={popbest_idx}")

選擇精英

elite = popnp.argsort(scores)\[-elite_size:]

變異產生下一代

children = \[\]

for _ in range(pop_size):

parent = elitenp.random.randint(elite_size)

child = parent + sigma * np.random.randn(2)

children.append(child)

pop = np.array(children)

最終結果

best = popnp.argmax(\[fitness(p) for p in pop)]

print("學到的參數:", best)

print("真實參數: 2, 1")

```

運行後會看到 w 接近 2,b 接近 1。

如果你想進化神經網絡

把上面的 w, b 換成神經網絡的所有權重:

· 每個個體 = 一組網絡權重

· fitness = 遊戲得分、準確率、損失的倒數

· 用 EvoTorch 或 NEAT-Python 更方便

注意點

· 適應度函數是關鍵,設計不好進化會跑偏

· 要保留種群多樣性,避免早熟收斂

· 可加入交叉、精英保留、自適應變異

· 計算量大時可並行評估

· 常和梯度下降混合使用:進化調結構/超參數,梯度訓權重

仅供参考用。

相关推荐
进击的明明10 小时前
当AI开始“边想边干”:深入聊聊ReAct,以及如何用Python手搓一个简单Agent
python·面试·agent
全栈弄潮儿11 小时前
Python实战第8期:函数
后端·python·编程语言
卷无止境12 小时前
暗流与破局:AI时代的代码安全审查工具全景指南
后端·python
卷无止境15 小时前
一人公司的全栈选型指南:让 AI Agent 写得快,也让生意跑得稳
后端·python
滴啦嘟啦哒17 小时前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
全栈练习生17 小时前
AI安全与红队测试
python·ai
费曼学习法17 小时前
把「发送成功」当「送达」?我排查 IM 长消息被静默吞掉的完整过程
python·ai编程·自动化运维
鸽鸽程序猿17 小时前
【项目】【在线判题系统】b端题目增删改
开发语言·python
NetX行者17 小时前
Python 工程化入门:从脚本到规范的 Python 项目结构
网络·python
MasonYyp17 小时前
asyncio并发协程
python