最近参加一次关于“机器学习理论前沿”的专题讲座,听到了徐宗本院士分享的一段经历,其中提到他在误差建模领域的重要贡献——徐-罗奇定理
这是我第一次系统听说这个定理,但听完后,有种“原来一直在用,却不知道背后的数学真相”的感觉。
于是,想写下这篇文章,和大家一起聊聊这个被忽视的“损失函数选择之道”。
什么是最优损失函数
想象一下,你在玩一个“扔飞镖”的游戏:你要把飞镖扔到红心上;但是有风,有小狗跑过,还有人推了你一下,所以你每次扔都有点偏差。
你扔了好多次,老师在一旁看着,然后跟你说:
“你每次扔得歪的方式,其实是有规律的。”
有时候你总是往左歪,有时候你偶尔会扔得很远——这就像误差分布,也就是你“扔错的方式”。
那现在老师想训练你扔得更准,怎么办呢?
他会告诉你一个评分规则,也就是每次扔错了,要扣几分。
根据你平常是怎么扔偏的,来设计的评分方式,能让你改得最快、变得最准。
比如你总是往左歪,那评分规则就专门“扣往左的分”扣得多,让你注意别再左偏;
如果你偶尔会扔得超远,那评分规则就对“扔特别远的”扣更多分,提醒你别使劲太猛。
这套评分方式,就是最适合你的——这就是“最优损失函数”。
机器学习中的最优损失
在实际的机器学习任务中,我们经常默认选择某种损失函数:比如:做分类用 cross-entropy;做回归用 L2(均方误差);偶尔改用 MAE、Huber,为了更鲁棒而已。
传统机器学习理论假设:
损失函数是外生给定的,模型去拟合数据即可。
但现实场景往往复杂得多:
数据带噪音,错误来源五花八门(测量误差、标注偏差、系统漂移...)——这时,固定使用某种损失函数,等于在瞎子摸象。
一句话理解徐-罗奇定理
在一个典型的监督学习问题中,我们有输入 x,输出 y,目标是学得一个函数 f(x) ≈ y。
如果我们知道误差项 ε = y - f(x) 的概率密度函数是 p(ε),那么我们可以使用极大似然估计来推导损失函数。也就是说,我们希望最大化所有样本的联合概率:max f ∏ p(y_i - f(x_i)),这相当于最小化负对数似然:min f -∑ log p(y_i - f(x_i))。
这个负对数似然项,就是我们最终要使用的损失函数。
这正是徐-罗奇定理的数学基础:
它把“误差的概率建模”和“损失函数的选择”统一在一个理论框架中,让我们能根据数据的误差分布去合理地设计最优损失函数。
在误差分布已知的前提下,最优的损失函数应当与该分布的负对数成正比。
小结
这个定理对我们平常人的生活也有启发,即:如果你知道自己经常是怎么出错的,那就能选出一个最适合你学习的评分规则(损失函数),这样学得又快又准。
比如你练投篮,发现左手还行,但右手一到关键时刻就偏。那就不应该一味多练,而是更关注右手的出错方式,比如是不是出手角度偏、站姿不稳,针对性地改。也就是说,给你的评分方式,应该对“右手出错”权重大一点,这样练得更快准狠!!
OK,以上便是本次分享 ~ 欢迎加我微信 atar24,一起讨论理论与实战如何结合,构建更聪明的学习系统 🤖📚