当前位置: 首页 > article >正文

机器学习 - 常用的损失函数(交叉熵、Hinge)

损失函数是一个非负实数函数,用来量化模型预测和真实标签之间的差异.

上一篇文章介绍了2种常用的损失函数,下面介绍另外2种常用的损失函数.

一、Hinge 损失函数

Hinge 损失函数是一种常用于分类任务(尤其是支持向量机,SVM)的损失函数。它衡量的是分类模型的预测结果与真实标签之间的差异,并鼓励模型不仅做出正确的分类,还要有足够的置信度。Hinge 损失函数的定义如下:

对于一个样本 (x,y),假设:

  • x 是输入特征。
  • y∈{−1,+1}是真实标签(通常取二分类问题的标签为 −1 或 +1)。
  • y^=f(x)是模型预测的值。

Hinge 损失的公式为:

其中:

Hinge 损失的几何解释

  1. 分类边界与间隔

    • 支持向量机的目标是找到一个超平面,将数据集中的不同类别尽可能分开,同时最大化分类边界的间隔。
    • Hinge 损失不仅要求预测正确,还要求样本点距离超平面有一定的间隔(至少为 1)。这种间隔约束可以增强分类器的泛化能力。

Hinge 损失与其他损失函数的比较

总结

Hinge 损失函数的核心思想是通过惩罚分类错误和间隔不足的样本,提高分类器的泛化能力。它是支持向量机的理论基础,在二分类问题中表现优异。尽管它对异常值敏感,但其凸性和间隔最大化的特点使得它在实践中被广泛应用。

二、交叉熵损失函数

交叉熵损失函数(Cross-Entropy Loss)是分类问题中常用的损失函数,尤其是在神经网络和逻辑回归中表现优异。其核心思想是衡量模型预测的概率分布与真实类别分布之间的差异,通常用于多分类和二分类任务。

公式定义

交叉熵损失的直观理解

  1. 概率匹配

    • 交叉熵损失函数惩罚模型预测分布与真实分布之间的差异。
    • 如果模型将最大概率分配给正确类别:损失趋近于 0。
    • 如果模型错误地分配较高概率给错误类别,损失会增大。
  2. 信息论解释

    • 交叉熵来自信息论中的熵概念,表示预测分布对真实分布的编码效率。
    • 当预测分布与真实分布相同,交叉熵达到最小值。
    • 当预测分布远离真实分布,交叉熵增大,表示更多的信息需要传递来纠正预测。

交叉熵损失在二分类问题中的形式

对于二分类问题:

交叉熵损失在多分类问题中的形式

对于多分类问题(使用 softmax 激活函数):

交叉熵损失的优点和缺点

优点
  1. 概率解释
    • 交叉熵直接优化模型的概率输出,使其预测值可以解释为概率。
  2. 对错误分类敏感
    • 对错误分类的预测施加较大惩罚,能够快速修正分类错误。
  3. 广泛适用
    • 无论是二分类还是多分类任务,交叉熵损失都能很好地适配。
缺点
  1. 对异常值敏感
    • 如果真实标签或预测概率接近 0,可能导致梯度过大或损失值爆炸。
  2. 数值不稳定性
    • 当 y^很接近 0 或 1 时,log⁡(y^)可能导致数值计算不稳定。

总结

交叉熵损失函数通过衡量预测分布和真实分布之间的差异,在分类任务中表现出色。它以概率为核心优化目标,具有直观的统计和信息论解释。同时,交叉熵损失具有广泛的适用性,尤其在深度学习和逻辑回归等场景中是不可或缺的工具。


http://www.kler.cn/a/503927.html

相关文章:

  • RPC实现原理,怎么跟调用本地一样
  • 熵权法(变异系数法)
  • 探索学习 Python 的有效方式方法
  • Angular-生命周期及钩子函数
  • 20250112面试鸭特训营第20天
  • WPF 如何添加系统托盘
  • electron编写一个macOS风格的桌面应用
  • 硬件知识:显示器发展历程介绍
  • 算法题之反转字符串
  • 深入理解观察者模式 —— Qt信号槽机制的实现
  • 通过一个算法的设计来了解栈的一些应用
  • 【Audition】Audition如何在波形中插入静音且插入边缘不做平滑处理
  • 使用sqlplus的easy connect时如何指定是链接到shared server还是dedicated process
  • 【01】AE特效开发制作特技-Adobe After Effects-AE特效制作快速入门-制作飞机,子弹,爆炸特效以及导出png序列图-优雅草央千澈
  • 三相无刷电机控制|FOC理论04 - 克拉克变换 + 帕克变换的最终目标
  • ubuntu Android : adb logcat 过滤多个log
  • RAG 测评基线
  • git相关操作
  • Linux入门——权限
  • 学习笔记080——如何备份服务器中Docker创建的MySQL数据库数据?
  • [Linux] GDB 和 CGDB的使用及理解
  • 国产编辑器EverEdit - 打印与打印预览
  • 如何编写和运行 Lua 脚本优化复杂的 Redis 操作
  • 计算机视觉算法实战——视频分析(Video Analysis)
  • Linux 服务器挖矿木马防护实战:快速切断、清理与加固20250114
  • 【自然语言处理】P1 自然语言处理概述