☰
AutoML十年演进:从网格搜索到LLM驱动的新形态
2026/10/19 5:08:20 网站建设 项目流程

有一次朋友问我,十年前做机器学习项目,最难的是什么?我想了想说:不是模型调不出来,而是你永远不知道手上的结果是靠参数调得好,还是纯粹靠运气。那时候调XGBoost,先试learning rate,再试max_depth,一轮网格搜索跑下去,少则半天,多则三五天,出来的结果还经常换个随机种子就崩了。

后来AutoML逐渐冒出来,当时圈子里对它有两种极端态度:一种觉得这是骗人的玩具,另一种觉得终于可以不用人干活了。十年过去,回头看这两拨人都不完全对。AutoML没有彻底取代算法工程师,但它确实把“机器学习流水线中最枯燥的部分”一点点接管了——超参数怎么选、网络结构怎么搭、特征工程怎么做、甚至模型怎么集成,现在都有对应的自动化手段。这篇文章我想顺着这十年的演进线,把AutoML从“简单的参数搜索工具”到“LLM驱动的新形态”这段路完整捋一遍,重点放在核心技术变化、工程落地中的坑,以及我个人的使用心得上。

1. 起点:十年前手动调参的“体力活”时代

1.1 网格搜索为什么让人抓狂

如果回到2014年前后,绝大多数团队的建模流程是这样的:选定一个模型,比如随机森林或XGBoost,然后对几个关键参数各选几个候选值,做笛卡尔积组合,跑一遍交叉验证,挑出平均分最高的那组配置。这就是网格搜索,它看似简单清晰,问题却非常明显。

首先是组合爆炸。假设你要调5个参数,每个参数取5个候选值,那就是3125组组合;如果每组组合要跑5折交叉验证,等于要训练一万多轮模型。更麻烦的是,很多参数的取值其实存在强关联——比如学习率和树的棵数,单独看某个值很合理,组合到一起就可能训练不充分或过拟合。网格搜索完全无视这种关联,会造成大量无效组合浪费算力。

另一个隐蔽的问题是搜索分辨率。网格搜索的粒度完全由你预先定义的候选值决定,你给了5个值,它就在这5个值里挑;最优值落在两个格点中间时,它是永远找不到的。而现实中的超参数最优值,往往就是对数尺度上的一个位于两个候选点之间的尴尬位置。因此网格搜索真正能覆盖的搜索空间,其实小得可怜。

我那时候最深的感受是:每一次“再跑一遍网格搜索”都像开盲盒,因为随着数据量变化、特征工程改动,上一轮找到的最优参数往往会失效,然后又得从头再来。这个阶段本质上是人在做自动化该做的事,只是效率比纯手动还低。

1.2 随机搜索“翻身”与贝叶斯优化登场

2012年前后有一项系统性研究给出过一个反直觉的结论:随机搜索在绝大多数情况下都优于网格搜索。当时的分析逻辑并不复杂:超参数对模型效果的影响权重差异很大,真正起决定作用的往往只有两三个关键参数。随机搜索在采样样本量相同的情况下,能让每个参数“有机会取到”细粒度上的任意值,而不是被网格的分辨率锁死。换句话说,随机搜索是用更低的成本覆盖到了更真实的搜索空间。

但随机搜索的问题也很明显:它没有记忆,前面跑过的结果不会指导后面的采样方向。于是就有了贝叶斯优化的位置。贝叶斯优化的核心思路是让搜索过程“越跑越聪明”——用一组已知的(参数组合,效果得分)构建一个代理模型,这个代理模型负责预测未采样点的效果和不确定性,然后通过采集函数决定下一次试验选在哪儿。

在AutoML早期落地中,最典型的贝叶斯优化实现是TPE(Tree-structured Parzen Estimator),它的特点是能处理混合类型的超参数空间,比如某个参数是离散取值、另一个是连续的,还能表达类似“如果用了某种优化器,才需要学习率衰减”这种条件依赖关系。相比网格搜索,TPE能在同样的试验次数下找到明显更好的配置,这在当时的工业项目里是很实用的提升。

不过贝叶斯优化也不是完美答案。它的消耗重点从“训练模型”转移到了“维护代理模型和采集函数上”。对于一些本身训练就特别快的轻量模型,贝叶斯优化的开销反而可能超过训练开销,这是早期很多人忽略的点。

1.3 超参数优化的工程化教训

我在几个模拟项目里反复踩过的坑,集中起来大概是三条。

