进化算法:遗传编程(GP)
核心思想:不是手工编写解决方案,而是让它进化。
把程序当作 DNA。繁殖、变异、选择。适者代码生存。
在量子行走中,我们使用干涉来寻找路径。
在遗传编程中,我们使用选择 + 变异来寻找程序。
构建 GP 算法的核心技术
表示
技术:将程序编码为一棵树。
节点 = 函数
叶子 = 终端
原因:树天然表示表达式和代码。
适应度函数
技术:对程序解决问题的程度进行评分。
原因:这就是“自然选择”。无需梯度。
遗传算子
交叉:在 2 个父代程序之间交换子树。
变异:随机改变一个节点。 → ,或 →
选择:锦标赛、轮盘赌。保留表现最好的个体。
进化循环
示例
示例 1:符号回归
问题:找到拟合数据的公式。给定数据点 ,发现 $y = x^2 + 2x + 1$
经典方法:假设形式,进行回归。
GP:
种群:随机树,如 , ,
适应度:数据点上的 1 / MSE
经过 50 代:进化出
结果:在未被告知形式的情况下发现规律。
用于:科学发现、金融建模。
示例 2:蚂蚁轨迹问题
问题:进化一个程序,让蚂蚁吃掉网格上的所有食物。
基元: , , ,
适应度:600 步内吃掉的食物颗粒数
进化:
第 1 代:蚂蚁转圈
第 20 代:蚂蚁跟随简单轨迹
第 100 代:蚂蚁使用 高效回溯
结果:涌现策略,没有人类编程路径。
用于:机器人、路径规划。
示例 3:电路设计
问题:从元件 进化出一个低通滤波器电路。
表示:树 = 电路拓扑
适应度:频率响应与目标有多接近
进化:GP 发明人类不会尝试的怪异拓扑。
结果:NASA 使用 GP 为 ST5 卫星进化出一根天线。比人类设计好 10 倍。
用于:硬件设计、药物发现。
示例 4:游戏 AI / 策略
问题:进化交易机器人或游戏玩家。
表示:程序 = 决策树
适应度:1 年市场数据上的利润
进化:变异添加/删除规则。交叉组合良好策略。
结果:机器人自行发现诸如“逢低买入”的策略。
用于:算法交易、星际争霸 AI、游戏 NPC。
GP 与其他方法
| 方法 | 如何学习 | 需要 | 优势 |
| 梯度下降 | 跟随斜率 | 可微 | 快速、平滑 |
| 量子行走 | 干涉 | 量子硬件 | 搜索加速 |
| 亥姆霍兹 | 生成 + 识别 | 数据 | 无监督模型 |
| 遗传编程 | 进化 + 选择 | 适应度函数 | 能发明新结构 |
关键要点
GP 是“通过繁殖编程”。
你不告诉它怎么做。你通过适应度告诉它什么是好的。
它探索程序空间,保留有效的,丢弃无效的。
如同 Isaias:混沌 + 选择 = 新结构。
如同 Helmholtz:生成 + 测试 = 更好的模型。
如同量子行走:尝试许多路径 + 放大好的路径。
来源:Benjamin Iken · x.com