【漫话机器学习系列】248.什么是代价(损失)函数(Why It Called A Cost Function)

什么是代价(损失)函数?——深入理解与应用

在机器学习与深度学习领域,我们经常听到“代价函数(Cost Function)”或者“损失函数(Loss Function)”这两个术语。它们在模型训练过程中扮演着至关重要的角色。那么,什么是代价(损失)函数?为什么需要它?它又是如何影响模型训练效果的?
今天,我们就结合 Chris Albon 的简明图解,来详细聊一聊代价(损失)函数的本质。


1. 为什么叫做 Cost Function?

正如图中所描述:

代价(或损失)函数是在训练过程中需要最小化的目标函数。
它衡量的是“使用模型而不是事实”的代价。

简单来说,代价函数衡量了模型预测值与真实值之间的差距
在模型训练的过程中,我们希望模型的预测越来越接近真实数据。代价函数就像一个标尺,时刻告诉我们“当前模型表现得有多好或多差”,并指导我们如何调整模型参数,使预测结果更加准确。

关键词总结:

  • 最小化:目标是让代价函数的值尽可能小。

  • 模型误差:代价函数体现的是模型与现实之间的误差。

  • 优化方向:代价函数提供了优化方向,指导参数更新。


2. 代价函数与损失函数的区别

在很多资料中,Cost FunctionLoss Function 常常交替使用,但在严格意义上,它们略有差异:

名称定义举例
损失函数(Loss Function)针对单个样本的预测误差进行衡量。均方误差(MSE)、交叉熵损失(Cross Entropy Loss)
代价函数(Cost Function)针对整个训练集上的损失进行平均或累计,作为最终优化目标。总损失的平均值

简单理解就是:
损失函数是“一个样本”的误差,代价函数是“整体样本”的误差。


3. 常见的代价(损失)函数类型

根据任务的不同(回归任务、分类任务等),我们会选择不同的代价函数:

3.1 回归问题中的代价函数

  • 均方误差(MSE)

    MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2

    衡量预测值和真实值之间差值的平方的平均值,常用于线性回归。

  • 平均绝对误差(MAE)

    MAE = \frac{1}{n}\sum_{i=1}^{n}|y_i - \hat{y}_i|

    衡量预测值与真实值之间绝对差异的平均值,适合异常值较多的数据集。

3.2 分类问题中的代价函数

  • 交叉熵损失(Cross Entropy Loss)
    用于二分类或多分类任务,衡量分类概率分布之间的差异。

    二分类交叉熵公式:

    Loss = -\left( y\log(\hat{y}) + (1-y)\log(1-\hat{y}) \right)
  • KL散度(KL Divergence)
    衡量两个概率分布之间的差异,也可用于分类问题。


4. 为什么代价函数如此重要?

4.1 指导训练方向

没有代价函数,模型参数更新就无从下手。通过计算代价函数的梯度,模型可以根据当前预测误差,沿着下降方向调整权重,使得下一次预测更准确。

4.2 衡量模型好坏

代价函数值的大小,直接反映了模型在训练集(或验证集)上的表现。代价函数高,意味着模型预测误差大;代价函数低,说明模型预测得更好。

4.3 影响最终模型性能

如果代价函数设计得不合理(比如选择了不适合任务类型的损失函数),即便训练过程很努力,最终得到的模型效果也可能很差。


5. 一个小例子

假设我们正在训练一个简单的房价预测模型。
真实房价(单位:万)是:[50, 60, 70]
模型预测的是:[52, 58, 69]

那么,使用均方误差(MSE)计算代价函数值:

MSE = \frac{(50-52)^2 + (60-58)^2 + (70-69)^2}{3} = \frac{4+4+1}{3} = 3

这个结果告诉我们,当前模型的平均平方误差是3。
在训练过程中,我们的目标就是通过调整模型参数,使这个代价函数值不断下降,比如下降到2、1、甚至更低。


6. 总结

代价函数是机器学习模型训练过程中不可或缺的一部分,它告诉我们模型当前的表现,并引导模型向更优的方向优化。
理解代价(损失)函数的意义和常见类型,有助于我们根据不同问题选择合适的优化目标,从而训练出更优秀、更精准的模型。

一句话总结:代价函数,是我们“付出”的衡量,是通往理想模型的必经之路!


参考资料

  • Chris Albon's machine learning notes

  • 《Deep Learning》—— Ian Goodfellow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值