当前位置: 首页 > article >正文

深度学习知识:softlabel策略

目录

一、hard label和soft label之间的关系

二、如何得到soft label

1. 回归任务:使用离散化方法生成软标签

PS: Soft 标签的定义规则

2. ​分类任务:使用 Label Smoothing 或 Knowledge Distillation 

方法1:Label Smoothing

                PS: 用 ​InfoNCE 函数 和 ​Softmax 损失函数 的相似性,来说明 ​Soft Label 更容易避免退化解问题

​方法 2:Knowledge Distillation(知识蒸馏)​(未细看)

三、如何将soft label运用于模型训练

 ① 模型输出 logits

② Softmax 转换

③ 计算交叉熵损失

④ 优化损失函数


深度学习领域中,通常将数据标注为hard label,但事实上同一个数据包含不同类别的信息,直接标注为hard label会导致大量信息的损失,进而影响最终模型取得的效果。

一、hard label和soft label之间的关系

hard labelsoftlabel
优点易于获得丢失类内、类间关联,引入噪声
缺点更强泛化能力、携带更多信息、对噪声更鲁棒难以获得

二、如何得到soft label

1. 回归任务:使用离散化方法生成软标签

在回归任务中,目标值是连续值。为了使用 ​Softmax Cross Entropy,我们需要将连续目标值转换为软标签。具体方法如下:

① 离散化目标值:将目标值的范围划分为多个区间(类别)。例如,将 y 的范围 [0,1] 划分为 3 个区间:

  • 区间 1:[0,0.33)
  • 区间 2:[0.33,0.66)
  • 区间 3:[0.66,1]

​② 定义 Soft 标签:根据目标值 y 的位置,为每个区间分配一个概率值。例如:

  • 如果 y=0.7,它更接近区间 3,因此可以定义 Soft 标签为 q=[0.1,0.2,0.7]。

PS: Soft 标签的定义规则

Soft 标签是一个 ​概率分布,表示目标值在各类别上的置信度。它的定义规则需要满足以下两点:

  1. 非负性:每个类别的概率值必须大于或等于 0。
  2. 和为 1:所有类别的概率值之和必须等于 1。

在回归任务中,Soft 标签的定义通常基于 ​目标值与各类别的距离。具体来说:

  • 如果目标值 y 更接近某个类别,则该类别的概率值较大。
  • 如果目标值 y 远离某个类别,则该类别的概率值较小。

1. ​如何定义 Soft 标签?

假设我们已经将目标值的范围划分为多个区间(类别),例如:

  • 区间 1:[0,0.33)
  • 区间 2:[0.33,0.66)
  • 区间 3:[0.66,1]

对于目标值 y=0.7,它属于区间 3(类别 3),但我们需要为每个类别分配一个概率值,生成 Soft 标签 q=[q1​,q2​,q3​]。具体步骤如下:

步骤 1:计算目标值与各类别的距离

假设每个区间的中心点作为该类别的代表值:

  • 类别 1 的中心点:c1​=0.165(区间 [0,0.33) 的中点)
  • 类别 2 的中心点:c2​=0.495(区间 [0.33,0.66) 的中点)
  • 类别 3 的中心点:c3​=0.825(区间 [0.66,1] 的中点)

计算目标值 y=0.7 与各类别中心点的距离:

  • d1​=∣y−c1​∣=∣0.7−0.165∣=0.535
  • d2​=∣y−c2​∣=∣0.7−0.495∣=0.205
  • d3​=∣y−c3​∣=∣0.7−0.825∣=0.125
步骤 2:将距离转换为概率值

距离越小,表示目标值越接近该类别,因此该类别的概率值应该越大。我们可以通过以下公式将距离转换为概率值:

\frac{1/d_{i}}{\sum_{j=1}^{3}1/d_{i}}

其中:

  • di​ 是目标值与类别 i 的距离,
  • qi​ 是类别 i 的概率值。

计算各类别的概率值:

  • q1​=1/0.535+1/0.205+1/0.1251/0.535​≈0.1
  • q2​=1/0.535+1/0.205+1/0.1251/0.205​≈0.2
  • q3​=1/0.535+1/0.205+1/0.1251/0.125​≈0.7
  • 因此,Soft 标签为 q=[0.1,0.2,0.7]。

