【人工智能学习之常用损失函数浅谈】

【人工智能学习之常用损失函数浅谈】

  • Focal Loss
    • 基本概念
    • Focal Loss的定义
    • 作用
    • 应用场景
  • Arc Loss
    • 基本概念
    • ArcFace Loss的定义
    • 作用
    • 应用场景
  • CenterLoss
    • 基本概念
    • Center Loss 的定义
    • 作用
    • 应用场景
    • 实现细节
  • Cross Entropy Loss (CELoss)
    • 基本概念
    • 二分类任务
    • 多分类任务
    • 作用
    • 优点
    • 缺点
    • 应用场景

Focal Loss

Focal Loss是一种在目标检测中广泛使用的损失函数,特别是在处理类别不平衡的问题上表现优异。它最初是在2017年由Facebook AI Research提出,并在论文《Focal Loss for Dense Object Detection》中详细描述。Focal Loss是为了解决在密集物体检测任务中正负样本极度不平衡的问题而设计的。

基本概念

在传统的分类任务中,通常使用交叉熵损失(Cross-Entropy Loss)作为优化目标。然而,在某些场景下,比如当背景类别的数量远远多于前景类别时,模型可能会偏向于预测背景类别,因为这样可以更容易地最小化整体的损失值。这种情况下,即使模型对少数类别的识别率很低,整体的精度也可能非常高,这显然不是我们希望看到的结果。

Focal Loss的定义

Focal Loss是在标准交叉熵损失的基础上进行改进得到的,其公式如下:

F L ( p t ) = − α t ( 1 − p t ) γ log ⁡ ( p t ) \ FL(p_t) = -\alpha_t (1-p_t)^\gamma \log(p_t) \  FL(pt)=αt(1pt)γlog(pt) 

其中:

  • p t p_t pt是模型预测的概率,对于正样本 p t = p p_t = p pt=p,对于负样本 p t = 1 − p p_t = 1 - p pt=1p
  • α t \alpha_t αt 是平衡因子,用于调整正负样本之间的权重, α t \alpha_t αt对于正样本和负样本可以取不同的值。
  • γ \gamma γ 是聚焦参数,用于减少易分类样本的权重,从而使模型更加关注难以分类的样本。

作用

  1. 解决类别不平衡:通过引入 α t \alpha_t αt ( 1 − p t ) γ (1-p_t)^\gamma (1pt)γ这两项,Focal Loss能够有效减轻大多数容易分类的样本对总损失的影响,从而让模型更专注于那些难分类的样本,尤其是当正负样本比例极不平衡时。

  2. 提高模型性能:在处理具有大量背景区域的图像时,Focal Loss可以帮助模型更好地学习到目标对象的特征,进而提高检测精度。

  3. 加速训练过程:由于减少了简单案例的贡献,模型可以更快地收敛,尤其是在数据集非常大且类别不平衡严重的情况下。

应用场景

Focal Loss最开始是在目标检测领域被提出的,但是由于其良好的特性和灵活性,已经被广泛应用于其他领域的分类任务中,特别是那些存在显著类别不平衡问题的任务,如医学影像分析、异常检测等。

总之,Focal Loss是一个非常实用的技术,尤其适合处理类别分布极不均匀的数据集。通过调整 α \alpha α γ \gamma γ 的值,可以根据具体的应用场景来优化模型的表现。

Arc Loss

ArcFace Loss(或称为ArcLoss)是一种用于人脸识别任务中的损失函数,它通过在特征空间中增加类间距离和减小类内距离来提升模型的辨别能力。ArcFace Loss由 InsightFace 团队在2018年提出,并在论文《ArcFace: Additive Angular Margin Loss for Deep Face Recognition》中进行了详细介绍。与传统的Softmax损失相比,ArcFace Loss能够在特征学习阶段就显式地促进特征的判别性,从而在人脸识别任务中取得了更好的效果。

基本概念

在人脸识别任务中,模型的目标是从输入的面部图像中提取出一个高维特征向量,并根据这个特征向量来判断人脸的身份。为了实现这一目标,模型需要学习到能够区分不同个体的特征表示。传统的Softmax损失虽然也能在一定程度上实现这一目的,但它并没有显式地考虑如何最大化类间的差异和最小化类内的差异。

ArcFace Loss的定义

