跳至主要内容

成本函数:完整指南

了解什么是成本函数,以及如何和何时使用它们。包含实用示例。
· 15分钟 阅读

使用 AI 探索

成本函数充当决策的“记分员”。它们衡量预测值与数据集实际值之间的偏差。在机器学习中,它们指导优化算法最小化误差并提升模型准确率。

本文将循序渐进地建立直觉。我们先从经济学应用入手,成本函数用于描述产出与效率之间的权衡;然后转向机器学习,成本函数驱动模型训练;接着,将优化视为两者之间的桥梁;最后,探讨真实世界的案例。

什么是成本函数? 

成本函数是优化与评估的基础。下面从数学上定义成本函数,并考察其关键性质。

所谓成本函数(也称“误差函数”)是将一个或多个输入变量映射为单一数值,用于表示某一决策或预测的“成本”。在机器学习中,它通常定义为整个数据集上损失函数的平均值。

成本函数有两项作用:既是优化算法要最小化的目标,也是衡量模型表现的评估指标。

以作为目标的成本函数为例。对每套房子,损失函数会惩罚实际售价与预测价格之间的差异。成本函数将所有房屋的惩罚汇总:

  • Yi 为实际价格,
  • Ŷi(θ) 为预测价格,取决于参数θ,
  • n 为样本数量。

成本越小表示整体拟合越好,成本越大表示平均误差越大。优化器通过调整参数以最小化该成本。

作为评估指标,成本函数衡量性能。例如,分类器可用准确率、召回率或适用于该应用的任意指标来评估。通过这种方式,成本函数提供了评判成败的手段。

成本函数的性质

三种数学性质尤为重要。

  • 凸性:凸函数呈“碗状”,且只有一个谷底。这能保证优化器抵达全局最小值,而不会卡在局部低谷中。
  • 可微性:可微的成本函数具有良好的斜率行为,这使得基于梯度的方法能够高效地调整参数。
  • 连续性:连续函数随输入平滑变化。没有突变意味着优化过程更稳定。

这些性质共同决定了成本函数在优化中的易解程度。当缺少其中某一性质时,可能需要使用特殊技术来弥补。

经济与商业中的成本函数应用 

成本函数描述产出数量与产品总成本之间的关系。它们是理解企业行为、定价策略与利润分析的关键工具。

经济成本的类型

  • 固定成本:不随产出变化的支出,如租金或水电费。
  • 变动成本:随产量升降的支出,如计时工资或销售提成。
  • 总成本(TC):固定成本与变动成本之和。

  • 平均成本:每单位的成本。

  • 边际成本(MC):多生产一单位的成本,即成本对数量的导数。

  • 边际收益(MR):产品销量增加一个单位所带来的总收益增量。

成本曲线

成本曲线展示成本随总产量变化的函数关系。固定成本为常数,因此显示为一条水平线;而变动成本则随产出单位数增加而上升。

Wikipedia:成本曲线

短期与长期成本

在短期内,至少有一项投入(如资本或厂房规模)保持不变,其他投入可以变化。短期成本衡量企业在当前配置下的运行效率。因此,对于给定的产量 q,短期成本等于固定成本与依赖数量的变动成本之和。

短期内,在现有产能内进行优化。

在长期内,所有投入都可变动。企业可以扩大或调整其生产流程。长期成本衡量当产能本身可变时的效率,展示任意产出水平下可达到的最小成本。

长期内,通过选择最优产能本身来优化。

生产与利润分析

成本函数用于分析定价行为。企业将成本曲线与市场价格进行比较,以决定是否扩张或收缩生产。如果边际成本低于市场价格,增加产量会提高利润;如果边际成本高于市场价格,增加产量反而会亏损。

成本函数也应用于定价策略。它们决定企业可以收取的最低可行价格。企业可能在高度竞争行业中将价格定在接近边际成本的位置,或高于边际成本以最大化利润。因此,成本分析为盈亏平衡定价、成本加成定价以及动态定价提供依据。

盈亏平衡点出现在总收益等于总成本的位置。

在这一点上,公司覆盖了所有成本但没有利润。少生产会亏损,而多生产则产生利润。

利润是总收益与总成本的差额。

若边际收益大于边际成本(MR > MC),企业会增加产量以获取更多利润。若边际收益小于边际成本(MR < MC),企业会减少产量以提升利润。企业在 MR = MC 的产量处实现利润最大化。