第一,评估流程必须固定,否则调参结果全是幻觉。如果你在调参过程中动过交叉验证划分方式、改过数据清洗逻辑,那几轮搜索结果之间就完全不可比较。AutoML工具能算出一个“最优配置”,但它无法替你判断这个最优是否建立在流程不一致的沙滩上。

第二,早停策略比参数本身更重要。很多超参数组合会在早期就暴露出收敛缓慢或过拟合的迹象,让它们继续跑完全部轮次,纯属浪费。后来我习惯在贝叶斯优化里加入基于学习曲线的提前终止,实测能将总搜索时间压缩到原来的三分之一左右,而最终效果几乎不掉。

第三,不要只看平均分,要看方差。两个候选参数,一个平均分高但方差大,另一个平均分略低但每折都稳定,我后来一律选后者。因为业务提交的是最终跑出来的模型,不是一堆统计数字;高方差的配置一旦落地到生产环境,很容易因为数据分布微小变化而崩盘。

2. 神经网络架构搜索:把“调架构”也自动化

2.1 搜索空间决定了自动化的上限

超参数优化解决的还只是“给定模型结构后怎么调参数”,但深度模型真正耗人的地方在于架构设计。2016年前后,神经网络架构搜索(Neural Architecture Search,简称NAS)开始进入大众视野。当时深度学习在各领域的成功,背后大量依赖资深研究员手工设计网络结构,这个门槛太高,于是大家开始想:能不能让算法自己去搜网络结构?

NAS刚起步时,大家马上意识到一个关键点:搜索空间的设计,比搜索策略本身更决定最终结果的上限。如果搜索空间中只有三层卷积加一个全连接,那即使搜索策略再强,也搜不出ResNet级别的结构来。早期的NAS搜索空间大多分成两类,一类是链式结构,即每层输入只来自前一层输出,清晰但表达能力有限;另一类是单元结构——先通过搜索找到最优的Cell单元结构,再按固定模式堆叠多个Cell组成完整网络。

单元搜索空间的思路非常有代表性。它把注意力从“整体网络有多少层、每层多大”转移到“单个细胞内部如何连接”,然后通过重复堆叠来扩大网络规模。这样搜索空间大幅缩小,搜到的单元结构还具备很强的迁移性——在某个小数据集上搜到的Cell,直接搬到更大的数据集上往往也能用。这也是后来很多NAS方法能在算力有限条件下做出高竞争力结果的原因。

2.2 从强化学习到权重共享:算力瓶颈下的路线之争

早期NAS的代表性做法是用强化学习生成网络结构的字符串描述,用子网络在验证集上的准确率作为奖励信号,通过策略梯度更新生成器。这个思路在当时效果不错,能搜出接近人类手工设计的结构,但代价极其惊人——需要成百上千块GPU同时跑好几天。这种算力门槛,注定了它只能停留在顶级研究机构的实验里。

产业界和学术界随后走了两条路。一条是进化算法,维护一个种群,通过变异和交叉生成新结构,用结构共享训练权重来评估个体优劣。和强化学习相比,进化搜索更擅长保留历史优秀结构的“基因片段”,在结构搜索上一般需要更少的完整训练次数。

另一条路线是权重共享,也叫One-shot搜索,思路是训练一个包含所有候选子网络的大超网,所有候选结构都是从这个超网中采样出来的子网络。这样不需要为每个候选结构从头训练,而是共享超网中的权重,评估成本瞬间从“完整训练一遍”降到“采样前向传播一次”。我在实际使用这类方法时的直观感受是,搜索速度至少提升了一个数量级,但代价也随之而来——超网训练的稳定性、子网络评估的公平性都变成新技术难点,有时会出现排序反转,即搜索阶段表现好的结构,单独完整训练后反而不如另一个候选。

2.3 可微搜索与复现性警示

再往后,有一类可微搜索方法站出来,试图把原来离散的网络结构选择问题,松弛成连续的架构权重参数,让整个超网可以端到端地梯度优化。代表方法我在这里不点名了,但思路值得记住:每个候选操作(如卷积核大小、是否有残差连接)都对应一个可学习的权重,训练时对这些权重做Softmax松弛,最后直接取权重最大的操作来生成离散结构。

这个方法把NAS的算力要求降到了单卡数天之内,一度让很多人觉得NAS问题已经彻底解决了。但随后大家陆续发现一个问题:这类方法的搜索结果很不稳定,同样的配置、同样的数据,换一个随机种子跑出来的最终结构差异可能非常大,甚至结论都会反转。社区后来逐步形成共识——评估这类方法必须引入多次独立重复实验,并且使用带有校准的搜索策略,而不是跑一次就下结论。