ArcFace Loss的核心思想是在特征向量与权重向量之间的夹角上加入一个额外的余弦角度边距(margin),从而显式地拉大不同类别的特征向量之间的角度差距。其数学表达式可以表示为:

L = − 1 N ∑ i = 1 N log ⁡ e s ( cos ⁡ ( θ y i + m ) ) e s ( cos ⁡ ( θ y i + m ) ) + ∑ j ≠ y i e s cos ⁡ ( θ j ) L = -\frac{1}{N} \sum_{i=1}^{N} \log \frac{e^{s(\cos(\theta_{y_i} + m))}}{e^{s(\cos(\theta_{y_i} + m))} + \sum_{j \neq y_i} e^{s \cos(\theta_j)}} L=N1i=1Nloges(cos(θyi+m))+j=yiescos(θj)es(cos(θyi+m))

其中:

  • N N N 是批次大小。
  • y i y_i yi 表示第 i i i 个样本的真实标签。
  • s s s 是缩放因子,用于放大特征向量的模长,增强模型的置信度。
  • m m m 是加性角度边距,用于增加正确类别与其他类别之间的角度差距。
  • θ j \theta_j θj 是特征向量与第 j j j 类别权重向量之间的夹角。

作用

  1. 增强判别力:通过在特征向量与权重向量之间增加一个固定的余弦角度边距,ArcFace Loss能够显式地拉大不同类别之间的特征向量的角度差距,从而增强模型的判别能力。

  2. 提高准确率:在多个基准数据集上的实验表明,使用ArcFace Loss训练的人脸识别模型相比于使用传统Softmax损失训练的模型,在识别准确率上有显著的提升。

  3. 鲁棒性:ArcFace Loss还提高了模型对噪声和遮挡的鲁棒性,使得模型在实际应用中更加可靠。

应用场景

ArcFace Loss最初是为了改善人脸识别任务而设计的,但其核心思想——通过显式地控制特征空间中的类间距离和类内距离来提升模型的判别能力——也可以应用于其他需要高度区分能力的视觉任务,例如行人重识别、车辆识别等。

总之,ArcFace Loss通过引入加性角度边距,提供了一种有效的手段来优化特征学习过程,特别适用于需要高度区分能力的任务。它不仅提升了模型的识别准确率,还增强了模型对复杂环境的适应能力。

CenterLoss

Center Loss 是一种用于深度学习模型中的损失函数,主要目的是通过最小化同一类样本的特征中心之间的距离,来提高模型的特征表示能力和分类性能。Center Loss 最初是由 Wen et al. 在 2016 年的论文《A Discriminative Feature Learning Approach for Deep Face Recognition》中提出,主要用于人脸识别任务,但其应用范围已经扩展到了其他需要强分类能力的任务中。

基本概念

在传统的分类任务中,常用的损失函数如 Softmax 损失主要关注于最大化不同类之间的差异,但对同一类内部的紧凑性关注较少。Center Loss 则通过显式地拉近同一类样本的特征表示,使同类样本在特征空间中更加聚集,从而提高模型的分类性能。

Center Loss 的定义

假设 ( x_i ) 是第 ( i ) 个样本的特征向量,( c_y ) 是该样本所属类别的特征中心。Center Loss 定义为所有样本与其对应类别中心的距离之和:
L c = 1 2 ∑ i = 1 N ∥ x i − c y i ∥ 2 L_c = \frac{1}{2} \sum_{i=1}^{N} \| x_i - c_{y_i} \|^2 Lc=21i=1Nxicyi2
其中:

  • N N N 是批次大小。
  • x i x_i xi 是第 ( i ) 个样本的特征向量。
  • c y i c_{y_i} cyi 是第 ( i ) 个样本所属类别的特征中心。
  • ∥ ⋅ ∥ \| \cdot \| 表示欧氏距离。

作用

  1. 增强类内紧凑性:通过最小化同一类样本之间的距离,Center Loss 使得同一类的样本在特征空间中更加聚集,从而提高了模型的特征表示能力。

  2. 提高分类性能:结合 Softmax 损失,Center Loss 可以同时优化类间距离和类内距离,使得模型在分类任务中表现更好。具体来说,Softmax 损失负责最大化不同类之间的差异,而 Center Loss 负责最小化同一类内部的差异。

  3. 鲁棒性:通过增强类内紧凑性,Center Loss 提高了模型对噪声和变异的鲁棒性,使得模型在实际应用中更加稳定。

