【深度学习|学习笔记】“改进的 softmax 损失”系统化梳理成 5 大类!详解!(三)
·
【深度学习|学习笔记】“改进的 softmax 损失”系统化梳理成 5 大类!详解!(三)
【深度学习|学习笔记】“改进的 softmax 损失”系统化梳理成 5 大类!详解!(三)
文章目录
欢迎铁子们点赞、关注、收藏!
祝大家逢考必过!逢投必中!上岸上岸上岸!upupup
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可扫描博文下方二维码 “
学术会议小灵通”或参考学术信息专栏:https://blog.csdn.net/2401_89898861/article/details/148877490
5) 知识蒸馏/校准(“改进软目标”的广义思路)
5.1 Knowledge Distillation(温度软目标)
- 学生网络匹配教师 softmax(带温度 T T T)的分布,同时和硬标签做插值:

- 优点:提升泛化与小模型性能;缺点:需要教师。
def kd_loss(student_logits, teacher_logits, target, T=2.0, alpha=0.5):
kd = F.kl_div(F.log_softmax(student_logits/T, dim=1),
F.softmax(teacher_logits/T, dim=1),
reduction='batchmean') * (T*T)
ce = F.cross_entropy(student_logits, target)
return alpha * kd + (1 - alpha) * ce
5.2 温度缩放(后处理校准)
- 不改训练,只在验证/测试把 logits 除以 T T T(学习一个标量 T T T)改善概率校准。
- 注意:这是后处理,不是训练期的损失替代。
选型建议(速查表)
| 需求 | 建议 |
|---|---|
| 过度自信/想要更好校准 | Label Smoothing;Confidence Penalty;(后处理) 温度缩放 |
| 提升判别性(如人脸/细粒度) | ArcFace(首选)、CosFace;配合特征/权重归一化 |
| 类别极度不平衡 | Focal Loss;LDAM(+ Class-Balanced 权重);Logit Adjustment |
| 类别数量巨大 | Adaptive Softmax;Sampled Softmax/NCE |
| 小模型想“学会大模型的暗知识” | 知识蒸馏(KD) |
一个可插拔的训练骨架(示例)
class CriterionFactory:
def __init__(self, mode="ce", **kwargs):
self.mode = mode
self.kw = kwargs
def __call__(self, logits, target, **extra):
if self.mode == "ce":
return F.cross_entropy(logits, target)
elif self.mode == "ls":
return cross_entropy_label_smoothing(logits, target, eps=self.kw.get("eps",0.1))
elif self.mode == "focal":
return focal_loss_softmax(logits, target, gamma=self.kw.get("gamma",2.0),
alpha=self.kw.get("alpha",None))
elif self.mode == "ldam":
return ldam_loss(logits, target, self.kw["cls_num_list"],
max_m=self.kw.get("max_m",0.5), s=self.kw.get("s",30))
elif self.mode == "logit_adjust":
return ce_with_logit_adjustment(logits, target, self.kw["priors"], tau=self.kw.get("tau",1.0))
else:
raise ValueError("unknown loss mode")
# 用法:
# criterion = CriterionFactory(mode="ls", eps=0.1)
# loss = criterion(logits, labels)
小结
- “改进的 softmax 损失”并非单一配方,而是围绕 可分性(margin)、稳健性(正则)、不平衡(重加权/重构)、可扩展性(大类别效率) 与 软目标(蒸馏/校准) 这几条主线不断演化。
- 工程落地时,建议从 Label Smoothing(默认增强)和 ArcFace/CosFace(需要判别性时)起步;长尾任务加入 Focal/LDAM/类平衡权重;大词表考虑 Adaptive Softmax;模型压缩/集成用 KD。
- 注意数值稳定(
logsumexp、acos/clamp)、超参选择(m/s/gamma/beta)与训练可收敛性(尤其 margin
类方法)。
更多推荐


所有评论(0)