Focal Loss

Focal Loss

  • Kullback-Leibler Divergence(相对熵)
  • NLL Loss
  • Cross Entropy Loss
  • Balanced Cross Entropy Loss
  • Focal Loss
  • 应用场景:
      • 1、车道检测与分类

Kullback-Leibler Divergence(相对熵)

KL散度(Kullback-Leibler Divergence,也称相对熵)用来衡量两个分布之间的偏差,其可以用下面数学公式描述:
D K L ( p ( x ) , q ( x ) ) = ∑ i N p i ( x ) l o g ( p i ( x ) q i ( x ) ) = ∑ i N p i ( x ) l o g p i ( x ) − p i ( x ) l o g q i ( x ) = − H ( p ) + H ( p , q ) \begin{align} D_{KL}(p(x),q(x)) &= \sum_i^N p_i(x) \mathrm{log} \left(\frac{p_i(x)}{q_i(x)}\right)\\ &=\sum_i^N p_i(x) \mathrm{log}{p_i(x)}-p_i(x) \mathrm{log}{q_i(x)}\\ &= -H(p)+H(p,q) \end{align} DKL(p(x),q(x))=iNpi(x)log(qi(x)pi(x))=iNpi(x)logpi(x)pi(x)logqi(x)=H(p)+H(p,q)

NLL Loss

Cross Entropy Loss

上面公式中的 C E ( p , q ) CE(p,q) CE(p,q) 即为交叉熵 (Cross-Entropy) 函数,通常在机器学习中, p ( x ) p(x) p(x) 表示为目标分布(可以理解为label), q ( x ) q(x) q(x) 表示模型输出分布(可以理解为prediction),监督学习的目标是尽可能使得 q ( x ) q(x) q(x) 接近 p ( x ) p(x) p(x) 从而达到最佳性能,即 q ( x ) q(x) q(x) p ( x ) p(x) p(x) 偏差越大,KL散度值越大,当两者分布相等时,KL散度为零,同时目标分布确定时 p ( x ) p(x) p(x) 分布的熵 H ( p ) H(p) H(p) 也是确定的,因此通过KL散度进行优化等价于通过交叉熵进行优化。
C E _ l o s s ( p , q ) = − ∑ i N p i ( x ) l o g q i ( x ) CE\_loss(p,q)=- \sum_i^N p_i(x) \mathrm{log}{q_i(x)} CE_loss(p,q)=iNpi(x)logqi(x)

如何计算交叉熵?

以二分类为例:这里有1个样本, y y y表示真实值, y ^ \hat{y} y^表示预测为1的概率值,

y y y y ^ \hat{y} y^
sample 100.1

C E l o s s = − ( 0 ∗ l o g ( 1 − 0.1 ) + 1 ∗ l o g ( 0.1 ) ) = 2.3025 \begin{align} CE_{loss} &= -\left(0*\mathrm{log}(1-0.1) +1*\mathrm{log}(0.1) \right)\\ &= 2.3025 \end{align} CEloss=(0log(10.1)+1log(0.1))=2.3025
使用代码验证如下:

import torch
import math
print(-(0*math.log(0.9)+1*math.log(0.1)))BCE_loss = torch.nn.BCELoss()
target = torch.tensor([0]).float()
output = torch.tensor([0.9]).float()
print(BCE_loss(output, target))

同理,接入对于一个三分类(多分类)任务,一个样本的预测值为 ( 0.1 , 0.3 , 0.6 ) (0.1, 0.3,0.6) (0.1,0.3,0.6),其对应的 gt 为 (0, 0, 1),则其交叉熵损失为: − ( l o g ( 1 − 0.1 ) + l o g ( 1 − 0.3 ) + l o g ( 0.6 ) ) -(log(1-0.1)+log(1-0.3)+log(0.6)) (log(10.1)+log(10.3)+log(0.6)),但torch.nn.CrossEntropyLoss()的计算方式略显不同(它是 softmax+log+NLLLoss的合体)。

Balanced Cross Entropy Loss

