跳到主内容
快讯直播
AI智模界
AI 词典

遗传算法:不保证最优,只保证能用的搜索循环

遗传算法(Genetic Algorithm, GA)是一种受生物进化启发的随机搜索方法。它不推导公式、不算梯度,而是先撒出一大群候选解,再让它们一代代“繁殖—淘汰”,最后挑出一个足够好用的。

它是怎么转起来的

第一步是把问题的解编码成一条“染色体”(chromosome),通常就是一串数或一串 0/1。比如给 20 个人排一周班,一条染色体可以是“每人每天上哪个班”的一长串编号;调一个模型的超参数,染色体就是那组参数的拼接。

第二步是写一个适应度函数(fitness function),给每条染色体打分。排班就打分“冲突少、偏好满足多”,调参就打分“验证集误差小”。

然后是循环四件事:

  • 选择(selection):分数高的个体更容易被抽中当父母,常用轮盘赌(roulette wheel)或锦标赛(tournament)方式。
  • 交叉(crossover):把两个父母的染色体各切一刀,交换片段,拼出孩子。
  • 变异(mutation):随机改动孩子身上的一小段,避免全群长得一模一样。
  • 替换:用孩子顶掉旧的种群,通常还会保留几个最优秀的个体(精英保留,elitism),防止好不容易找到的好解被冲掉。

重复几十上百代,种群的平均分一般会往上走。

打个比方

想象一个巨大的迷宫,你不知道出口在哪,也没法算出“往哪走更近”。于是你一次放出去一千个蒙眼探险者,每轮把走得最差的一批淘汰,让走得好的两两“生孩子”——孩子继承父母路线中各一段,再随机拐几个弯。跑上几十轮,总有人摸到出口附近。遗传算法干的就是这件事:不追求证明最优,只追求在巨大、离散、说不清形状的空间里,把“可用解”搜出来。

和邻居们的区别

方法需要梯度/可导适合的问题特点
梯度下降需要连续、可导的参数优化快,但会卡在局部最优,且要求问题光滑
随机搜索不需要任意简单,但每一轮都不积累经验
遗传算法不需要离散、组合、适应度可快速打分好片段能被保留重组,代价是算得慢、结果带随机性
遗传编程(Genetic Programming)不需要自动生成表达式或程序是 GA 的表亲,个体是一棵语法树而不是一串数

对从业者的意义

它最适合那种“组合爆炸 + 没有好公式”的场合:排班排产、路径规划、电路或天线布局、实验配方、特征子集挑选、超参数粗搜。上手时最该花时间的不是调交叉率变异率,而是编码方式和适应度函数——编码设计得不好,交叉出来的孩子全是废解;适应度函数写得有偏,算法就会精准地优化一个错的东西。

也要知道它的短板:计算开销大(每一代都要评估整个种群),随机性强(换个随机种子结果可能差很多,要固定种子并多跑几次),还容易“早熟收敛”(premature convergence)——全群过早长得一模一样,再也搜不出新方向,这时得靠提高变异率或重启种群。

最后一句实话:遗传算法名气很大,但并不是万能锤。很多场景下,一个针对问题设计的启发式规则,或者“随机撒点 + 局部改进”,效果并不差甚至更好。先问自己三个问题:问题真的是离散组合的吗?适应度能快速算出来吗?有没有更专用的算法?三个都说“是”,再请它上场。具体实现细节各家库不同,以官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。