想进一步了解金融主题,推荐查阅以下 DataCamp 资源。

机器学习中的成本函数  

在机器学习应用中,成本函数衡量整个数据集上的残差(预测值与真实值的差异)。本节将探索主要的成本函数家族及其如何塑造模型行为。

回归损失 

在机器学习语境中,回归的目标(不一定是线性回归)是预测一个连续值。回归损失函数衡量某个样本的真实值与预测值之间的误差;成本函数将损失汇总为整体量。优化过程使用成本函数来最小化总体误差。

我们聚焦于四类主要成本函数:平均绝对误差(MAE)、均方误差(MSE)、均方根误差(RMSE)以及 Huber 损失。

不同的成本函数以不同方式处理误差。实质上,它们定义了对预测与真实之间偏差的惩罚程度。MAE 施加均匀惩罚,体现中位数行为并对异常值具有鲁棒性。MSE 将残差平方,使得大误差占主导并受到更严厉惩罚。Huber 损失融合二者:对小误差使用二次惩罚,对大误差(超过阈值 δ)使用线性惩罚。

平均绝对误差(MAE)

平均绝对误差定义为残差绝对值的平均数。

MAE 对所有偏差一视同仁,因此不像我们将看到的其他方法(如 MSE)那样受异常值影响。然而,绝对值在数学上较为不便,使得基于梯度的优化更困难。

关于函数参数的说明。θ 表示模型参数。优化器是基于这些参数来控制成本的,而不是直接基于由参数产生的预测值。因此,我们将成本写成 θ的函数,而不是Ŷi。

MSE

均方误差(MSE)由下式给出。

将残差平方会放大大的误差,因此 MSE 对异常值敏感。尽管如此,该形式的误差是可微且凸的,因而利于优化。

RMSE

MSE 的一个缺点在于其单位被平方。例如,在房价回归模型中,损失的单位是美元的平方,不够直观。RMSE通过对 MSE 开平方来解决该问题。

RMSE 的行为与 MSE 类似,但其单位与问题本身一致(美元,而非平方美元)。

Huber

Huber 损失比 MSE(或 RMSE)对异常值更不敏感。它结合了 MAE 与 MSE,并通过参数δ控制两者之间的切换。

其中

该公式可防止少量大的残差主导损失。Huber 损失适用于含噪的真实世界数据,在这种数据中您预期会出现偶发的极端观测。

分类损失 

分类用于预测离散类别。这些成本函数将概率分布与真实标签进行比较,惩罚错误或过度自信的预测。

交叉熵损失

交叉熵损失(对数损失)当模型自信且正确时给予奖励,而当模型自信却错误时给予惩罚。

对于输出纯概率的分类器Ŷ,观测标签Y的似然为

极大似然估计(MLE)最大化该似然在所有样本上的值。

现在将其转化为最小化成本。最小化等价于最大化其相反数,因此我们翻转符号,并取对数。

我们可以将其更简洁地写成一个求和式。

为什么取对数?对数有几个优点:

  • 把乘积变为求和。避免相乘小数导致下溢,改为相加概率;
  • 使函数成为凹函数。对数将似然变为单峰的凹函数,具有唯一全局最大值;
  • 提供有意义的惩罚曲线。
    • p = 1.0 时损失为 0,
    • p = 0.9 时损失为 0.1(小),
    • p = 0.2 时损失为 2.3(大),
    • p = 0.01 时损失为 4.6(巨大)
  • 避免嵌套指数。在逻辑回归与神经网络中,对数可“解包”嵌套指数,使得求导更简单稳定。

假设某模型为两个类别预测概率:“dog”(类别 0)或“cat”(类别 1)。如果真实答案是 1(“cat”),且模型 90% 确定为猫,则损失较小,因为模型自信且正确;如果模型仅有 10% 确定为猫,则损失很大,因为模型自信但错误。

多类别分类的交叉熵

当类别多于两个(“cat”、“dog”、“bird”)时,模型为每个类别生成一个原始分数(“logit”),记为Zi。logit 可以为任意实数,因此通过 softmax 函数转换为和为 1 的概率。

随后用交叉熵将模型预测与真实标签进行比较。

示例

