损失函数的选择是深度学习中的一个关键决策,它影响优化过程、模型行为、稳健性和整体性能。
1. 均方误差(MSE)损失 -
也称为 L2 损失,特别用于回归任务。
它测量预测值与实际值(真实值)之间平方差的平均值。
▫️ 均方误差的优缺点
均方误差(MSE)损失的优点
1. 良好的优化景观:MSE 结果是一个平滑且凸的优化景观,促进了使用基于梯度的算法(如梯度下降)进行高效优化。
2. 唯一的极小值:MSE 具有唯一的全局极小值,简化了优化过程。在某些情况下可以获得解析解。
3. 可微性:MSE 在任何地方都是可微的,允许在训练过程中使用基于梯度的优化方法。
4. 回归中的常用方法:MSE 是回归问题的标准且广泛使用的损失函数,目标是预测连续的数值。
5. 解析解:在某些情况下,MSE 允许获得解析解,从而在优化过程中提供计算效率。
均方误差(MSE)损失的缺点
1. 对异常值敏感:由于误差的平方,MSE 对异常值非常敏感,大的误差对损失有不成比例的影响。
2. 非直观的尺度:MSE 的尺度受到平方差的影响,特别是与原始数据的尺度相比时,MSE 的解释性较差。
3. 偏向大误差:平方运算给较大误差赋予了更多权重,这可能不适合模型需要对极端值不太敏感的情况。
4. 异常值的影响:带有较大平方误差的异常值可能会主导损失,导致模型偏差。在存在异常值的情况下,可能更偏好使用更稳健的替代方法,如平均绝对误差(MAE)。
5. 高斯分布的假设:MSE 假设误差是正态分布的,如果这个假设不成立,它的性能可能会不佳。像 Huber 损失等其他损失函数在这种情况下提供了更好的稳健性。
2. 平均绝对误差(MAE)-
与 MSE 不同的是,MSE 由于平方运算会对较大的误差给予更重的惩罚,而 MAE 对所有误差一视同仁。这在异常值对模型性能有显著影响的情况下可能是有利的。
▫️ 平均绝对误差(MAE)的优缺点
解释性
优点:
- 容易解释,因为它表示预测值与实际值之间的平均绝对差异。
缺点:
- 对异常值敏感,因为它对所有误差一视同仁,这可能不适合具有极端值的数据集。
稳健性
优点:
- 相比于均方误差(MSE),对异常值不太敏感,使其成为一个稳健的度量指标。
缺点:
- 可能不能有效地惩罚较大的误差,这在某些应用中可能很重要。
优化
优点:
- 在模型训练期间容易优化,因为它导致凸优化问题。
缺点:
- 在目标是最小化较大误差影响的情况下,可能导致次优模型。
应用
优点:
- 特别适合于所有误差,无论大小,都应该被同等对待的应用场景。
缺点:
- 在较大误差需要更多重视的情况下,其他度量指标如均方误差(MSE)可能更适合。
范围
优点:
- MAE 的范围不受数据尺度的影响,使其在不同数据集之间具有可比性。
缺点:
- 缺乏标准化可能使得比较不同模型或数据集的 MAE 值具有挑战性。
数学性质
优点:
- 数学上简单且计算效率高。
缺点:
- 可能无法捕捉误差分布的全部复杂性,尤其是当分布具有厚尾时。
3. Huber 损失
也称为平滑的 L1 损失,用于回归任务。
它旨在解决 MSE 和 MAE 的一些局限性。
δ 是一个阈值参数,决定何时从二次损失(MSE)转换为线性损失(MAE)。
▫️ Huber 损失的优缺点
Huber 损失的优点
1. 对异常值具有鲁棒性:Huber 损失相比于均方误差(MSE)对异常值不太敏感。
2. 平衡的行为:它在平均绝对误差(MAE)的稳健性和均方误差(MSE)的收敛速度之间提供了一种平衡。
3. 可微性:Huber 损失在所有地方都是可微的,包括从二次行为到线性行为的过渡点。
4. 平滑过渡:从二次到线性行为的平滑过渡允许更稳定的优化过程。
5. 适合包含异常值的回归:Huber 损失特别适合于数据集中可能包含异常值的回归任务。
Huber 损失的缺点
1. 参数敏感性:Huber 损失的性能可能依赖于阈值参数 δ 的选择,调整这个参数可能是必要的。
2. 复杂性:引入阈值参数使得 Huber 损失比简单的损失函数如 MSE 或 MAE 略微复杂。
3. 潜在的偏差:δ 的选择可能会引入对特定类型误差的偏差,选择合适的 δ 可能需要领域知识。
4. 某些情况下不太受欢迎:在一些深度学习应用中,简单的损失函数如 MSE 或 MAE 可能就足够了,而增加 Huber 损失的复杂性可能不值得。
5. 可能无法解决所有问题:虽然 Huber 损失解决了一些 MSE 和 MAE 的问题,但它可能不是所有情况下的最佳选择,其他损失函数在特定任务中可能表现更好。
4. 二元交叉熵
也称为对数损失或逻辑损失。
这种损失非常适合用于将实例分类为两类(0 或 1)的任务。
▫️ 二元交叉熵损失的优缺点
二元交叉熵损失的优点
1. 自然适用于二元分类:二元交叉熵损失是专门为二元分类任务设计的,是适合两类问题的自然选择。
2. 鼓励概率校准:该损失鼓励模型输出校准后的概率,因为它通过预测概率的对数偏离真实标签来进行惩罚。
3. 对数性质:损失的对数性质强调纠正大的预测误差,使其在需要严重惩罚有信心的错误分类的情况下有效。
4. 与 Sigmoid 激活函数配合良好:二元交叉熵损失非常适合输出层使用 Sigmoid 激活函数的模型,将模型的原始输出映射到 0 到 1 之间的概率。
5. 广泛支持:它是深度学习框架中标准且广泛支持的损失函数,易于在各种架构中实现和使用。
二元交叉熵损失的缺点
1. 仅限于二元分类:它不适用于多类别分类任务。对于多于两类的问题,使用交叉熵损失的变体如多类别交叉熵。
2. 对类别不平衡敏感:在类别分布不平衡的情况下,其中一个类别的样本显著少于另一个类别,损失可能被多数类主导。可能需要使用类别权重或其他技术来解决这个问题。
3. 梯度消失:在训练过程中,如果模型的预测自信地不正确,损失的对数项的梯度可能会变得非常小,可能导致学习缓慢或收敛问题。
4. 对异常值敏感:异常值或错误标记的实例可能对损失产生显著影响,可能会不成比例地影响训练过程。可能需要使用稳健性技术。
5. 输出不直观:损失不能直接提供模型性能的直观度量。它主要用于训练,可能不如其他度量指标那样易于解释模型评估。
5. 多类别交叉熵
也称为交叉熵损失或 Softmax 损失,是深度学习中用于多类别分类问题的广泛使用的损失函数。
多类别交叉熵损失的公式。
6. 稀疏多类别交叉熵
是多类别交叉熵损失的一种变体,设计用于简化多类别分类任务中的标签表示。
稀疏多类别交叉熵的优缺点
稀疏分类交叉熵损失的优点
1. 标签表示的简化:稀疏分类交叉熵损失允许直接使用整数类别标签,消除了对 one-hot 编码的需求。这简化了数据表示,特别是在类别数量较多的情况下。
2. 内存效率高:与 one-hot 编码表示相比,它的内存效率更高,尤其是在处理大量类别时。
3. 与整数标签兼容:该损失设计为与整数类别标签无缝工作,使其在某些类型的分类任务中非常方便。
4. 广泛支持:它是深度学习框架中标准且广泛支持的损失函数,易于在各种架构中实现和使用。
5. 计算负担的减少:缺少 one-hot 编码减少了训练和推理过程中的计算负担,这在资源受限的环境中特别有利。
稀疏分类交叉熵损失的缺点
1. 假设互斥性:与分类交叉熵损失类似,稀疏分类交叉熵损失假设每个实例只属于一个类别。如果一个实例可以同时属于多个类别,其他损失函数可能更合适。
2. 可能需要额外的技术来处理不平衡:在类别分布不平衡的情况下,可能需要使用额外的技术(例如类别权重)来有效处理不平衡。
3. 不适合所有多标签任务:如果任务涉及实例可以同时属于多个类别(多标签分类),其他损失函数如二元交叉熵或 Softmax 损失可能更合适。
4. 输出不直观:损失本身可能无法提供模型性能的直观度量,可能需要额外的指标进行更全面的评估。
5. 并非所有架构的理想选择:虽然广泛使用,但稀疏分类交叉熵损失可能并非所有架构的理想选择,需要考虑特定任务的需求。
二元交叉熵(BCE)损失存在一些主要限制
▫️ BCE 损失的一个限制是它对两类的概率预测权重是相等的。
▫️ 在使用 BCE 处理不平衡数据集时会出现问题,因为大多数来自主导类的实例是“容易分类的”。
例如,考虑以下两个数据点:
- 少数类 → 真实标签(y)= 1;预测概率(ŷ)= 0.3
- 多数类 → 真实标签(y)= 0;预测概率(ŷ)= 0.7
两者具有相同的损失值 → -log(0.3)
但是在不平衡数据集中,来自多数类实例的损失值,例如 -log(0.3),应当(理想情况下)比来自少数类实例的相同损失值权重低。
但是由于 BCE 的对称性,它对两个类的权重是相等的。
Focal Loss 是一个非常方便和有用的替代方案来解决这个问题。
简而言之:
1)它减少了对有信心的预测的损失贡献。这被称为降权。
▫️ 通过使用降权和逆权重,模型逐渐学习到特定于难例的模式,而不是总是对容易实例的预测过于自信。
为了测试 Focal Loss 的效果,训练了两个神经网络,数据集的不平衡比为 90:10。
决策区域图和这两个模型的测试准确率如下所示。
很明显:
- 使用 BCE 损失训练的模型(上图)总是预测多数类。
- 使用 Focal Loss 训练的模型(下图)相对更多地关注少数类的模式,表现更好。
Focal Loss 及其在 机器学习 中的重要性:
^ 类别不平衡缓解
^ 处理噪声数据
^ 在密集目标检测中提高性能
^ 增强训练稳定性
提供一个可调参数,称为焦点参数。