10

设计双层优化实验蓝图

AI999 第5课:方法演化:从优化解到优化算法本身
00:00

双层优化实验蓝图要回答一个具体问题:差分进化(DE)的变异因子 F 究竟应该设成多少。它的做法不是继续手调,而是把 F 从固定超参数提升为外层可演化的对象,把“用某个 F 设置去跑一次 DE 求解任务”作为内层评价过程;外层依据内层的任务表现更新配置。这套蓝图之所以跑得动,是因为它建立在 EvoX 的现代计算底座之上:种群、评价结果与算法状态被组织为可整体计算的张量,候选配置得以批量变异、批量评价并进入计算图接受编译优化,再由 Runtime 调度器把计算派发到 GPU、加速设备或分布式集群,从而把原本漫长的串行实验周期压缩到可接受的时间窗口。

双层优化实验蓝图 外层演化 F 策略 · 内层评价 DE 任务表现 张量化批量评价 · Runtime 派发 F 外层循环 演化 F 策略,逐代更新配置 1 F 基因型编码 常数 / 分阶段 / 调度函数 2 选择 · 变异 · 交叉 · 更新 外层种群逐代迭代,更新 F 配置 3 外层适应度聚合 均值 / 中位数 / 方差惩罚 DE 内层任务 评价该 F 设置下的 DE 表现 1 固定基准、维度与种子集 锁定 DE 结构,只变外层传入的 F 2 DE 运行 + GPU 批量评价 候选配置张量化并行派发 3 指标汇总 最优值 / 收敛 / 成功率 / 方差 配置映射 基因型 → 运行时 F 指标 → 外层适应度 任务反馈 双层闭环 蓝图必填栏位 必录日志:种子 · 预算 · 任务 ID · 硬件 · 停止条件 内层任务目标 基准 · 预算 · 种子集 外层策略对象 常数 · 分阶段 · 状态 F 映射方式 显式 · 可复现 评价指标 均值 · 分位 · 超体积 并行与预算 GPU 批量评价 基线与消融 固定 F = 0.5 经典自适应 DE

内层任务:把表现变成可比较的信号

内层是一个可重复的实验。先选定一个优化任务或基准函数集合,再把 DE 的主体结构、维度、评价预算与随机种子集合全部锁定——唯一变化的量,就是外层传进来的 F 配置。每次运行都要记录:最优值、收敛速度(到达阈值所需的代数)、成功率、约束违反量、多目标指标(如超体积)以及候选多样性。这些记录就是外层能“看见”的全部信息,也是外层判断好坏的唯一依据。评价以张量化方式成批执行,同一批候选共用一张计算图,避免逐个体串行评价的开销。

外层策略对象:F 不再是一个常数

外层搜索的不是一个数值,而是一个 F 策略。常见的编码有三类:常数 F;分阶段常数,例如基因 [F1, F2, F3] 按代数区间切换;由少量基因控制的调度函数,例如按当前成功率、种群方差或代数比例触发不同的 F。策略型编码除了基因本身,还必须写明输入特征与输出规则,否则同一段基因在不同实现下会跑出完全不同的结果。

映射方式:基因型到运行时配置

从外层基因型到内层运行时配置的映射必须显式且可复现。例如基因 [F起, F终, 衰减] 映射为随代数衰减的调度:F(t) = F起 + (F终 − F起) × e^(−衰减 × t / T),其中 t 为当前代数、T 为总代数;基因 [F1, F2, F3] 映射为三段常数切换。同一个基因型必须永远映射到同一个运行时配置,否则外层学到的“好基因”无法解释,也无法迁移到新任务。

闭环流程与必录日志

完整回路是:外层种群生成一批 F 配置 → Runtime 调度器按张量化批次并行派发内层 DE 任务 → GPU 批量评价 → 汇总指标 → 外层选择、变异、交叉与更新 → 进入下一轮。这里沿用 EvoX 的分层组织:算法层承载外层的演化与内层的 DE 逻辑,问题模块提供基准任务,Runtime 调度器负责把批量计算派发到 GPU 或分布式集群,监视模块回收指标。闭环上必须留下可重放的记录:随机种子、评价预算、任务 ID、硬件型号与停止条件。任何一次“外层胜出”的结论,都应该能在同样条件下重跑出来。

边界条件与基线:三层防护

噪声防护:内层评价波动大时,单次运行的结果不可信,必须多次独立运行并报告置信区间;适应度可用均值、中位数或最差分位数聚合,同时把训练任务与验证任务分开,防止外层只对某几个幸运种子过拟合。成本防护:内层任务昂贵时,先用低保真模型或代理评价做粗筛,再对少数候选做高保真复评。基线防护:固定 F = 0.5 与经典自适应 DE 必须同台比较,并用消融实验确认收益来自外层演化本身,而不是来自更多评价次数。若外层搜索空间过小,双层优化会退化成手动调参;此时应该扩大编码空间,而不是单纯加大预算。