动态加权平衡损失:深度神经网络的类不平衡学习和置信度校准

本文主要是介绍动态加权平衡损失:深度神经网络的类不平衡学习和置信度校准,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、研究目的
  • 二、研究方法
    • 创新点
    • 处理类不平衡的大多数方法
    • 交叉熵损失函数
    • Brier Score
  • 三、DWB Loss
  • 总结


前言

Dynamically Weighted Balanced Loss: ClassImbalanced Learning and Confidence Calibration of Deep Neural Networks
下载地址:DOI: 10.1109/tnnls.2020.3047335


一、研究目的

解决深度学习中的类分布不平衡问题,提出了一种基于类平衡动态加权损失函数的类再平衡策略,其中权重是根据类频率和地面真实类的预测概率分配的。动态加权方案根据预测分数自适应其权重的能力允许模型调整具有不同难度的实例,从而导致由硬少数类样本驱动的梯度更新。在网络入侵检测(CICIDS2017数据集)和医学成像(ISIC2019数据集)的不同应用中对高度不平衡的数据进行的实验显示出强大的泛化能力。支持上级经验性能的理论结果提供了理由的有效性,建议动态加权平衡(DWB)损失函数。

二、研究方法

我们提出了一种动态策略来分配类权重,重点放在难以训练的实例上,并提出了一种称为动态加权平衡(DWB)损失的新型损失函数,该损失函数能够自然处理类不平衡,同时还可以提高校准性能。为了说明所提出的方法的一般性,在网络入侵检测和皮肤病变诊断中具有挑战性的现实应用进行了实验。

创新点

分配的权重不是固定的权重方案,而是根据数据实例的预测难度自适应其规模;我们将类别不平衡和置信度估计的可靠性联系起来。据我们所知,以前的研究还没有解决这两个问题在一个统一的方法在DL的上下文中。
因此,本文提出了以下主要创新:
1)基于类再平衡策略的可微分损失公式,其中权重在训练过程中动态变化,
2)允许学习已经良好校准的模型的框架,从而同时解决DNN中的类不平衡和类成员概率的可靠性。

处理类不平衡的大多数方法

处理类不平衡的大多数方法可以分为两类:数据级方法和算法级方法。

数据级方法:通过采用重新分配策略来平衡数据集,从而改变原始数据中的类分布。

  1. 随机过采样:复制少数类中的实例来处理类不平衡,从而增加少数类。
  2. 随机欠采样: 随机删除多数类中的实例以匹配少数类的基数。
  3. 抽样方法来人工平衡数据。

过采样可能会导致过拟合,并可能加重计算负担,而欠采样可能会消除有用的信息,

算法级方法:算法级方法涉及调整分类器,并可进一步分为集成方法和成本敏感方法。

  1. 集成方法:最广泛使用的方法包括bagging和boosting基于集成的方法。
  2. 代价敏感学习:重新缩放数据,通过为不同类别的训练示例分配不同的权重(重新加权),重新分配训练实例,或基于其误分类成本移动决策阈值来执行

不同于以前的方法,需要手工制作的成本矩阵,分配固定的权重,或涉及算法修改,我们提出了一个损失函数,其中包含在训练过程中调整的动态加权因子,以解决不平衡数据的训练偏差,这也会导致校准良好的置信度估计。它不需要任何额外的超参数调优,可以迅速应用于任何DNN架构。

交叉熵损失函数

参考文章
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Brier Score

用于衡量概率校准的一种评价函数。
包含了三部分:均方误差(mean squared error, MSE)、方差(variance)和熵(entropy)

三、DWB Loss

DWB Loss 结合了动态加权的交叉熵损失项和正则化组件,以及对类别权重的灵活设置,旨在更好地处理严重倾斜的类别分布,使得模型能够更好地适应不平衡的情况,并获得更好的训练效果。

引入了一个基于动态加权的分类器目标函数,该目标函数基于地面真值类的预测概率,为难以训练的实例分配更高的权重,我们称之为DWB损失。为方便起见,设fj(Xi ; θ)用pij表示。因此,pij是实例Xi的类j的预测概率。

所提出的损失函数由两个项组成:动态加权CE和等于Brier评分(BS)熵的正则化分量,其可以被认为是导致更好校准的可靠性分量。

在这里插入图片描述

  • ( n ) 是训练样本的数量
  • ( c ) 是类别的数量
  • ( w_j ) 是类别 ( j ) 的权重
  • ( p_{ij} ) 是样本 ( i ) 属于类别 ( j ) 的预测概率
  • ( y_{ij} ) 是样本 ( i ) 的标签,使用了 one-hot 编码

第一项在这里插入图片描述
交叉熵损失项,其中 yij log(pij)表示模型对类别 (j) 的预测与实际标签的交叉熵损失,乘以 (w_j (1-p_{ij})) 来调整权重,使得难以分类的样本获得更高的权重。
第二项
在这里插入图片描述
是正则化组件,它等于 Brier score 的熵,用于提高模型的校准性能。

类权重wj可以被处理为通过交叉验证从数据中学习的超参数,或者与类频率的倒数成比例地设置。我们设置wj等于多数类的类频率和类频率nj(在训练数据集上计算)的对数比,如下所示:
在这里插入图片描述

类别权重设置:

类别权重 (w_j) 可以根据实际情况进行设置,文中提到的一种设置方法是将 (w_j) 设为最多类别的频率与类别 (j) 的频率的对数比例加1。这样,对于具有 (w_j) 类别代价的类别 (j),其分类错误将比具有权重为1的多数类别的错误受到 (w_j) 倍的惩罚。
总体来说,DWB Loss 结合了动态加权的交叉熵损失项和正则化组件,以及对类别权重的灵活设置,旨在更好地处理严重倾斜的类别分布,使得模型能够更好地适应不平衡的情况,并获得更好的训练效果。


总结

DWB损失函数通过动态加权的方式,更注重难以训练的实例,从而提高模型在类别不平衡和难易样本实例方面的性能表现。

这篇关于动态加权平衡损失:深度神经网络的类不平衡学习和置信度校准的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/791757

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

MyBatis分页插件PageHelper深度解析与实践指南

《MyBatis分页插件PageHelper深度解析与实践指南》在数据库操作中,分页查询是最常见的需求之一,传统的分页方式通常有两种内存分页和SQL分页,MyBatis作为优秀的ORM框架,本身并未提... 目录1. 为什么需要分页插件?2. PageHelper简介3. PageHelper集成与配置3.