假设真实标签为“cat”,模型预测的概率为:cat:80%,dog:15%,bird:5%。损失为

如果对“cat”的预测概率只有 30%,则损失会高得多:

对数会惩罚自信的错误,并奖励高置信度的正确预测。

合页损失(Hinge Loss)

合页损失主要用于最大间隔分类,如支持向量机(SVM)。目标是通过让预测远离决策边界来实现“自信”的分类。

对于二分类,合页损失如下所示。

其中

总成本函数为

项 YiŶi 衡量样本被分类的好坏。

  • 当其大于 1 时,样本位于边界正确一侧且无损失。
  • 当其介于 0 与 1 之间时,点位于间隔内,会施加小的惩罚。
  • 当其小于 0 时,模型发生误分类。损失会随与边界的距离线性增长。

由 ChatGPT 5 生成

Kullback-Leibler(KL)

Kullback-Leibler(KL)散度衡量近似分布 Q 与给定分布 P 的差异,定义为

维基百科

KL 散度可解释为:用针对 Q 优化的编码来对 P 的样本进行编码时,平均所多消耗的比特数差异。

正则化 

正则化技术通过在成本函数中加入惩罚项来防止模型拟合训练数据中的噪声,从而避免过于复杂的解。

无正则化时,模型最小化损失:

加入正则化后,模型增加一个惩罚项

其中

  • L 为常规损失(如 RMSE、交叉熵)
  • R(θ) 衡量模型复杂度
  • λ 控制拟合与简洁之间的权衡

常见的正则化包括 L1、L2 与弹性网。

L1 正则化(又称 lasso)将每个模型权重的绝对值加入成本函数。

当最小化该成本时,许多权重会被压到 0。这使 L1 成为一种自动特征选择形式:无贡献的特征会被推至 0。

L2 正则化(又称岭回归)对每个模型权重的平方进行惩罚。

与 L1 不同,它不会将权重直接设为 0,而是平滑地收缩它们。这样能保留模型中的所有特征,但减小其影响以稳定预测。

弹性网同时加入 L1 与 L2。

λ 控制整体正则化力度;α为 0 到 1 的数,控制 L1 与 L2 的占比,其中 1 为纯 L1,0 为纯岭回归。

权衡取舍 

不同的分类损失策略各有权衡。

交叉熵通过惩罚自信的错误来最大化正确类别的概率。其权衡在于对异常值和错误标注敏感。它最适用于您关心置信度质量的场景(如风险模型)。

合页损失强制引入间隔,使得正确分类不仅正确且“有把握”。它忽略那些远离间隔安全区的样本,对违反间隔的情况给出线性惩罚。相比交叉熵,它对异常值更不敏感,但因在“合页”处不可微,优化更难平滑进行。

Kullback-Leibler(KL)散度用于匹配一个概率分布到另一个。它等价于交叉熵减去真实分布的熵。

想了解更多,请查看以下链接。

机器学习中的成本函数实现与实践 

目前为止,我们从理论上讨论了成本函数。在实践中,机器学习模型的成功取决于其最小化这些函数的效率。本节介绍核心优化算法与调参策略的实用细节。

优化算法与参数调优

优化是寻找能最小化成本函数的模型参数最优值的过程。在机器学习中,这意味着找到使预测尽可能接近真实值的参数。

梯度下降 

梯度下降是优化成本函数的标准算法。它沿着最能降低成本的方向(负梯度)迭代更新模型参数。直观地说,它测量成本函数的多变量斜率并沿“下坡路”前进。

更新规则为

其中θ为模型参数,n为学习率,是成本函数对参数的梯度。

学习率的选择至关重要。过大则更新会越过最小值并振荡或发散;过小则收敛缓慢,可能在局部极小值处停滞。

主要变体有批量、随机与小批量。

  • 批量梯度下降:使用整个训练集计算梯度。稳定但对大数据集或在线学习而言较慢且占用内存。
  • 随机梯度下降(SGD):每个训练样本后更新参数。速度快、内存友好,但每步可能稍微偏离最优路径。然而,这种随机性有助于逃离局部极小值。
  • 小批量梯度下降:一种实用折中。用小批量计算梯度,以平衡速度与稳定性,同时支持 GPU 并行。

自适应优化器 