在多类别数据中,如果某类别之间分布不均衡,直接训练会导致模型过多关注样本比例较多的类别,而在样本比例较少的类别上分类性能不足,因此Balanced Cross Entropy Loss提出是为了缓解这个问题,其根据每个类别在数据中的分布比例进行加权,数学表达式如下:
B a l n a c e d C E _ l o s s ( p , q ) = − ∑ i N α i p i ( x ) l o g q i ( x ) BalnacedCE\_loss(p,q)=-\sum_i^N \alpha_i p_i(x) \mathrm{log}{q_i(x)} BalnacedCE_loss(p,q)=iNαipi(x)logqi(x)

Focal Loss

尽管引入Balanced Cross Entropy Loss缓解了类别分布不均衡的问题,但模型对每种类别的分类能力往往是不同的,因此训练模型的时候就需要模型重点关注难分样本的特征,其数学表达式为:
F o c a l _ l o s s ( p , q ) = − ∑ i N α i ( 1 − p i ( x ) ) γ l o g q i ( x ) Focal\_loss(p,q)=-\sum_i^N \alpha_i(1- p_i(x))^{\gamma} \mathrm{log}{q_i(x)} Focal_loss(p,q)=iNαi(1pi(x))γlogqi(x)
其中 α i \alpha_i αi 是类别均衡系数, γ > 0 \gamma>0 γ>0,从公式中可以看到,当 p i ( x ) ⟶ 1 p_i(x) \longrightarrow 1 pi(x)1 表明该样本被分类正确的概率越大,易区分样本,则其对应的loss所占的权重更低,反之则是难分类样本其loss权重更大。

应用场景:

1、车道检测与分类

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

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

相关文章

python自动化办公实例(使用openpyxl、os处理统计Excel表中的数据并将其合并)

源数据格式 以其中一个表格为例 可以看到表中数据比较杂乱且并没有我们想要的数据、指标(如一等奖、二等奖的数量)不利于下一步数据的分析。所以我们需要手动对数据进行一些处理,大致格式如下: 数据处理格式 这里的手动处理可以…

图像的空域处理实验作业

# 在绘图中显示中文字体,而非乱码 from pylab import mpl mpl.rcParams["font.sans-serif"] ["SimHei"]import cv2 import matplotlib.pyplot as plt import numpy as np1 绘制伽马变换的函数图像,并导入一张图像,对其进…

基础算法(6)——模拟

1. 替换所有的问号 题目描述: 算法思路: 从前往后遍历整个字符串,找到问号之后,尝试用 a ~ z 的每一个字符替换即可 注意点:需考虑数组开头和结尾是问号的边界情况 代码实现: class Solution {public …

《深度学习》OpenCV FisherFaces算法人脸识别 原理及案例解析

目录 一、FisherFaces算法 1、什么是FisherFaces算法 2、原理 3、特点 4、算法步骤 1)数据预处理 2)特征提取 3)LDA降维 4)特征投影 5)人脸识别 二、案例解析 1、完整代码 运行结果: 一、Fish…

Java 深度优先搜索

深度优先搜索(Depth-First Search, DFS)是一种用于遍历或搜索树或图的算法。在Java中,可以使用递归或迭代的方法来实现DFS。下面我将分别介绍这两种实现方式。 递归实现 递归实现通常更为直观和简洁。在递归方法中,我们会使用一…

[Java基础] 流程控制

[Java基础] 运算符 [Java基础] 基本数据类型 [Java基础] Java HashMap 的数据结构和底层原理 目录 基本语法 条件语句 if 语句 if-else 语句 switch 语句 循环语句 for 循环 while 循环 do-while 循环 跳转语句 break 语句 continue 语句 return 语句 最佳实践…

嵌入式基础 -- SDIO协议

SDIO 硬件、协议与 Linux 驱动技术文档 1. SDIO 简介 SDIO(Secure Digital Input Output)协议是SD存储卡的物理接口扩展,允许通过SD总线连接和控制各种I/O设备,如Wi-Fi、蓝牙、GPS模块等。SDIO协议在标准的SD协议基础上扩展&…

【题解】【记忆化递归】——Function

