上个月,我在一块旧GTX 1060上训练一个ResNet18做CIFAR-10分类。跑了八十多个epoch,损失曲线像进入瓶颈期的中年男人,最后卡在92%验证准确率上。我很兴奋,但转头看到表格里一些图片——被错分成了“鸟”和“船”。我仔细看了,发现模型把背景里的蓝天和屋顶边缘当成了特征。那一刻我意识到,这玩意儿根本不是在“理解”物体,它是在背答案,而且背得很粗糙。我用的还是最简单的数据增强,随机裁剪加翻转。想想如果换一批不同风格的图,可能直接崩掉。
传统观念里,深度学习是分层的特征提取,从边缘到纹理再到语义。但你真正去调参时,会发现它在训练集上用极端方式把标签和像素绑定起来。不用正则化,它就把噪声也记住。用Label Smoothing、有dropout,又像是给记忆强加了模糊。本质上看,我们的目标函数是经验风险最小化,也就是让模型在训练数据上取得低误差。这跟死记硬背没有区别,只是参数多了点,分布看起来平滑了些。这也是为什么我们总说调参很玄学,因为本质上是在调整记忆的边界。
有人提过泛化之谜:为什么一个拥有上百万参数的模型能在训练误差很小的同时,在测试集上也不差?我们往往归功于隐式正则化,比如SGD的噪声、权重衰减。但我观察到的对比是:当你把数据集顺序打乱,模型表现得非常不一样;当你把图片旋转5度,准确率下降2个点。这说明模型根本没学到“鸟”这个概念,而是学了一套对固定像素模板的响应。人的小朋友只会看一次飞机就能认出所有姿势,而我们却需要三四千张图来喂一个模型。这种差距不是量变,是质变。我试着用对抗样本攻击这个模型,在猫的图片上加一点噪声,它就认成狗。而人类根本不受影响。
所以我想说,真正的对比度不在CNN和Transformer之间,也不在监督学习和自监督之间,而是在“记忆”和“理解”之间。现在很多研究都在堆算力、拉参数量,其实还是在同一个范式里绕圈。我认为下一步应该探索的是一种自适应的“懒惰”机制:模型不先穷举特征,而是先找到最小的判别描述,比如用一张卡通轮廓来代表猫,然后在这种抽象上推理。这种机制可能会牺牲测试集上的几个点,换来的却是对分布的真正鲁棒性。我甚至觉得,那些所谓的大模型,只是把一本百科全书背得滚瓜烂熟,却连个造句题都要担心被问倒。
当然,我的观点可能是错的,因为我自己做的实验也经不起严格推敲,代码里还有一堆奇怪的魔改。但我越来越觉得,深度学习这个名词本身有点误导——我们其实在重演古老的“行为主义”记忆实验。如果哪天真要让AI有智能,也许就该让它在见过一只猫之后就学会偷懒。