标准梯度下降为所有参数应用固定学习率。在复杂模型中,不同参数可能需要不同步长。自适应优化器会基于梯度幅度的历史来调整学习率。

  • RMSProp使用近期梯度平方的指数衰减平均。

每个参数的学习率与该平均值成反比缩放。这可防止振荡,并在某些参数梯度较陡时仍能稳定前进。RMSProp 广泛用于循环网络和噪声数据。

  • 自适应矩估计(Adam)同时跟踪过去梯度的均值与方差,动态调整步长。

其收敛快、对噪声鲁棒,是深度网络框架的默认优化器。

特征缩放与初始化

在用梯度下降优化之前,应对特征进行缩放,使其数值范围相近。恰当的缩放有助于提升优化的稳定性与效率。

若不缩放,数值范围大的特征会主导梯度,导致梯度下降呈“之字形”而不能直达最小值。

常见方法有两种:

  • 标准化:将各特征中心化为 0,并缩放为单位方差。

其中u为均值,ơ 为标准差。标准化可保留数据结构。

  • 归一化:将各特征缩放到固定区间,通常为 [0, 1]。

归一化在神经网络中很常见,因其激活函数在输入有界时表现最佳。

参数初始化策略

参数初始化对模型训练影响很大。糟糕的初始化会导致收敛缓慢、梯度爆炸或消失,甚至模型无法学习。良好的初始化会将参数置于梯度稳定的成本曲面区域。

  • 随机初始化:赋予小的随机值,通常来自均匀或正态分布。随机化打破对称,使参数学习到不同特征。但若方差过大或过小,梯度可能爆炸或消失。
  • Xavier(Glorot)初始化:为 tanh 或 sigmoid 等非线性激活设计,按输入与输出连接数来缩放权重方差。

这样可使各层的激活与梯度大致保持一致。

  • He 初始化:针对会将负值置零的 ReLU 激活来调整方差。权重从具有特定方差的正态分布中抽样:

这可防止在反向传播中梯度过快消失。

监控、诊断与可视化

所谓训练损失曲线是绘制随时间推移模型在训练集上的误差。它展示了模型如何更新参数以最小化误差。持续下降的曲线表明模型在从数据中学习模式。

所谓验证损失曲线展示模型在未见数据(如留出集或验证集)上的泛化能力,体现其在新数据上的预测表现。

理想情况下,两条曲线在开始时都下降,然后趋于平缓。这表明模型既有效学习也有效泛化。

过拟合发生在模型将噪声当作信号学习,因而泛化不佳。在训练与验证曲线图中表现为训练损失下降而验证损失上升。应对方法包括使用更大的数据集或在模型中引入正则化。

欠拟合发生在模型未能捕捉数据中的潜在模式。训练与验证曲线均保持较高。在这种情况下,可以尝试更多数据、更复杂的模型,或降低正则化力度。

收敛指曲线趋于平坦、再训练收效甚微的时刻。这是过拟合与欠拟合之间的“甜蜜点”。

成本函数优化与决策理论 

我们已经看到,经济学与机器学习都依赖优化来指导决策与训练。两者都致力于基于某种成本或损失度量做出最佳决策。下面更一般性地讨论优化理论。

目标函数

所谓目标函数是定义我们要最小化或最大化内容的数学函数。在前文的案例中,我们最小化了成本或误差:在经济学中,我们考察了成本曲线;在机器学习中,我们考察了回归损失(MAE、RMSE、Huber)与分类损失(交叉熵、合页损失、KL 损失)。这些都是优化目标函数的例子。

多目标优化 

我们常常需要同时优化多个且彼此冲突的目标。企业可能想要最大化利润并最小化风险;数据科学家可能想提升模型准确率,同时不牺牲可解释性或公平性。这类相互竞争的目标构成多目标优化问题:改善一个目标可能会恶化另一个。

帕累托前沿

若没有任何目标可以在不使至少一个其他目标变差的情况下改进,则该解为帕累托最优。所有帕累托最优解构成帕累托前沿,这是一条包含最佳权衡解的曲线。曲线上的每个点代表不同的优先级平衡。

例如,提高模型复杂度可能提升准确率,但降低可解释性;较简单的模型更易解释,但性能可能更差。帕累托前沿包含“最佳权衡解”,排除被其他解支配的方案。

选择合适的点取决于情境与判断。您可以为每个目标分配权重,或施加政策约束。

