Evolutionary Algorithms
探索进化算法如何利用自然选择解决 AI 问题。学习如何优化 Ultralytics YOLO26 的超参数并提升模型性能。
进化算法(EAs)是一类强大的优化算法,通过模拟自然选择和遗传学的生物学原理来解决复杂的计算问题。与依赖基于微积分的导数的传统数学技术(例如随机梯度下降(SGD))不同,EAs 专为探索广阔、崎岖或缺乏充分理解的搜索空间而设计。它们通过维护一个潜在解群体,使这些解随着时间推移相互竞争、繁殖和变异。这种方法特别适用于人工智能(AI)领域中的任务,因为其中的“最佳”解往往难以通过分析方法确定,从而使系统能够逐步演化,趋向最优结果。
生物学启发与核心机制#
进化算法的功能建立在适者生存这一概念之上。该过程会经历一系列旨在模拟自然遗传进化的算子循环,逐步优化候选解:
-
初始化: 系统生成由随机候选解组成的初始群体。在机器学习(ML)中,这些候选解可能代表不同的模型参数集。
-
适应度评估: 每个候选解都会根据一个特定目标进行测试,该目标称为适应度函数。对于计算机视觉(CV)模型,该函数通常会评估准确率或平均精度均值(mAP)等指标。
-
选择: 适应度得分较高的候选解会按概率被选为父代,从而确保成功的特征得以保留到下一代。
-
繁殖与变异: 新解通过交叉(重新组合两个父代的特征)和变异(引入随机变化)生成。这种遗传多样性的引入至关重要,因为它可以防止算法停滞在局部最优解中,帮助算法探索搜索空间以寻找全局最大值。
AI 中的实际应用#
进化算法具有很强的通用性,已成功应用于深度学习(DL)和工程领域中的各种场景。
自动超参数调优#
EAs 最实用的应用之一是超参数调优。现代神经网络需要配置数十个参数,例如学习率、权重衰减和动量,而这些参数会显著影响性能。EAs 可以通过不断演化配置设置,自动完成这一繁琐的试错过程。例如,Ultralytics 库中的 tune() 方法使用遗传算法,为自定义数据集上的 YOLO26 模型找到最佳训练超参数。
神经架构搜索(NAS)#
EAs 是神经架构搜索(NAS)的核心组成部分。进化算法无需由工程师手动设计神经网络(NN)的结构,而是可以“生长”出架构。它会测试不同的层、神经元和连接组合,逐步演化出在速度和准确率之间取得平衡的高效结构。这项技术促成了 EfficientNet 等高效骨干网络的诞生,这些网络针对特定硬件限制进行了优化。
进化算法与群体智能#
虽然二者都是受自然启发的优化策略,但区分 EAs 与群体智能(SI)很有帮助。
- 进化算法: 依赖代际变化。个体(解)生存、根据适应度繁殖,然后死亡并由其后代取代。主要驱动力是变异和交叉等遗传算子。
- 群体智能: 模拟群体内部的社会互动,例如鸟群或鱼群。粒子群优化(PSO)等算法包含一组智能体,它们在搜索空间中移动,并根据自身经验和邻居的成功情况调整位置,而不会进行代际替换。
使用 Ultralytics 实现优化#
从业者可以直接利用遗传算法来优化目标检测模型。Ultralytics 的 tune 方法会运行一个进化过程,在多个世代中不断变异超参数,自动识别出在验证数据上能够实现最高性能的设置。
from ultralytics import YOLO
# Load the standard YOLO26 model
model = YOLO("yolo26n.pt")
# Run hyperparameter tuning using a genetic algorithm approach
# The tuner evolves parameters (lr, momentum, etc.) over 30 generations
model.tune(data="coco8.yaml", epochs=10, iterations=30, plots=False)这种自动化优化使开发者能够摆脱手动猜测。对于正在扩展业务规模的团队,可以使用 Ultralytics Platform 来简化实验管理和模型性能演化跟踪;该平台能够可视化训练指标,并协助进行模型部署。









