在机器学习 (ML) 领域,损失函数可用于通过计算模型预测与正确“标准答案”预测之间的偏差来测量模型性能。优化模型需调整模型参数,以最小化某些损失函数的输出。
损失函数是一种目标函数,而在数据科学领域,它指代其最小化或最大化代表模型训练目标的任意函数。“损失函数”一词通常与成本函数或误差函数同义,且特指以最小化作为机器学习模型的训练目标的那些情况。
简单来说,损失函数追踪人工智能 (AI) 模型输出的错误程度。它通过量化给定输入的预测值(即模型输出)与实际值或标准答案之间的差异(“损失”)来实现。如果模型的预测值准确,则损失会很小。如果预测值不准确,损失就很大。
机器学习的基本目标是训练模型以输出良好的预测。损失函数有助于我们以数学方式来定义并尽可能实现该目标。在训练期间,模型可通过以减少损失的方式来调整参数以便进行“学习”,从而输出更好的预测。当损失降至最低且低于某一预定阈值时,机器学习模型便已充分进行训练。
在典型的训练设置中,模型会针对从训练数据集中提取的一批样本数据点进行预测,损失函数则会测量每个示例的平均误差。然后,此类信息会用于优化模型参数。
损失函数不仅仅是评估指标。其明确目的不仅是衡量模型是否成功,还可以作为算法的输入优化模型参数,从而最大限度地减少损失。
梯度下降等优化算法通常使用损失函数的梯度。梯度是多变量函数的导数。从本质上讲,导数描述了函数输出在任何点变化的速率和数量。因此,损失函数必须是可微分的:换句话说,在所有点上都有导数。
机器学习模型通过调整某些模型参数,学会进行准确预测。例如,一个简单的线性回归算法使用函数 y = wx + b 对数据进行建模,其中 y 是模型输出,x 是输入,w 是权重,b 是偏差。该模型通过更新权重和偏置项进行学习,直到充分最小化损失函数。
使用损失函数的梯度,优化算法确定向哪个方向“步进”模型参数,以便沿梯度向下走,从而减少损失。
虽然模型是通过在训练数据集上进行预测来训练和验证的,但在训练示例上表现出色并不是最终目标。机器学习的真正目标是训练能很好地泛化新示例的模型。
仅依靠单一损失函数的极小化被称为“经验风险最小化”。虽然它具有明显而简单的吸引力,但它存在模型对训练数据过度拟合的风险,因此概括性较差。为了降低这种风险,除其他目的外,许多算法和架构都引入了正则化项来修改主要损失函数。
例如,可以使用平均绝对误差(MAE,在这种情况下称为 L1 正则化),通过惩罚神经网络中已激活的神经元数量或其激活的强度来强制稀疏。
损失函数的种类非常多,每种函数都适用于不同的目标、数据类型和优先级。在最高层面上,最常用的损失函数分为回归损失函数和分类损失函数。
回归损失函数可测量涉及连续值的预测误差。虽然此类函数会以最直观的方式应用于可直接估计价格、年限、尺寸或时间等可量化概念的模型,但回归损失却有着广泛的应用范围。例如,回归损失函数可用于优化图像模型,而该模型的任务需估算单个像素的颜色值。
分类损失函数用于测量涉及离散值的预测误差,例如数据点所属的类别或电子邮件是否为垃圾邮件。分类损失函数的类型可以进一步细分为适合二元分类的函数和适合多类分类的函数。
从这两大类别中选择任何一个损失函数都应该取决于用例的性质。一些机器学习算法需要适合其数学结构的特定损失函数,但对于大多数模型架构来说,至少在理论上有多种选择。
不同的损失函数可对不同类型的错误进行优先级划分。例如,有些可能会严厉惩罚异常值,而另一些可能会控制微小的方差。有些虽然能够提供更高的精度,但计算过程更加复杂,因此需要更多的时间和计算资源。
最终,损失函数的选择应反映具体的学习任务、模型所分析数据的性质、代价最大的不准确问题的类型,以及现有的计算资源。
回归问题(例如线性回归或多项式回归)通过确定一个或多个自变量 (x) 与因变量 (y) 之间的关系来输出连续值:给定 x,预测 y 的值。因此,回归损失不仅要对输出是否错误敏感,还要对输出与标准答案的偏差程度敏感。
均方误差损失函数,也称为 L2 损失或二次损失,通常是大多数回归算法的默认函数。顾名思义,MSE 是所有训练样本中预测值和真实值之间的平方差的平均值。计算 n 个数据点的 MSE 的公式写为 1n∑i=1n(yi-yi^)2,其中 y 是真实值,ŷ 是预测值。
对误差进行平方意味着结果值始终为正:因此,MSE 仅评估误差的大小,而不评估其方向。对误差进行平方还会使大误差对整体损失产生不成比例的严重影响,这会强烈惩罚异常值并激励模型减少异常值。因此,假设目标输出具有正态(高斯)分布时,MSE 是合适的。
MSE 始终可微分,因此适用于通过梯度下降优化回归模型。
对于目标输出具有超大潜在值范围的回归问题(例如,涉及指数增长的回归问题),对大误差进行重罚可能会适得其反。均方对数误差 (MSLE) 可通过对预测值与平均值之差的自然对数的平方求平均值来抵消此问题。但须注意,MSLE 对过低预测值的惩罚会大于对过高预测值的惩罚。
MSLE 的公式可写为 1n∑i=1n(loge(1+yi)-loge(1+yi^))2
均方根误差是 MSE 的平方根,这使得它与标准差公式密切相关。具体而言,RMSE 的计算公式为:
.
因此,在异常值的敏感性方面,RMSE 很大程度上反映了 MSE 的质量,同时又更容易解释,因为它会以与输出值自身相同的单位来表示损失。较之计算 MSE,计算 RSME 还需额外执行一个步骤,因而会增加计算成本;于是,该优点在一定程度上会由此而被削弱。
平均绝对误差或L1 损失,用于衡量预测值和实际值之间的平均绝对差。与 MSE 一样,MAE 始终为正值,不会区分过高或过低的估计值。计算方法是所有误差的绝对值之和除以样本数量:
由于 MAE 不会对每个损失值求平方,因此,MAE 比 MSE 更能抵御异常值。因此,当数据可能包含一些不应对模型产生过大影响的极值时,MAE 是理想的选择。与 L2 损失相比,L1 损失对较小误差的惩罚力度更大。
在预测输出与实际输出相匹配的情况下,MAE 损失函数不可微。因此,MAE 在优化期间需要更多的解决方法步骤。
Huber 损失,也称为平滑 L1 损失,旨在平衡 MAE 和 MSE 两者的优势。它包含一个可调整超参数 δ,该超参数可充当过渡点:当损失值小于等于 δ 时,Huber 损失是二次的(例如 MSE);当损失值大于 δ 时,Huber 损失为线性(例如 MAE)。
因此,Huber 损失提供了一个完全可微分的函数,具有 MAE 对异常值的鲁棒性和 MSE 通过梯度下降易于优化的特点。与 MSE 损失相比,在 δ 处从二次行为过渡到线性行为也使优化更不易出现梯度消失或爆炸等问题。
由于需仔细定义 δ,从而会增加模型开发的复杂性,于是这些优点会被削弱。当 MSE 和 MAE 均无法产生令人满意的结果时,Huber 损失则最为合适。例如,当模型应对异常值保持稳健性,但它仍会严厉惩罚超出某一特定阈值的极值时。
分类问题以及用于优化解决这些问题的模型的损失函数分为二元 分类(例如,“垃圾邮件”或“非垃圾邮件”、“批准”或“拒绝”)或多类 分类。
多类分类问题可以通过两种方法解决。一种是计算数据点属于每个潜在类别的相对概率,然后选择概率最高的类别。这种方法通常由神经网络采用,对输出层的神经元使用 softmax 激活函数。另一种方法是将问题划分为一系列二元分类问题。
大多数情况下,分类损失均会以熵为单位进行计算。通俗来说,“熵”是指对某一系统内不确定性的衡量。举个直观的例子,通过将抛硬币与掷骰子进行比较可发现:前者的熵较低,因为抛硬币 (2) 的潜在结果数比掷骰子 (6) 更少。
在监督学习中,会将模型预测与数据标签提供的标准答案分类进行比较。这些标准答案标签是确定的,因此熵值会较低或为零。于是,我们可根据使用标准答案标签的确定性与模型预测的标签的确定性之间的差异来衡量损失。
交叉熵损失 (CEL) 的计算公式源自 Kullback-Leibler 散度(KL 散度),后者测量两个概率分布之间的差异。最终,最小化损失时需对分配给每个潜在标签的概率的真实分布与模型预测的每个标签的相对概率之间的差异进行最小化。
二元交叉熵损失(也称为对数损失)用于二元分类。二元分类算法通常输出介于 0 和 1 之间的似然值。例如,在垃圾邮件检测模型中,如果电子邮件输入的结果接近 1,则可以将其标记为“垃圾邮件”。输入产生的输出接近 0,将被归类为“非垃圾邮件”。输出 0.5 表示最大不确定性或熵。
虽然算法会输出介于 0 和 1 之间的值,但正确预测的实际值会是“0”或“1”。因此,最小化二元交叉熵损失不仅需要惩罚不正确的预测,还需要惩罚低确定性的预测。这将激励模型学习参数,从而产生不仅正确而且可信的预测。此外,专注于预测似然值的对数会导致算法对自信给出的错误预测进行更严重的惩罚。
为了保持损失值越小误差越小的惯例,结果乘以 -1。因此,单个示例 i 的对数损失计算方法为 (yi·log(p(yi))+(1-yi)·log(1-p(yi)),其中 yi 是真实似然值(0 或 1),p(yi) 是预测似然值。因此,整组 n 个训练示例的平均损失计算方法为 1n∑i=1nyi·log(p(yi))+(1-yi)·log(1-p(yi))。
分类交叉熵损失 (CCEL) 将相同的原理应用于多类分类。多类分类模型通常会为每个潜在类别输出一个值,代表属于每个相应类别的输入的概率。换句话说,它们以概率分布的形式输出预测。
在深度学习中,神经网络分类器通常对输出层的神经元使用 softmax 激活函数。每个输出神经元的值都会映射到 0 到 1 之间的一个数字,这些值的总和为 1。
例如,在仅包含一个潜在类别的数据点中,每个预测的实际值包含 “1”(代表正确分类)和 “0”(代表错误分类)。最小化 CCEL 意味着增加正确分类的输出值,同时 减少错误分类的输出值,从而使概率分布更接近标准答案。对于每个示例,必须为模型预测的每个潜在分类计算对数损失。
铰链损失是二元分类问题的替代损失函数,特别适合优化支持向量机 (SVM) 模型。具体来说,它是一个有效的损失函数,用于优化分离两个分类的决策边界:此后可以根据点落在决策边界的哪边来对它们进行相应分类。
在使用铰链损失的算法中,每个二进制标签的真实值映射到 {-1, 1} 而非 {0,1}。铰链损失函数 ℓ 定义为 ℓ(𝑦)=max(0,1−𝑡⋅𝑦),其中 t 是真实标签,y 是分类器的输出。这个方程的结果始终为非负数:如果 1−𝑡⋅𝑦 为负数(这只有在 t 和 y 符号相同时才有可能,因为模型预测了正确的类别),则损失将定义为 0。
它提供了各种可能性和激励:
当模型预测正确且可信时(即当 y 是正确的符号且 |y| ≥ 1 时),1–t⋅𝑦 的值将为负数,因此 ℓ = 0。
当模型预测正确但不可靠时,即当 y 符号正确但 |y|< 1 时,ℓ 的值将为正值,介于 0 和 1 之间。这会打消人们做出不自信预测的念头。
当模型预测不正确时(即,y 为错误符号时),ℓ 的值会大于 1,并随着 |y| 值线性增大。如此便可极大地抑制错误的预测。
部分模型架构,尤其是深度学习中使用的模型架构,表面上采用了专门的独特损失函数。尽管这些目标函数在上下文和逻辑方面独一无二,它们通常(但并非总是)只是将常见损失函数专门应用于特定的训练目标。
例如:
使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。
借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。
通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。