Multi Label Classification with Missing Labels(MLML)的几种loss设计

news2025/4/5 10:27:00

多标签学习这个方向问题比较多,可以参考多标签学习的新趋势(2021 Survey TPAMI) 和 部分标签学习和缺失标签学习到底什么异同? 这两篇偏综述性质的解释。本文重点解释下面几个重点问题:

Multi Label Classification with Missing Labels(MLML)和Partial Multi-Label Learning(PML)的区别

  • MLML重点在Missing Labels,一张图标注员一般只打标少量实体,大量的实体miss掉了,产生了大量的False Negative cases。
  • PML重点在很多信息不明确,很难标。例如下面图,诸如Tree、Lavender这些标签相对是比较简单的。但是有些标签到底有没有,是比较难以确定的,对于某些标注者,可能出现:“这张图片看起来是在法国拍的,好像也可能是意大利?”,这种情况称之为Ambiguous。PML希望把所有的ambiguous都标出来,所以PML选择的是让标注者提供所有可能的标签,当然加了一个较强的假设:所有的标签都应该被包含在候选标签集中
    在这里插入图片描述

MLML的loss设计

刚提到MLML的问题在于大量正例标签miss掉了,有不少False Positive,从loss推导角度来分析下这个问题

Preliminary

MLML问题一般理解为针对每一个label进行one-vs.-rest的二分类:

  • 对于多分类,假设存在n类,那么对于每个样本经过神经网络会出n个logits,这n个logits过softmax得到和为1的值再过NLL的loss,就是CrossEntropy,详细可以参考信息熵 条件熵 交叉熵 联合熵 相对熵 KL散度 SCE MAE 互信息(信息增益)里的推导,所以 C E ( P , Q ) = − ∑ i ∈ [ 0 , n − 1 ] p i l o g q i CE(P,Q)=-\sum_{i \in [0,n-1]}p_ilogq_i CE(P,Q)=i[0,n1]pilogqi,一般 p i p_i pi是label, q i q_i qi是经过softmax后的结果。

  • 对于二分类,对于每个样本经过神经网络可以只出一个logit,那么这个logit只过sigmoid得到p就可以了,都没softmax啥事。但算CE loss需要另外一个logit归一化的结果,也就是1-p,也需要另外一个label就是1-y。所以到二分类里 C E ( P , Q ) = − ∑ i ∈ [ 0 , 1 ] p i l o g q i = − y l o g p − ( 1 − y ) l o g ( 1 − p ) CE(P,Q)=-\sum_{i \in [0,1]}p_ilogq_i=-ylogp-(1-y)log(1-p) CE(P,Q)=i[0,1]pilogqi=ylogp(1y)log(1p),y是label,p是经过sigmoid后的结果。