这个阶段给我最大的警示是:搜索算法看着自动化程度很高,但真正的“人工”反而更多了。你要设计搜索空间、要调整超网的训练策略、要设计评估协议,任何一个环节处理不当,最终搜出来的结构都不值得信任。NAS的十年演进,本质上不是把人类从架构设计里赶走,而是把人类的精力从“手工搭积木”转移到了“定义积木的规则和衡量标准”上。

3. 框架大战与工程化落地:AutoML真正走进业务

3.1 几类框架的定位差异

NAS的学术成果逐渐沉淀,产业界也开始出现可以开箱即用的AutoML框架。到了2018年前后,市面上的主力框架大概分成几类,定位差异非常大,我整理了一个简洁对照表。

框架类型自动化范围主要适用场景上手成本典型代表
全流程搜索型特征处理、模型选择、参数调优中小型表格数据低某些基于遗传编程的Pipeline框架
神经网络搜索型网络结构 + 超参数图像、序列等深度学习任务中某些基于流行深度学习框架的AutoML库
集成主导型多模型训练、层叠集成与后处理表格数据竞赛与业务建模低某开源集成学习AutoML引擎
企业级平台型数据、特征、模型、部署全链路企业级MLOps高各大厂商的托管式ML平台

这里要注意一个核心误区:AutoML的名字一样,内部“自动化”的层次完全不同。有些框架自动化的重点是模型超参数,有些是特征工程与模型选择的组合,还有一些把精力几乎全部放在了“如何把多个模型的结果叠起来”这件事上。如果你拿一个以NAS为核心的框架去跑结构化表格数据,性能和效率大概率不如一个简单的LightGBM加贝叶斯优化。

我当时在上一个表格类项目里的经验是:先用集成主导型框架跑一遍基线,它能在半小时内给出一个相当不弱的结果,帮你快速建立参照系;再基于这个参照系去判断,业务后续值是靠继续压模型,还是值得换一个更复杂的搜索方案。绝大多数情况下,集成主导型框架给出的基线就已经超过了团队之前手调的方案。

3.2 集成与后处理的启发

这类集成主导型的AutoML引擎,它的设计哲学和传统NAS有很大区别——它几乎不做高难度的结构搜索,而是把精力放在系统化集成上。具体来说就是同时训练多种异构模型(比如LightGBM、XGBoost、CatBoost、多层感知机),每个模型做超参数优化,然后通过多层堆叠(stacking)的方式把这些模型的预测结果再次输入给次级模型进行融合。

第一次跑通它时,我最大的感受是不解:为什么它不认真做特征选择或网络搜索,反而把大量算力花在“训练一堆模型再融合”上?后来随着经验积累才想明白,表格数据场景中,模型间的多样性本身就是最好的正则化。不同的树模型在特征处理、缺失值机制上有细微差异,融合后能把单模型的偏差弥补掉相当一部分。比起指望某个模型被调参调到完美,用一个被调参调得差不多的异构模型集合,在稳健性上反而更胜一筹。

这个设计给我在非AutoML项目里的启发也很大。我现在做普通的建模流程,如果有余量,一定会训练两到三个差异明显的模型做预测结果加权融合或者层叠,哪怕整体只提升了零点几个点AUC,在业务上往往也能带来可感知的排名变化。

3.3 表格数据中AutoML的实战配置建议

如果你现在准备在自己的表格数据项目里用开源的AutoML框架,我给出几条基于经验的配置建议。

一是时间预算要设对。很多人上来就给一个非常大的时间预算,这是错误的。AutoML框架在刚开始的十分钟内就会尝试最基础的经典模型,半小时内通常能构建起不错的集成;时间越长,它越倾向于引入复杂模型和后处理,但收益递减非常快。我一般先在短预算下跑出基线,再在重点任务上加倍。

二是数据理解不能省。有些AutoML框架会自动处理缺失值、类别编码、不平衡采样,但它们是通用策略,完全不了解你业务中“这列缺失其实有特殊含义”“这个类别的高频值一定很关键”这类领域知识。我用AutoML这些年最深的体会是:它永远替代不了特征工程,只是把你特征工程的产出“接得住”而已。

三是关注预测时的复杂度。AutoML集成型框架给出的最终模型可能包含几十上百个模型,离线测试表现很好,部署上线时特征抽取链路和内存开销可能直接压垮线上服务。我后来都会额外设置一个约束,限制最终模型的构造成分数量,优先保证在线推理性能可接受。