期望损失

当结果存在不确定性时,优化会最小化期望损失,即对所有可能情景的平均损失。在机器学习中,这一思想体现为风险函数。

其中L(Y,f(x))为给定预测的损失,期望对数据分布取平均。目标是找到使该期望损失最小的模型 f。该模型在平均意义上表现最佳,而非仅在个别样本上。

贝叶斯风险

所谓贝叶斯风险是期望损失的理论下界。形式上由下式给出。

直观地说,这是“满分”,即在对数据分布拥有完美信息的条件下可达到的最小值。模型性能越接近贝叶斯风险,就越最优。

跨学科应用 

凡是进行数据驱动决策的行业都会使用成本函数。它们帮助平衡相互竞争的目标,并将“更好”的含义形式化。此类函数将权衡转化为可度量的目标并引导优化。训练机器学习模型所用的同样逻辑也用于优化现实世界流程。

行业应用与领域用例

例如在制造业,成本函数量化损失(如库存损失)。库存成本函数需在过量存货的费用与缺货的惩罚之间取得平衡。类似框架也用于生产调度或能源使用,以在不确定性下最小化期望总成本。

在医疗领域,预测模型通过成本函数平衡准确性与资源配置。例如,再入院风险模型可及早识别高风险患者,以便临床人员进行随访电话或上门探访。漏判高风险患者的代价高于误报低风险患者,因此函数对两类错误赋予不同惩罚。

金融同样使用目标函数。例如,信用评分模型预测借款人在一定期限内(如 12 个月)违约的概率。批准高风险借款人可能造成财务损失,而拒绝低风险借款人则可能损失收入。模型的目标是最小化期望成本。

在所有这些领域中,成本函数将权衡转化为可度量的量,供决策者使用与推理。

结论 

成本函数为评估决策提供方法。在经济学中,它们刻画产出与效率之间的权衡;在机器学习中,它们度量预测与真实之间的差距。

在机器学习中,成本函数是模型设计的基石。损失函数的选择决定了模型认为的“成功”。均方误差奖励整体准确性,交叉熵奖励校准良好的概率,合页损失奖励自信的分隔。

在各个领域与行业中,其底层逻辑相同:定义目标并对其进行优化。成本函数将模糊目标转化为具体数值,以指导优化。

成本函数适用于经济学、机器学习、制造业、金融、医疗保健,以及任何需要量化权衡的地方。

想了解更多,推荐以下 DataCamp 资源。

成本函数常见问答

什么是成本函数?

成本函数用于判断模型预测与数据的匹配程度。它将误差汇总为单一数值。优化算法随后最小化该数值以提升性能。

回归与分类任务的成本函数有何不同?

回归模型预测连续值,因此其损失(如 MSE、MAE)衡量与目标之间的数值距离。

分类模型预测类别概率;交叉熵等损失将预测的概率分布与真实类别比较,并对自信的错误给予强烈惩罚。

成本函数在商业中的一些真实应用是什么?

凡涉及权衡或优化的业务流程都离不开成本函数。示例包括定价与收益优化、库存管理、信用与风险建模、客户保留或物流等。

Huber 损失函数如何处理数据中的异常值?

Huber 损失函数对小误差按 MSE 处理、对大误差按 MAE 处理,因此对异常值不那么敏感。

边际成本与平均成本的关系是什么?

边际成本(MC)衡量多生产一单位的成本。平均成本(AC)是总成本除以单位数。当 MC < AC 时,多生产会降低平均成本;当 MC > AC 时,多生产会提高平均成本;当 MC = AC 时,平均成本处于最小值。

Mark Pedigo

作者

Mark Pedigo

Mark Pedigo(博士)是一位在医疗数据科学、编程与教育领域具有深厚专长的资深数据科学家。Mark 拥有数学博士学位、计算机科学学士学位以及人工智能专业证书,兼具扎实的技术底蕴与务实的解决问题能力。他的职业经历涵盖欺诈检测、婴儿死亡率预测与财务预测,并参与了 NASA 成本估算软件的研发。作为教育工作者,他曾在 DataCamp 和圣路易斯华盛顿大学任教,并指导初级程序员。在闲暇时间,Mark 与妻子 Mandy 和爱犬 Harley 一起享受明尼苏达的户外时光,并演奏爵士钢琴。

主题