在Simple and Robust Loss Design for Multi-Label Learning with Missing Labels一文中,Loss被一般化地定义为下面表达式,值得注意的是K是表示有K个二分类,而不是K=2, y i y_i yi的取值是0或者1
L = − ∑ i = 1 K ( y i L i + + ( 1 − y i ) L i − ) L= -\sum_{i=1}^K(y_iL_i^++(1-y_i)L_i^-) L=i=1K(yiLi++(1yi)Li)
如果是BCE就是下面表达式, p i p_i pi表示的是第i个二分类经过sigmoid后只出了一个值 p i = σ ( x i ) = 1 1 + e − x i p_i=\sigma(x_i)=\frac{1}{1+e^{-x_i}} pi=σ(xi)=1+exi1,其中 x i x_i xi就是经过神经网络后第i个二分类只出了一个值
L = − ∑ i = 1 K ( y i L i + + ( 1 − y i ) L i − ) L i + = l o g p i L i − = l o g ( 1 − p i ) L= -\sum_{i=1}^K(y_iL_i^++(1-y_i)L_i^-) \\ L_i^+=logp_i \\ L_i^-=log(1-p_i) L=i=1K(yiLi++(1yi)Li)Li+=logpiLi=log(1pi)
有了这个表达式可以推导一下导数结果,因为 σ ′ ( x i ) = σ ( x i ) ( 1 − σ ( x i ) ) = p i ∗ ( 1 − p i ) \sigma^{'}(x_i)=\sigma(x_i)(1-\sigma(x_i))=p_i*(1-p_i) σ(xi)=σ(xi)(1σ(xi))=pi(1pi)
∂ L i − ∂ x i = 1 p i − 1 ∗ p i ∗ ( 1 − p i ) = − p i \frac{\partial L_i^-}{\partial x_i} = \frac{1}{p_i-1}*p_i*(1-p_i)=-p_i xiLi=pi11pi(1pi)=pi
所以Simple and Robust Loss Design for Multi-Label Learning with Missing Labels一文中Fig 3对应的BCE是一条直线,注意横轴是p,纵轴是 − ∂ L i − ∂ x i -\frac{\partial L_i^-}{\partial x_i} xiLi
在这里插入图片描述

如果是Focal Loss就是下面表达式, γ \gamma γ is a focus parameter, and α + \alpha_+ α+ and α − \alpha_- α are utilized to balance positives and negative
L = − ∑ i = 1 K ( y i L i + + ( 1 − y i ) L i − ) L i + = α + ( 1 − p i ) γ l o g p i L i − = α − p i γ l o g ( 1 − p i ) L= -\sum_{i=1}^K(y_iL_i^++(1-y_i)L_i^-) \\ L_i^+=\alpha_+(1-p_i)^\gamma logp_i \\ L_i^-=\alpha_-p_i^\gamma log(1-p_i) L=i=1K(yiLi++(1yi)Li)Li+=α+(1pi)γlogpiLi=αpiγlog(1pi)

ASL(Asymmetric Loss For Multi-Label Classification)

ASL Loss是一种对Focal Loss的修正,其中 p m = m a x ( p − m , 0 ) p_m=max(p-m,0) pm=max(pm,0), The
probability margin m ≥ 0 is a tunable hyper-parameter。 The ASL loss reduces the weight of easy negatives via using γ + < γ − \gamma+<\gamma- γ+<γ, and discards negatives with low predicted probability via
the m shifted probability
L = − ∑ i = 1 K ( y i L i + + ( 1 − y i ) L i − ) L i + = ( 1 − p m ) γ + l o g p m L i − = p m γ − l o g ( 1 − p m ) L= -\sum_{i=1}^K(y_iL_i^++(1-y_i)L_i^-) \\ L_i^+=(1-p_m)^{\gamma+} logp_m \\ L_i^-=p_m^{\gamma-} log(1-p_m) L=i=1K(yiLi++(1yi)Li)Li+=(1pm)γ+logpmLi=pmγlog(1pm)

Hill Loss和SPLC Loss

来自Simple and Robust Loss Design for Multi-Label Learning with Missing Labels,简单来说就是把上述BCE收到missing labels影响做了一些修正,详细看原文较好
在这里插入图片描述
部分摘录自:

  1. https://www.zhihu.com/question/418818026/answer/1454922545
  2. https://zhuanlan.zhihu.com/p/266749365
  3. Asymmetric Loss For Multi-Label Classification
  4. Simple and Robust Loss Design for Multi-Label Learning with Missing Labels

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

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

相关文章

山西电力市场日前价格预测【2023-10-06】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-06&#xff09;山西电力市场全天平均日前电价为425.53元/MWh。其中&#xff0c;最高日前电价为777.87元/MWh&#xff0c;预计出现在18: 45。最低日前电价为328.89元/MWh&#xff0c;预计…

ICCV 2023 获奖论文公布,扩散模型、分割一切、跟踪一切摘得桂冠

昨天计算机视觉三大顶级会议之一的ICCV 2023在法国巴黎正式“开奖”了&#xff01;今年共有两篇论文获得最佳论文奖&#xff0c;大名鼎鼎的“分割一切”荣获最佳论文提名。 ICCV今年共收录了2160篇论文&#xff0c;从今年的录用论文的主题领域来看&#xff0c;3D视觉、图像视频…

大促节奏:速卖通黑五接力双十一,如何打造产品权重瓜分活动流量

双十一和黑五作为一种独特的消费文化现象&#xff0c;已经逐渐成为了消费领域中的一块“金字招牌”。无论是消费者还是商家&#xff0c;都非常期待这一天的到来&#xff0c;因为它不仅代表着购物的欲望和刺激&#xff0c;更重要的是&#xff0c;双十一和黑五已经成为了一种全新…

在springboot项目中整合Druid

或 1.导入maven坐标 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.19</version> </dependency>2.在application.properties中配置连接池 spring:datasource:d…

微信管理系统

在这个全民微信的时代&#xff0c;微信已成为生活和工作中不可缺少的工具&#xff0c;为了方便&#xff0c;大部分人都不会只有一个微信&#xff0c;很多企业老板和创业者都已经开始用微信管理系统来提升自身的业务效率和客户满意度。 微信管理系统适用哪些行业呢&#xff1f; …

SSM - Springboot - MyBatis-Plus 全栈体系(二十)

第四章 SpringMVC 二、SpringMVC 接收数据 3. 接收 Cookie 数据 可以使用 CookieValue 注释将 HTTP Cookie 的值绑定到控制器中的方法参数。 考虑使用以下 cookie 的请求&#xff1a; JSESSIONID415A4AC178C59DACE0B2C9CA727CDD84下面的示例演示如何获取 cookie 值&#x…

小谈设计模式(19)—备忘录模式

小谈设计模式&#xff08;19&#xff09;—备忘录模式 专栏介绍专栏地址专栏介绍 备忘录模式主要角色发起人&#xff08;Originator&#xff09;备忘录&#xff08;Memento&#xff09;管理者&#xff08;Caretaker&#xff09; 应用场景结构实现步骤Java程序实现首先&#xff…

如何使用 Media.io 生成不同年龄的照片

Media.io 是一个在线图片编辑器&#xff0c;提供多种功能&#xff0c;包括照片滤镜、图像裁剪和图像转换。其中&#xff0c;Media.io 的 AI 年龄转换功能可以根据上传的照片&#xff0c;生成不同年龄的照片。 使用 Media.io 生成不同年龄的照片 要使用 Media.io 生成不同年龄…

微信朋友圈还可以这么玩?

微信“朋友圈”除了日常了解好友动态外&#xff0c;就是时不时分享下自己的生活日常&#xff01; 但你知道吗&#xff0c;其实朋友圈还有许多有趣的玩法&#xff0c;只可惜只有“少数人”知晓&#xff01;一起来看看吧 01 关闭个性化“朋友圈”广告 微信作为我们生活的社交圈&…

try catch无法获取空指针异常的长度的问题

项目代码里有对异常进行捕获&#xff0c;然后根据异常的长度决定是否截取异常内容保存数据库的操作&#xff0c;然后对于空指针的异常是无法获取异常的长度的。 这个是获取空指针异常长度。 然后现在不获取异常的长度 解决方法&#xff1a;

Vue3 模糊搜索筛选

Vue3 模糊搜索筛选 环境&#xff1a; vue3 tselement plus 目标&#xff1a; 输入框输入内容&#xff0c;对展示的列表进行模糊搜索筛选匹配的内容。 代码如下&#xff1a; <div style"margin-top: 50px"><el-input v-model"valueInput" size&…

C++笔记之信号量、互斥量与PV操作

C笔记之信号量、互斥量与PV操作 文章目录 C笔记之信号量、互斥量与PV操作1.信号量概念2.信号量例程一3.信号量例程二4.信号量例程三5.互斥量6.PV操作概念7.PV操作详解——抄自&#xff1a;https://mp.weixin.qq.com/s/vvjhbzsWQNRkU7-b_dURlQ 1.信号量概念 C中的信号量是一种同…

【牛客网-面试必刷TOP 101】01链表

BM1 反转链表 解题思路 第一种方法&#xff1a;借助栈 1. 栈的特点是先进后出&#xff0c;用stack来存储链表&#xff0c;之后新建一个头节点&#xff0c;按出栈顺序拼接形成新的链表。 2. 注意&#xff0c;最后一个节点的next要赋值null 3. 空间复杂度O(N), 时间复杂度O(N)J…

竞赛选题 深度学习 opencv python 公式识别(图像识别 机器视觉)

文章目录 0 前言1 课题说明2 效果展示3 具体实现4 关键代码实现5 算法综合效果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的数学公式识别算法实现 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学…

uCOSIII实时操作系统 二 同步与通信

目录 同步概念&#xff1a; 互斥概念&#xff1a; 临界区概念&#xff1a; 任务时间概念&#xff1a; 信号量概念&#xff1a; 互斥信号量概念&#xff1a; 事件标志组概念&#xff1a; 消息邮箱和消息梯队概念&#xff1a; 内存管理概念&#xff1a; 如何从裸机开发…

Linux网络编程1-简单的CS通信程序

Linux网络编程1-简单的CS通信程序 1.Socket相关API说明1.1字节序转换函数&#xff1a;用于ip和port转换1.2sockaddr结构1.3socket函数 以及两个队列1.4bind listen connect accept1.5收发数据 2.服务器和客户端程序代码流程3.服务器端4.客户端5.测试accept不是建立连接而是从已…

1803_ChibiOS网络书籍阅读_嵌入式RTOS介绍

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 1. RTOS指的是实时性操作系统&#xff0c;但是并不是只有嵌入式领域使用RTOS。然而&#xff0c;嵌入式是RTOS的主要使用领域。 2. 一般的RTOS有一组…

国庆中秋宅家自省:偷偷尝鲜

Python3中类的高级语法及实战 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python3数据科学包系列(一):数据分析实战 Python3数据科学包系列(二):数据分析实战 Python3数据科学包系列(三):数据分析实战 国庆中秋宅家自省: Pytho…

【visual studio 小技巧】项目属性->生成->事件

需求 我们有时会用到一些dll&#xff0c;需要把这些dll和我们生成的exe放到一起&#xff0c;一般我们是手动自己copy&#xff0c; 这样发布的时候&#xff0c;有时会忘记拷贝这个dll&#xff0c;导致程序运行出错。学会这个小技巧&#xff0c;就能实现自动copy&#xff0c;非…

Ubuntu1804 安装后无法使用root登录解决方法

1. 给root用户设置密码 sudo passwd root2. 确认是否安装ssh服务 (在安装Ubuntu 的时候可以勾选安装ssh 远程服务),没有安装的话执行以下命令(Ubuntu可以连接互联网) sudo apt-get instll openssh-server3. 设置允许root 用户进行远程连接 sudo vim /etc/ssh/sshd_config 在…