四是看一眼它到底选了哪些模型。框架会自动打印模型排行榜,我习惯从里面挑出占据主导的模型类型,反向验证领域判断。比如如果某个框架在榜单中长期选择树模型和简单线性模型,说明数据中的规律主要是表格型、非线性、高稀疏性的,这时再上深度学习模型就要警惕过拟合。

4. 从“搜模型”到“搜一切”:近几年的形态变化

4.1 特征工程、数据清洗与损失函数的自动化

如果说NAS解决的是“模型长什么样”,那近几年AutoML明显把野心扩展到了“整个机器学习流水线长什么样”。首先是自动特征工程,早期代表性的做法是用遗传编程对原始特征做加减乘除和函数组合,搜索出效果更好的新特征组合。相比搜索网络结构,特征工程的探索空间更大,因为没有明确的层数和连接关系可以约束,完全靠算子组合在特征集上“大浪淘沙”。

其次是数据清洗与数据增强的自动化。传统认知里,数据清洗都是人工判断完成的,但要想让AutoML真正端到端落地,就必须去自动化处理缺失值填充策略选择、类别频率编码、异常值截断、数据增强策略搜索等环节。近几年的一个明显方向是所谓“以数据为中心的AutoML”,它不再把数据当成固定输入,而是和模型搜索一起联合优化:先搜数据变换策略,再搜模型参数,交替迭代。

这背后的逻辑其实很简单:同样的模型,换了数据预处理方式,效果可能天差地别。自动搜索数据变换和搜索模型效果一样重要。但我在实际项目里基本只把这类能力用在对数据分布理解比较充分的场景中,因为自动化数据变换的搜索空间大,如果没有任何业务约束,很容易搜出在统计上合理但在业务语义上完全不可解释的处理路径。

此外,损失函数和优化器也开始被纳入自动化范畴。有些工作尝试搜索目标损失函数的组合形式、优化器的参数调度策略,让模型能在特定指标上取得更好表现。这类搜索在论文里效果好,但工程可复现时对随机种子和环境特别敏感,我建议只在比赛或离线评估中尝试,生产项目还是要谨慎一些。

4.2 约束优化:让AutoML学会低头

早期AutoML的目标函数非常纯粹:最大化预测准确率或最小化损失函数。但真实业务从来不是单目标问题,模型上线往往要同时考虑推理时间、内存占用、公平性指标、冷启动行为等一系列约束。于是近几年AutoML领域一个重要方向就是带约束的优化——要求搜索过程在满足若干约束的前提下,尽量优化目标指标。

这个转变听起来简单,实现上却很麻烦。比如你要求模型推理时间不超过50毫秒,那么搜索过程中评估每个候选结构时,都必须运行真实推理耗时测试,这会显著增加搜索开销。后来有一些近似做法,比如建立结构复杂度与推理耗时的代理模型,先用代理筛选掉明显超限的候选,再对少数候选做完整评估,效率和稳健性都好不少。

我自己在实际项目里碰到过更细的约束:模型输出的分布要尽量平滑,不能在一个月内出现忽高忽低的剧烈变化。这种约束很难写进搜索目标里,最后只能退回到人工对AutoML产出模型做后处理校准。所以我的判断是,AutoML在约束优化上的进步虽然明显,但离“自动满足所有业务潜规则”还有距离。

4.3 LLM给AutoML带来的新变量

2023年以后,大语言模型(LLM)的加入是AutoML演进里最值得关注的新变量。和传统搜索算法不同,LLM本身不是用来“比较候选配置的得分”,而是用来理解人类语言描述的任务需求,并根据这种理解生成初始配置、特征代码甚至整个建模流程的草图。

我看到的最有生产力的应用方式是三种。第一种:用LLM把业务人员的口语描述转换成AutoML框架的配置和搜索空间设定,相当于让AutoML听懂人话。比如你说“这个项目里缺失值很多,但不要粗暴填充成0”,LLM可以直接生成对应的数据预处理配置项。第二种:用LLM辅助特征工程,在拿到数据字典和列名后,LLM能根据语义生成一组候选特征变换表达式,再由AutoML框架做筛选和评估。第三种:让LLM充当搜索策略的“先验”,先根据领域常识缩减搜索空间,再用贝叶斯优化在这个缩小的空间里精确搜索,能节省不少算力。

