稳与简:好模型的两个隐性标尺
稳与简:好模型的两个隐性标尺
我们夸一个医生靠谱,不光看他诊断准不准。还得看两样:碰到说不清症状的病人,他会不会慌?开检查单时,是不是总想多开几项才安心?前者是稳,后者是简。换到机器学习里,这两个词有个更技术的名字:鲁棒学习和稀疏学习。
不过它们管的事儿不太一样。一个管数据乱不乱,一个管模型杂不杂。鲁棒性操心的是输入被扰动了、标签标错了、测试集和训练集长得不像了,模型还能不能扛住。稀疏性则盯着特征那么多哪些是真有用的,参数那么杂能不能只留关键的。目标不同,但都是为了让模型别光会做题,还得做得踏实、说得明白。
鲁棒学习:让模型在混乱中站稳
模型一上真实数据就崩,多半是因为训练时没见过这种“意外”。对付这类问题,路子不少。对抗训练是最常见的,专门防输入被人动手脚;分布鲁棒优化(DRO)则更宽泛些,不管是自然偏移还是某个子群体表现差,它都试着在最坏的分布下保住性能;认证防御走另一条路,直接给出数学保证,说“只要扰动不超过这个半径,结果一定没错”。
拿对抗训练来说,它的完整写法是 minθ E(x,y)∼D [max‖δ‖_p≤ε L(fθ(x+δ), y)]。简单讲就是:一边调参数θ让损失变小,一边允许扰动δ在ℓ_p范数限制的ε球里拼命把损失搞大。这个ε球其实就是扰动的天花板,后面聊“ε设太大导致干净样本变差”时,说的就是这个上限没卡好。这么做下来,模型的决策边界会被磨得圆滑些,小打小闹就不容易把它带沟里去。
稀疏学习:在高维中抓住关键
特征比样本还多的时候,模型特别容易把噪声当规律记下来。这时候就得靠稀疏学习帮它做减法。方法挺多,L1正则化、贪心选择、结构化稀疏都算主流。
L1为什么能选出零权重?关键在次梯度。‖w‖₁在原点不可导,它的次梯度是个区间[-λ, λ]。如果损失函数对某个权重的偏导绝对值没超过λ,那这个权重就可以稳稳停在零上。很多人喜欢用菱形和等高线相切来解释,几何直觉有用,但别当成因果,真正起作用的是次梯度条件。
图像分类:对抗防御不是加个训练就行
做图像的人常以为对抗训练加上就万事大吉,结果踩坑的不少。比如ε设太大,模型光顾着防强攻击,正常图片反而认不准了;或者训练时只用PGD这类一阶方法,等拿AutoAttack一测才发现根本扛不住。比较稳妥的做法是ε从小到大慢慢调,同时盯着干净准确率和对抗准确率两条线,别只看一个数。
至于稀疏性,在像素层面用得不多。但到了模型压缩阶段,结构化剪枝确实能和鲁棒训练搭着用,省算力。只是别默认剪完还能保持抗扰能力——很多时候剪完鲁棒性就掉了,得专门做鲁棒性感知微调才行。而且先训再剪、边剪边训、联合优化,不同顺序效果差很多,没有万能配方。
文本与表格建模:稀疏不是万能药
处理文本或表格数据时,很多人顺手就给L1正则化安排上,觉得它能自动挑特征。可一旦特征之间高度相关,Lasso就开始飘:这次选A,下次重采样可能换成B,结果没法复现。这不是随机,是解本身不稳定。遇到这种情况,Elastic Net或Group Lasso更合适,L2那部分会让相关特征一起进一起出,选择就稳多了。
就算方法选对了,λ也不能光看交叉验证分数。最好多做几次重采样,看看哪些特征反复被选中。如果交集太小,说明这个稀疏解自己都不稳,别提泛化了。另外也别迷信“稀疏+鲁棒=更强”,在表格和文本场景里,这两者收益经常不叠加。有些论文说联合方法有效,但你自己的任务未必适用,硬凑反而添乱。
稳与简,不该被算力置换
说到底,稳和简不总是朋友,有时还互相扯后腿。工程上难的不是两个都要,而是先搞清楚当前卡脖子的是外部太乱,还是内部太杂。
回到医生的比方,鲁棒让模型在混沌里站得住,稀疏让它在复杂中说得清。真实世界的数据生成本身就带着不确定性和稀疏结构,所以这两样本该是智能的底色,不是补丁。但现在大模型训练还是以似然最大化为王,鲁棒和稀疏往往只是事后加个约束、打个补丁。哪怕实践中它们有冲突,也不该被“参数越多越好”这一条路彻底盖过去。至少下次调ε的时候,我会先看一眼干净准确率掉没掉——这比堆参数实在多了。