应用场景

  1. 人脸识别:Center Loss 最初就是为了解决人脸识别任务中的类内变化问题而设计的。通过使同一人的不同面部图像在特征空间中更加接近,Center Loss 显著提高了人脸识别的准确率。

  2. 图像分类:在一般的图像分类任务中,Center Loss 也可以通过增强类内紧凑性和类间分离性来提高分类性能。

  3. 行人重识别:在行人重识别任务中,Center Loss 可以帮助模型更好地学习到行人的独特特征,从而提高识别的准确性。

实现细节

在训练过程中,Center Loss 需要维护每个类别的特征中心。这些特征中心可以通过以下方式更新:
c y = ∑ i = 1 N x i 1 [ y i = y ] ∑ i = 1 N 1 [ y i = y ] c_y = \frac{\sum_{i=1}^{N} x_i \mathbb{1}_{[y_i = y]}}{\sum_{i=1}^{N} \mathbb{1}_{[y_i = y]}} cy=i=1N1[yi=y]i=1Nxi1[yi=y]
其中:
1 [ y i = y ] \mathbb{1}_{[y_i = y]} 1[yi=y]是指示函数,当 y i = y y_i = y yi=y 时为 1,否则为 0。

为了防止过拟合,通常会将 Center Loss 与 Softmax 损失联合使用,并通过一个超参数 λ \lambda λ 来平衡两者的重要性:

L = L s + λ L c L = L_s + \lambda L_c L=Ls+λLc

在这里插入图片描述

其中:

  • L s L_s Ls 是 Softmax 损失。
  • L c L_c Lc 是 Center Loss。
  • λ \lambda λ 是平衡因子,用于调整两种损失的相对重要性。

总之,Center Loss 通过显式地优化类内紧凑性,提高了模型的特征表示能力和分类性能,特别适用于需要强分类能力的任务。

Cross Entropy Loss (CELoss)

Cross Entropy Loss(交叉熵损失,简称CELoss)是机器学习和深度学习中常用的一种损失函数,主要用于分类任务,尤其是多分类任务。交叉熵损失能够衡量模型预测的概率分布与真实标签概率分布之间的差异,通过最小化这种差异来优化模型的参数。

基本概念

在分类任务中,模型通常会输出一个概率分布,表示各个类别的预测概率。例如,对于一个三分类任务,模型可能输出 [0.7, 0.2, 0.1],表示第一个类别的概率为0.7,第二个类别的概率为0.2,第三个类别的概率为0.1。真实标签通常是一个 one-hot 编码的向量,例如 [1, 0, 0] 表示第一个类别是正确的类别。

二分类任务

对于二分类任务,交叉熵损失的公式为:

CE ( p , q ) = − [ y log ⁡ ( p ) + ( 1 − y ) log ⁡ ( 1 − p ) ] \text{CE}(p, q) = -[y \log(p) + (1 - y) \log(1 - p)] CE(p,q)=[ylog(p)+(1y)log(1p)]

其中:

  • p p p 是模型预测的正类概率。
  • y y y 是真实标签(0 或 1)。

多分类任务

对于多分类任务,交叉熵损失的公式为:

CE ( p , q ) = − ∑ i = 1 C y i log ⁡ ( p i ) \text{CE}(p, q) = -\sum_{i=1}^{C} y_i \log(p_i) CE(p,q)=i=1Cyilog(pi)

其中:

  • C C C 是类别数。
  • p i p_i pi 是模型预测的第 ( i ) 个类别的概率。
  • y i y_i yi 是第 ( i ) 个类别的真实标签(one-hot 编码,0 或 1)。

作用

  1. 衡量预测与真实标签的差异:交叉熵损失通过计算预测概率分布与真实标签概率分布之间的差异,提供了模型预测质量的一个量化指标。损失值越小,表示模型的预测越接近真实标签。

  2. 优化模型参数:在训练过程中,通过梯度下降等优化算法最小化交叉熵损失,可以有效地调整模型的参数,使其预测更加准确。

  3. 处理多分类任务:交叉熵损失特别适合多分类任务,因为它能够同时处理多个类别的预测概率,而不仅仅是二分类任务。