我实际测试下来的感受是,LLM在AutoML里最有价值的地方不是替代调参器,而是把“人如何理解数据”这一层信息,低成本地传递给了搜索算法。纯粹的搜索算法其实是“盲人摸象”,它只能从过去的评估反馈里学习;而LLM能直接读懂数据字典、特征名、任务需求这些高度浓缩的信息,从而让搜索起点站在一个合理的区域。这两者的结合,才是这两年AutoML体验大幅提升的核心原因。当然其中的问题也很现实——LLM自身的输出方差、模型幻觉、生成配置的合法性校验,都需要额外检查环节。

5. 十年了,AutoML到底解放了多少双手?

5.1 我在三个真实项目里踩过的坑

第一个项目是信贷评分场景,团队当时希望用AutoML全自动建模来验证“人不用参与是否可行”。框架跑出来的AUC确实不低,但模型对某些长期稳定的强特征依赖性极强,一旦这些特征在线上出现短时间的缺失,整体分数就会剧烈波动。人工建模时我们会刻意加一些平滑约束,AutoML默认不会这么想。后来我们在框架里增加了特征稳定性约束,把这类坑填了。

第二个项目是商品销量预测,时间序列跨度大,数据里有明显的促销事件和季节效应。AutoML通用框架完全不理解促销事件的增量效应,把促销期数据当成了正常波动,导致预测严重偏离。最后是我们先在数据清洗阶段手工构造了促销相关特征,AutoML才跑出可用结果。这个项目给我的教训非常明确:AutoML对“陌生强信号”的处理能力很弱,人必须提前把强业务信号喂给它。

第三个项目是面向多个子任务的大量重复性建模任务,每个子任务的数据量都不大,但总共有上百个任务要单独建模。这种场景反而最适合AutoML,因为我们没有精力为每个子任务手工调参,而AutoML可以在统一流程下批量产出基线模型,整体效果远好于用一套固定参数硬跑。算是在这个领域里“被AutoML救了命”的正面案例。

5.2 该用AutoML的三种场景和不该用的两种场景

根据这些经历,我整理了自己判断是否该上AutoML的标准。

适合用AutoML的场景,第一是“多而不重”的重复建模场景,比如批量给大量小客户建模型,单个模型价值有限,数量多又不可能手工逐一调参。第二是“快速建立强基线”的场景,无论你要不要手工调优,先用AutoML跑出一个多模型融合的强基线,能让团队对数据能挖掘的上限有个清晰认识。第三是“非专家也能建模”的场景,业务分析师需要自己跑模型,AutoML可以大幅降低入门门槛。

不适合用AutoML的场景也有两种很典型。一种是强规则约束、强领域知识的业务场景,比如风控中需要满足极其明确的业务规则和监管逻辑解释,AutoML输出的黑箱集成模型很可能根本过不了验收。另一种是数据规模极大且规律极其动态的场景,比如实时点击率预估,AutoML的搜索周期再快也赶不上数据分布的变化速度,此时一个在线学习模型加上精心维护的特征管线,比反复重跑AutoML要靠谱得多。

5.3 给后来者的选型建议

如果你现在刚接触AutoML,我的建议是不要掉进“搜得越久越好”的陷阱里。先固定数据评估协议,用短时间预算跑一个强集成基线,再根据基线和业务反馈决定要不要继续加码搜索。同样重要的,是选框架的时候看清楚它擅长什么:跑表格数据就用集成主导型框架快速出基线;跑深度学习任务,NAS和可微搜索类的工具有价值,但要接受它的复现性风险;如果团队内有MLOps平台,优先考虑和企业现有部署链路整合度高的框架,而不是单机开源框架。

另一个建议是要建立对AutoML结果的“体检”流程。模型表现好只是第一步,还要检查它是不是过度依赖某些不稳定的字段、在关键数据切片的badcase分布是否合理、推理时延是否符合SLA。AutoML节省了建模时间,却把一部分评估和验证工作留给了人,这部分工作永远省不掉。

最后再分享一个我在实际项目里的体会:AutoML十年演进带来的最大变化,不是模型效果的突飞猛进,而是建模门槛的下降。以前一个需求过来,要等资深算法工程师安排时间做实验;现在业务同学可以先用AutoML跑出第一版结果,再找算法团队做针对性优化。这种“先自动化、后精调”的工作方式,可能比任何单个算法突破都更有价值。说到底,AutoML永远是在帮你从“把模型跑出来”走向“把模型用对”,而这个“用对”的过程,仍然需要人的判断。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询