目录
一、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 label | softlabel | |
优点 | 易于获得 | 丢失类内、类间关联,引入噪声 |
缺点 | 更强泛化能力、携带更多信息、对噪声更鲁棒 | 难以获得 |
二、如何得到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 标签是一个 概率分布,表示目标值在各类别上的置信度。它的定义规则需要满足以下两点:
- 非负性:每个类别的概率值必须大于或等于 0。
- 和为 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:将距离转换为概率值
距离越小,表示目标值越接近该类别,因此该类别的概率值应该越大。我们可以通过以下公式将距离转换为概率值:
其中:
- 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:准备数据
假设我们有以下数据:
- 目标样本:一张猫的图像
。
- 正样本:另一张猫的图像
(与目标样本相似)。
- 负样本:一张狗的图像
和一张车的图像
(与目标样本不相似)。
步骤 2:提取特征
通过模型(例如卷积神经网络)提取特征:
- 目标样本的特征:
= model(
)
- 正样本的特征:
= model(
)
- 负样本的特征:
= model(
),fy2 = model(
)
步骤 3:计算相似度
计算目标样本与正样本、负样本的相似度:
- 目标样本与正样本的相似度:
- 目标样本与负样本的相似度:
,
步骤 4:计算 InfoNCE 损失
根据 InfoNCE 损失函数的公式,计算损失值。
步骤 5:反向传播与优化
通过反向传播算法,计算损失函数对模型参数的梯度,并使用梯度下降法更新模型参数,使损失函数逐渐减小。
4. InfoNCE 损失函数的两个部分
如图所示,InfoNCE 损失函数可以拆分为两个部分:alignment 和 uniformity。
Alignment(对齐)
- 目标:使正样本对的特征尽可能接近。
- 实现:通过最大化
实现。
Uniformity(均匀性)
- 目标:使所有特征尽可能均匀分布在单位超球面上。
- 实现:通过最小化
和
实现。
从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],计算交叉熵损失:
④ 优化损失函数
通过反向传播和梯度下降法更新模型参数,使损失函数逐渐减小。模型的目标是使预测的概率分布 p 尽可能接近 Soft 标签 q。