优点

  1. 数学性质良好:交叉熵损失具有良好的数学性质,如凸性,这使得优化过程更加稳定和高效。

  2. 易于计算和实现:交叉熵损失的计算相对简单,且在大多数深度学习框架中都有内置的实现。

  3. 避免梯度消失:在使用sigmoid或softmax激活函数时,交叉熵损失可以有效避免梯度消失问题,尤其是在深度网络中。

缺点

  1. 对异常值敏感:交叉熵损失对异常值比较敏感,如果模型的预测概率与真实标签相差很大,损失值会变得非常大,可能导致训练不稳定。

  2. 需要归一化:在多分类任务中,模型的输出通常需要经过softmax函数归一化为概率分布,这增加了计算的复杂性。

应用场景

  1. 图像分类:在图像分类任务中,交叉熵损失常用于训练卷积神经网络(CNN),以识别图像中的物体类别。

  2. 自然语言处理:在文本分类、情感分析等自然语言处理任务中,交叉熵损失也广泛使用。

  3. 医疗诊断:在医疗图像诊断、疾病分类等任务中,交叉熵损失可以帮助模型更准确地识别不同的疾病类型。

总之,交叉熵损失是一种非常强大且灵活的损失函数,特别适用于分类任务。通过最小化交叉熵损失,可以有效地优化模型的参数,提高模型的分类性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/431795.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle avg、count、max、min、sum、having、any、all、nvl的用法

组函数 having的使用 any的使用 all的使用 nvl 从执行结果来看,nvl(列名,默认值),nvl的作用就是如果列名所在的这一行出现空则用默认值替换

D. Determine Winning Islands in Race (cf div2,dp、图论最短路)

D. Determine Winning Islands in Race 思路: bfs找到E到达每个点的最短时间t[i]。 如果E要超过B&#xff0c;那么一定要借助辅助桥&#xff0c;从而获胜。 假设有u->v的辅助桥&#xff0c;E能通过这个桥超过B的条件是: s>u 且 t[v] < v-s 即 s的取值要为[u1,v-t[v]-…

每天分享一个FPGA开源代码(6)- 浮点数运算

FPGA&#xff08;现场可编程门阵列&#xff09;是一种高度可配置的集成电路&#xff0c;它可以用于实现各种数字信号处理任务&#xff0c;包括浮点数运算。 在FPGA上进行浮点数运算通常涉及以下几个步骤&#xff1a; 1. 选择浮点数格式 浮点数运算首先要确定使用哪种浮点数格…

第二十八篇——用间篇:使用间谍,先学习花钱的价值观

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 间谍的本质&#xff0c;任何策略没有好坏没有道德&#xff0c;它是平衡路…

【大模型】AutoDL部署AI绘图大模型Stable Diffusion使用详解

目录 一、前言 二、AI绘图大模型概述 2.1 AI绘图大模型介绍 2.2 AI绘图大模型特点 2.3 AI绘图大模型优势 三、主流的AI绘图大模型介绍 3.1 Midjourney 3.1.1 Midjourney介绍 3.1.2 Midjourney功能特点 3.1.3 Midjourney使用场景 3.2 Stable Diffusion 3.2.1 Stable …

Unity中的功能解释(数学位置相关和事件)

向量计算 Vector3.Slerp&#xff08;起点坐标&#xff0c;终点坐标&#xff0c;t&#xff09;&#xff0c;可是从起点坐标以一个圆形轨迹到终点坐标&#xff0c;有那么多条轨迹&#xff0c;那怎么办 Vector3.Slerp 进行的是沿球面插值&#xff0c;因此并不是沿着严格的“圆形…

【LeetCode】146. LRU缓存

1.题目 2.思想 3.代码 3.1 代码1 下面这是一版错误的代码。错误的原因在于逻辑不正确导致最后的代码也是不正确的。 class LRUCache:def __init__(self, capacity: int):self.time 0 # 用于全局记录访问的时间self.num2time {} # 数字到时间的映射self.key2val {} # 数字…

大数据新视界 --大数据大厂之HBase 在大数据存储中的应用与表结构设计

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

.net core集成Minio,构建一个文件存储的基础设施

背景 先简单介绍下MinIO吧&#xff0c;官方给的介绍是它是一种高性能、S3 兼容的对象存储。它专为大规模 AI/ML、数据湖和数据库工作负载而构建&#xff0c;并且它是由软件定义的存储。不需要购买任何专有硬件&#xff0c;就可以在云上和普通硬件上拥有分布式对象存储。 MinI…

