优化与训练

损失函数(loss function)

/ LOSS FUNK-shun /

损失函数,就是那个告诉学习模型「这一下你做得有多糟」的单一数字。想象教人掷飞镖:每掷一次,你就量一量飞镖落点离靶心有多远。那段距离就是损失。正中靶心,损失为零;偏得离谱,损失就很大。训练的全部意义,就是不断推着模型让这个数字越来越小。

说得精确些,损失函数接收模型的预测值和真实答案,返回一个衡量两者差距的数字。不同的任务用不同的尺子。预测一个数量(比如房价)时,常用平方误差——把差值平方,于是大错远比小错更「疼」。把东西分门别类时(猫还是狗),常用交叉熵(cross-entropy),它专门惩罚那种「错得还很自信」的情况。反向传播正是对损失求导,来找出每个权重该往哪个方向调整。

选择损失函数,是一个项目中最关键的决定之一,因为模型会一丝不苟地去优化你所衡量的东西——不多也不少。如果你的损失奖励自动驾驶车「转向平稳」却从不惩罚撞上路缘,它就会学会「平稳地撞上路缘」。损失就是模型对「好」的定义,所以一个马虎或不匹配的损失,会悄悄教出错误的功课——哪怕你的每一行代码都没写错。

模型预测一套房子卖30万美元,实际卖了35万。平方误差损失为 (350−300)² = 2500(以千美元的平方计)。第二套房子:预测40万,卖了41万,损失 (410−400)² = 100。第一个错误的权重是第二个的25倍,所以训练会最卖力地去纠正那个大偏差。

平方误差让大错占主导——这是有意为之的设计。

损失只是你真正在意之事的「替身」,而不是那件事本身。一个模型可以把损失压到接近零,却依然毫无用处——只要这个损失没能抓住现实世界的目标。这就是「训练损失很低」与「真的好用」之间那条著名的鸿沟。

又称
cost functionobjective functionerror function损失函数代价函数目标函数損失函數代價函數