进化计算深度教程:遗传编程、进化编程与差分进化
本文档同时服务于首次接触进化算法的读者,以及希望深入理解其工程实现细节的研究者。全文采用对话式叙述,所有抽象概念均绑定具象场景。
1. 总体定位与知识图谱
1.1.1.1 为什么需要这套算法体系
想象你面对一个复杂的机器学习问题:你有一组输入(比如肌肉的电信号 EMG)和对应的输出(比如关节角度),你需要找到它们之间的映射关系。传统方法会告诉你:“假设这个映射是一个神经网络,我们来调整它的权重。” 这就像一个黑盒——你知道它工作,但不知道它内部到底在计算什么。
但如果你的场景要求可解释性呢?比如医疗诊断、金融风控,或者嵌入式控制。如果不用遗传编程这类机制,会发生什么?你会永远被困在"调参"的牢笼里:模型结构是固定的,你只能微调权重,一旦结构本身不适合这个问题,再好的优化器也无能为力。更糟的是,你无法向审计人员解释为什么模型做出了某个决策。
认知检查点:遗传编程的核心价值在于,它把"模型结构本身"也变成了优化变量,让我们从黑盒调参走向白盒函数发现。
现在我们已经了解了动机,接下来看看这套知识体系的全貌。如图 1-1 所示,进化计算家族包含多个分支,它们共享"种群进化"的思想,但在染色体表示和更新机制上分道扬镳。