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

server/2025/1/16 0:30:49/

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

上一篇文章介绍了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.ppmy.cn/server/158701.html

相关文章

springmvc的获取请求数据

在使用 SpringMVC 开发 web 应用时,我们经常需要从用户的请求中获取数据。不管是表单提交、查询参数,还是路径上的数据,SpringMVC 都为我们提供了简单而强大的方式来获取这些数据。 1. 使用 RequestParam 获取查询参数 基本使用&#xff1a…

基于Hiperwalk的量子行走Python编程

一、引言 1.1 研究背景与意义 在科技飞速发展的当下,量子计算已成为全球科研领域的焦点,被视为未来计算技术的革命性突破方向。随着对量子比特操控精度的提升、量子纠错码的发展以及量子算法的不断创新,量子计算正从理论研究逐步迈向实际应用阶段。从材料科学领域加速新型…

pytorch张量分块投影示例代码

张量的投影操作 背景 张量投影 是深度学习中常见的操作,将输入张量通过线性变换映射到另一个空间。例如: Y=W⋅X+b 其中: X: 输入张量(形状可能为 (B,M,K),即批量维度、序列维度、特征维度)。W: 权重矩阵((K,N),将 K 维投影到 N 维)。b: 偏置向量(可选,(N,))。Y:…

神经网络初始化 (init) 介绍

文章目录 引言1. 初始化的重要性1.1 打破对称性1.2 控制方差1.3 加速收敛与提高泛化能力 2. 常见的初始化方法及其应用场景2.1 Xavier/Glorot 初始化2.2 He 初始化2.3 正交初始化2.4 其他初始化方法 3. 如何设置初始化4. 基于 BERT 的文本分类如何进行初始化4.1 项目背景4.2 模…

分布式ID的实现方案

1. 什么是分布式ID ​ 对于低访问量的系统来说,无需对数据库进行分库分表,单库单表完全可以应对,但是随着系统访问量的上升,单表单库的访问压力逐渐增大,这时候就需要采用分库分表的方案,来缓解压力。 ​…

<C++学习> C++ Boost 字符串操作教程

C Boost 字符串操作教程 Boost 提供了一些实用的库来增强 C 的字符串操作能力,特别是 Boost.StringAlgo 和其他与字符串相关的工具。这些库为字符串处理提供了更高效、更简洁的方法,相比标准库功能更为丰富。 1. Boost.StringAlgo 简介 Boost.StringAl…

数据结构:栈(Stack)和队列(Queue)—面试题(二)

1. 用队列实现栈。 习题链接https://leetcode.cn/problems/implement-stack-using-queues/description/描述: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty&a…

JVM之垃圾回收器ZGC概述以及垃圾回收器总结的详细解析

ZGC ZGC 收集器是一个可伸缩的、低延迟的垃圾收集器,基于 Region 内存布局的,不设分代,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记压缩算法 在 CMS 和 G1 中都用到了写屏障,而 ZGC 用到了读屏障 染色指针&a…