2. ​为什么这样定义?

这种定义方式的核心思想是:

  • 距离越小,概率越大:目标值越接近某个类别,该类别的概率值越大。
  • 平滑过渡:Soft 标签是一个平滑的分布,反映了目标值的不确定性或模糊性。
  • 符合概率分布的性质:Soft 标签满足非负性和和为 1 的条件。

2. ​分类任务:使用 Label Smoothing 或 Knowledge Distillation 

方法1:Label Smoothing

Label Smoothing 通过对 One-hot 标签进行平滑处理生成软标签。具体方法如下:

① 平滑处理

  • 将原本为 1 的位置(正确类别)的值从 1 变为 1−α。
  • 将原本为 0 的位置(其他类别)的值从 0 变为 K−1α​,其中 K 是类别总数,α 是平滑系数(通常取 0.1)。

​② 生成 Soft 标签

  • 例如,对于 3 分类问题,正确类别为类别 1,平滑后的软标签为:q=[1−α,α/2​,α/2​]
  • 如果 α=0.1,则软标签为:q=[0.9,0.05,0.05]
核心思想
  • 通过引入噪声(软标签),防止模型过于自信地拟合训练数据。
  • 提高模型的泛化能力。

PS: 用 ​InfoNCE 函数 和 ​Softmax 损失函数 的相似性,来说明 ​Soft Label 更容易避免退化解问题

1.问题描述

假设我们有一个 ​对比学习(Contrastive Learning)​ 任务,目标是通过对比正样本和负样本,学习到更具判别性的特征表示。例如:

  • 任务:图像分类。
  • 目标:学习图像的特征表示,使得相似图像的特征接近,不相似图像的特征远离。

2. ​InfoNCE 损失函数的定义

InfoNCE 损失函数的公式为:

其中:

  • fT​ 是目标样本的特征表示,
  • fy​ 是正样本的特征表示,
  • fyi​​ 是负样本的特征表示,
  • τ 是温度参数,用于控制分布的平滑程度。

作用

  • 最大化正样本对(Positive Pair)的相似度。
  • 最小化负样本对(Negative Pair)的相似度。

3. ​模型训练的具体步骤

下面通过一个具体的例子,说明 InfoNCE 损失函数如何运用于模型训练。

步骤 1:准备数据

假设我们有以下数据:

  • 目标样本:一张猫的图像 x_{T }​。
  • 正样本:另一张猫的图像 x_{y }​(与目标样本相似)。
  • 负样本:一张狗的图像 x_{y1 }​​ 和一张车的图像 x_{y2 }​​(与目标样本不相似)。
步骤 2:提取特征

通过模型(例如卷积神经网络)提取特征:

  • 目标样本的特征:f_{T }​ = model(x_{T }​)
  • 正样本的特征:f_{y } = model(x_{y }​)
  • 负样本的特征:f_{y1} ​​= model(x_{y1}),fy2 ​​= model(x_{y2}​​)
步骤 3:计算相似度

计算目标样本与正样本、负样本的相似度:

  • 目标样本与正样本的相似度:f_{T}^T{}f_{y}^{}
  • 目标样本与负样本的相似度:f_{T}^T{}f_{y1}^{}f_{T}^T{}f_{y2}^{}
步骤 4:计算 InfoNCE 损失

根据 InfoNCE 损失函数的公式,计算损失值。

步骤 5:反向传播与优化

通过反向传播算法,计算损失函数对模型参数的梯度,并使用梯度下降法更新模型参数,使损失函数逐渐减小。

4. ​InfoNCE 损失函数的两个部分

如图所示,InfoNCE 损失函数可以拆分为两个部分:​alignment 和 ​uniformity

Alignment(对齐)​
  • 目标:使正样本对的特征尽可能接近。
  • 实现:通过最大化 f_{T}^T{}f_{y}^{}​ 实现。
Uniformity(均匀性)​
  • 目标:使所有特征尽可能均匀分布在单位超球面上。
  • 实现:通过最小化f_{T}^T{}f_{y1}^{} 和 f_{T}^T{}f_{y2}^{} 实现。