【题解】【记忆化递归】——Function Function题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示数据规模与约定 1.思路解析2.AC代码 Function 通往洛谷的传送门 题目描述 对于一个递归函数 w ( a , b , c ) w(a,b,c) w(a,b,c) 如果 a ≤ 0 a \le 0 a≤0 或 b ≤…

大厂面试真题-具体说说jdk1.7和1.8的hashmap的线程不安全都有什么问题

HashMap在JDK 1.7和JDK 1.8中都存在线程不安全的问题,但具体表现和解决方式有所不同。以下是对这两个版本中HashMap线程不安全问题的详细分析: JDK 1.7 HashMap的线程不安全问题 在JDK 1.7中,HashMap的线程不安全问题主要体现在扩容过程中。…

阿里Dataworks使用循环节点和赋值节点完成对mongodb分表数据同步

背景 需求将MongoDB数据入仓MaxCompute 环境说明 MongoDB 100个Collections:orders_1、orders_2、…、orders_100 前期准备 1、MongoDB数据源配置 需要先保证DW和MongoDB网络是能够联通的,需要现在集成任务中配置MongoDB的数据源信息。 具体可以查…

项目分析:自然语言处理(语言情感分析)

在这个信息爆炸的时代,我们每天都在与海量的文本数据打交道。从社交媒体上的帖子、在线评论到新闻报道,文本信息无处不在。然而,这些文本不仅仅是文字的堆砌,它们背后蕴含着丰富的情感和观点。如何有效地理解和分析这些情感&#…

【AI知识点】对比学习(Contrastive Learning)

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】 对比学习(Contrastive Learning) 是一种基于样本之间相似性和差异性的无监督或自监督学习方法,旨在通过构建正例和负例对来学习数据的有效表示。对比学习广泛应用于自然语言处理&#…

Linux下的防病毒软件(Antivirus software for Linux)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

FFmpeg的简单使用【Windows】--- 指定视频的时长

目录 功能描述 效果展示 代码实现 前端代码 后端代码 routers 》users.js routers 》 index.js app.js 功能描述 此案例是在上一个案例【FFmpeg的简单使用【Windows】--- 视频混剪添加背景音乐-CSDN博客】的基础上的进一步完善,可以先去看上一个案例然后再…

docker环境安装mongoDB实现平滑迁移实战

docker环境安装mongoDB实现平滑迁移实战 一、备份原始数据(从别的服务器备份到当前服务器)二、数据迁移三、迁移过程日志打印四、验证迁移数据准确性 一、备份原始数据(从别的服务器备份到当前服务器) 使用mongodump工具对原始mo…

Redisson使用全解

redisson使用全解——redisson官方文档注释(上篇)_redisson官网中文-CSDN博客 redisson使用全解——redisson官方文档注释(中篇)-CSDN博客 redisson使用全解——redisson官方文档注释(下篇)_redisson官网…

Java发送请求实现QPS限制

业务场景 在开发中,当有业务需求需要调用第三方服务实现功能,但是服务接口有QPS限制,所以我们需要在发送请求时限制发送频率防止请求失败。 实现方法 使用 Java Semaphore 类来实现控制请求QPS QPS限制 Component public class QPSControll…

洛谷P1484.种树

洛谷P1484.种树 题目解析及思路 题目要求在一条n个坑的路上,对于已知每个坑种树的收益,并且相邻两个坑不能同时种树的情况下,求最大收益 思考一个小范围的例子(不考虑数组全负数): 当m 1时,答案一定为数组中的最大…

MySQL 8.4修改user的host属性值

MySQL 8.4修改user的host属性值 update mysql.user set host localhost where user mysql用户名; MySQL 8.4修改初始化后的默认密码-CSDN博客文章浏览阅读804次,点赞6次,收藏11次。先下载mysql的zip压缩包:MySQL :: Download MySQL Communi…

贪心day1

文章目录 前言雪糕的最大数量重新分装苹果装满石头的背包的最大数量K 次取反后最大化的数组和不同整数的最少数目 前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫文章题目大多来自于 leetcode,当然也可能来自洛…