损失函数(Loss Function)

损失函数的选择是深度学习中的一个关键决策,它影响优化过程、模型行为、稳健性和整体性能。

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 损失,是深度学习中用于多类别分类问题的广泛使用的损失函数。

多类别交叉熵损失的公式。

多类别交叉熵的优缺点分类交叉熵损失的优点
 1. 自然适用于多类别分类:分类交叉熵损失非常适合于多于两类的任务,为处理多类别分类问题提供了一种自然且有效的方法。
 2. 处理类别不平衡:它通过惩罚所有类别的真实类别概率的偏差,自然地处理了类别分布不平衡的场景。
 3. Softmax 激活兼容性:分类交叉熵损失与输出层使用的 Softmax 激活函数配合良好,将原始分数转换为概率分布。
 4. 广泛支持:它是深度学习框架中标准且广泛支持的损失函数,易于在各种架构中实现和使用。
 5. 鼓励概率校准:该损失鼓励模型为每个类别输出校准的概率,使其适用于需要获得准确类别概率的应用场景。

分类交叉熵损失的缺点
 1. 假设独立性:损失假设类别是相互排斥且独立的。如果一个实例可以同时属于多个类别,则可能需要使用二元交叉熵或 Softmax 损失等替代损失函数。
 2. 对误标敏感:实例的误标,尤其是在存在噪声数据的情况下,可能会影响分类交叉熵损失的性能。数据预处理和清洗至关重要。
 3. 输出不直观:与二元交叉熵损失类似,损失本身可能无法提供模型性能的直观度量。可能需要额外的评估指标来进行更全面的评估。
 4. 计算量大:计算损失涉及对每个实例的所有类别进行求和,在处理大量类别时,计算量可能会很大。
 5. 需要 One-Hot 编码:真实标签通常表示为 one-hot 编码向量,这可能会增加内存需求和计算负担,尤其是在类别较多的情况下。


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 及其在 机器学习 中的重要性:

^ 类别不平衡缓解
^ 处理噪声数据
^ 在密集目标检测中提高性能
^ 增强训练稳定性

提供一个可调参数,称为焦点参数。



相关推荐

  • 2个月暴增10k star,新一代高颜值、现代化的 Git 可视化工具
  • 最有用的25个 Matplotlib图(含Python代码模板)
  • 吴恩达团队新作!
  • Python 面试时千万别这样命名函数,因为这个被淘汰可太不值了
  • 阿里这款多级缓存框架一定要掌握,非常不错!
  • AI替代职业,最高和最低Top25
  • 一文带你了解 Chrome AI
  • 苹果开源7B大模型,训练过程数据集一口气全给了,网友:开放得不像苹果
  • 当小说续写结合AI RPG,AI陪伴的新玩法现状如何?|专访彩云小梦
  • 快手可灵团队最新开源项目火了:大叔实时变身少女,GitHub狂揽7.5K星
  • 英特尔CPU疯狂崩溃,测评大佬揭露工艺缺陷,官方回应:修复补丁下月上线
  • 马斯克狂揽10万块H100,自建世界最强AI超算,下一代模型训练开始
  • 几何朗兰兹猜想被解决!历时30年、证明论文达800余页,中国学者陈麟系主要作者
  • 轻松、有趣的掌握梯度下降!
  • “所有为政府开发的软件,都必须开源!”瑞士新规引争议:里程碑 or 鸡肋?
  • 智能进化:具身智能系统基础模型的技术路线 | 新程序员
  • 不装了!4 年推迟两次后,谷歌摊牌:我们不会弃用第三方 Cookie
  • 超越传统续写模式:AI编程距离智能研发终态还有多远?
  • 首轮嘉宾阵容公布,GOTC 2024即将开启!
  • 我用十条优化措施,将Redis费用降本46万/月