从softmax和InfoNCE损失函数的相似性上理解,把InoNCE公式的分母想象成soft label的所有位置相加,也就是最大值的那个位置可以看成是positive pair,其他位置都可以看成是negative pair,softmax的损失函数不是跟InfoNCE损失函数一模一样了吗,异曲同工!也就是说hard label可以认为只有positive pair,而soft label仍然保留negative pair。因此,soft label更容易避免退化解问题。 

方法 2:Knowledge Distillation(知识蒸馏)​(未细看)

knowledge distillation相比于label smoothing,最主要的差别在于,知识蒸馏的soft label是通过网络推理得到的,而label smoothing的soft label是人为设置的。

原始训练模型的做法是让模型的softmax分布与真实标签进行匹配,而知识蒸馏方法是让student模型与teacher模型的softmax分布进行匹配。直观来看,后者比前者具有这样一个优势:经过训练后的原模型,其softmax分布包含有一定的知识——真实标签只能告诉我们,某个图像样本是一辆宝马,不是一辆垃圾车,也不是一颗萝卜;而经过训练的softmax可能会告诉我们,它最可能是一辆宝马,不大可能是一辆垃圾车,但绝不可能是一颗萝卜。

通过使用一个 ​教师模型 的输出作为软标签,指导 ​学生模型 的训练。具体方法如下:

​① 训练教师模型:在训练集上训练一个复杂的教师模型,使其能够输出更准确的概率分布。

​② 生成 Soft 标签:使用教师模型的输出作为软标签,例如:q=[0.8,0.15,0.05]

​③ 训练学生模型:使用软标签训练一个更轻量级的学生模型。

核心思想
  • 通过教师模型的输出(软标签),将知识从教师模型迁移到学生模型。
  • 学生模型可以学习到教师模型的泛化能力,同时降低模型复杂度。
  • 知识蒸馏得到的soft label相当于对数据集的有效信息进行了统计,保留了类间的关联信息,剔除部分无效的冗余信息。 相比于label smoothing,模型在数据集上训练得到的soft label更加可靠。


三、如何将soft label运用于模型训练

 ① 模型输出 logits

模型输出 3 个类别的 logits z1​,z2​,z3​。

② Softmax 转换

通过 Softmax 函数将 logits 转换为概率分布 p1​,p2​,p3​:

③ 计算交叉熵损失

使用 Soft 标签 q=[q1​,q2​,q3​] 和模型预测的概率分布 p=[p1​,p2​,p3​],计算交叉熵损失:

\iota =-\sum_{i=1}^{3} q_{i}log(p_{i})

④ 优化损失函数

通过反向传播和梯度下降法更新模型参数,使损失函数逐渐减小。模型的目标是使预测的概率分布 p 尽可能接近 Soft 标签 q。


http://www.kler.cn/a/590306.html

相关文章:

  • 亚远景-汽车软件质量提升利器:ASPICE咨询深度解读
  • go语言的控制语句
  • 错误,程序包xxx不存在,Androidstudio报错解析
  • maven核心包:maven-model
  • AI学习第二天--监督学习 半监督学习 无监督学习
  • Maven的继承和聚合
  • 解决 Jupyter Notebook 中本地模块修改不生效的问题
  • 西门子PLC 博图(TIA Portal)与安川机器人进行Modbus TCP通信
  • QuickAPI:如何轻松实现数据库快速导入
  • Python----计算机视觉处理(Opencv:图像颜色替换)
  • Git下载安装(保姆教程)
  • 青少年编程与数学 02-011 MySQL数据库应用 02课题、MySQL数据库安装
  • C++高频(二)
  • uniapp实现页面左滑右滑切换内容
  • 【万字总结】构建现代Web应用的全方位性能优化体系学习指南(二)
  • UART转AHB总线接口参考设计介绍
  • CSS3学习教程,从入门到精通,CSS3 属性语法知识点及案例代码(4)
  • 学生选课管理系统数据库设计报告
  • C++学习笔记(二十一)——文件读写
  • 4.JVM-垃圾回收介绍