【动态规划-多重背包】【hard】力扣2585. 获得分数的方法数

考试中有 n 种类型的题目。给你一个整数 target 和一个下标从 0 开始的二维整数数组 types &#xff0c;其中 types[i] [counti, marksi] 表示第 i 种类型的题目有 counti 道&#xff0c;每道题目对应 marksi 分。 返回你在考试中恰好得到 target 分的方法数。由于答案可能很…

【线程】POSIX信号量---基于环形队列的生产消费者模型

信号量概念 这篇文章是以前写的&#xff0c;里面讲了 System V的信号量的概念&#xff0c;POSIX信号量和SystemV信号量作用相同&#xff0c;都是用于同步操作&#xff0c;达到无冲突的访问共享资源目的。 但POSIX可以用于线程间同步。 信号量的概念 POSIX信号量的接口 初始化…

基于yolov8的红外小目标无人机飞鸟检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的红外小目标无人机与飞鸟检测系统是一项集成了前沿技术的创新解决方案。该系统利用YOLOv8深度学习模型的强大目标检测能力&#xff0c;结合红外成像技术&#xff0c;实现了对小型无人机和飞鸟等低空飞行目标的快速、准确检测。 YOLOv8作为YOLO系列的…

光伏开发:一分钟生成光伏项目报告

传统光伏项目报告的编制往往需要收集大量数据、进行复杂计算与分析&#xff0c;耗时长且易受人为因素影响。自动生成光伏项目报告&#xff0c;依托大数据、云计算、人工智能等先进信息技术&#xff0c;实现了对光伏项目关键参数的快速分析、评估与预测。 一、核心功能与流程 1…

进程间通信 (一)【管道通信(上)】

目录 1. 概况2. 管道通信的原理2.1 初步理解2.2 深入理解 1. 概况 是什么&#xff1a;两个及以上的进程实现数据层面的交互&#xff0c;称为进程间的通信。 因为进程独立性的存在&#xff0c;所以一个进程无法直接访问另一个进程的数据&#xff0c;即便是父子进程&#xff0c;子…

使用 KuboardSpray 安装kubernetes_v1.23.1

ps:亲测有效,十分方便,记录下来 pps:下面文档来自官网 使用 KuboardSpray 安装kubernetes_v1.23.1 #Kuboard-Spray Kuboard-Spray 是一款可以在图形界面引导下完成 Kubernetes 高可用集群离线安装的工具&#xff0c;开源仓库的地址为 Kuboard-Spray (opens new window) 安…

git push出错Push cannot contain secrets

报错原因&#xff1a; 因为你的代码里面包含了github token明文信息&#xff0c;github担心你的token会泄漏&#xff0c;所以就不允许你推送这些内容。 解决办法&#xff1a; 需要先把代码里面的github token信息删除掉&#xff0c;并且删掉之前的历史提交&#xff0c;只要包…

【深海王国】初中生也能画的电路板?目录合集

Hi٩(๑ ^ o ^ ๑)۶, 各位深海王国的同志们&#xff0c;早上下午晚上凌晨好呀~辛勤工作的你今天也辛苦啦 (o゜▽゜)o☆ 今天大都督为大家带来系列文章《初中生也能画的电路板》&#xff0c;帮你一周内快速入门PCB设计&#xff0c;手把手教你从元器件库添加、电路原理图绘制、…

go 运行报错missing go.sum entry for module providing package

运行&#xff1a; #清理go.mod中不再需要的模块&#xff0c;并且会添加缺失的模块条目到go.sum中 go mod tidy

前端vue-实现富文本组件

1.使用wangeditor富文本编辑器 工具网站&#xff1a;https://www.wangeditor.com/v4/ 下载安装命令&#xff1a;npm i wangeditor --save 成品如下图&#xff1a; 组件实现代码 <template><div><!-- 富文本编辑器 --><div id"wangeditor">…

《热血江湖》v23巅峰对决游戏程序(真端+最新官方版本)

《热血江湖》v23巅峰对决游戏程序&#xff08;真端最新官方版本&#xff09; 下载地址&#xff1a; 通过网盘分享的文件&#xff1a;【游戏】《热血江湖》v23巅峰对决游戏程序&#xff08;真端最新官方版本&#xff09; 链接: https://pan.baidu.com/s/18svlGuFnPM9ccwEAb7oBMw…