【深度学习】损失“三位一体”——从 Fisher 的最大似然到 Shannon 的交叉熵再到 KL 散度,并走进 PET·P-Tuning微调·知识蒸馏的实战

news2025/7/19 17:01:30

一页速览:

1912 Fisher 用最大似然把「让数据出现概率最高」变成参数学习;

1948 Shannon 把交叉熵解释成「最短平均编码长度」;

1951 Kullback-Leibler 用相对熵量化「多余信息」。

三条历史线落到今天深度学习同一个损失——交叉熵。

也就是我们常用的:CrossEntropyLoss 函数

下面按 时间 → 问题 → 数学 → 代码 的顺序拆解,并演示它们在二/多分类、大模型知识蒸馏(含温度 T)和 PET 软模板大模型微调里的角色。


1  三个名字、三个年代、一个目标

年代

人物

术语

初衷

关键论文

1912→1922

R. A. Fisher

最大似然 (MLE)

用参数让训练数据出现的联合概率最大

“On the mathematical foundations…” 1922

1948

C. E. Shannon

交叉熵 H(p,q)

预测分布 q 压缩 真实分布 p 的平均比特数

《A Mathematical Theory of Communication》

1951

S. Kullback & R. Leibler

KL 散度 DKL

衡量 p→q 需要的额外信息量

《On Information and Sufficiency》

 表示交叉熵, MLE 表示最大似然, 表示KL散度

一句话概览

最大似然(MLE)、交叉熵 H(p,q) 与 KL 散度 其实是同一指标在三位不同学者手中的“别名”。

1912-1922 Fisher 用它做参数估计;

1948 Shannon 用它算最短平均比特;

1951 Kullback-Leibler 把它写成“额外信息”。

由于   而熵 H(p) 只跟数据真分布有关、与模型参数毫无关系,最小 KL ⇔ 最小交叉熵 ⇔ 最大似然




2  二/多分类:把公式算一遍

场景

激活

损失公式

PyTorch

二分类

Sigmoid

-[y log ŷ+(1-y) log(1-ŷ)]

BCEWithLogitsLoss

多分类 C≥2

Softmax

-log qk

CrossEntropyLoss

2.1 二分类示例

logits = torch.tensor([1.386, -0.847, 0.405])  # ≈[0.8,0.3,0.6]
labels = torch.tensor([1., 0., 1.])
loss = torch.nn.BCEWithLogitsLoss()(logits, labels)  # ≈1.06

2.2 多分类示例:三分类为例子

logits = torch.tensor([[ 2.3, 0.1,-1.2],
                       [ 0.2, 1.4, 0.0],
                       [-0.5, 0.3, 2.1]])
labels = torch.tensor([0,1,2])
loss   = torch.nn.CrossEntropyLoss()(logits, labels)
C=2 时 Softmax+CCE 可化简为 Sigmoid+BCE,数学上等价 。


3  知识蒸馏:KL / 交叉熵 + 温度 T

核心损失

温度 T>1 让 logits 变平滑,更易传递「软知识」 。

为什么要温度? 把 logits / T (T>1) 能“压平”概率,使学生更容易学习细粒度信息

T, alpha = 4.0, 0.7
for x,y in loader:
    with torch.no_grad():
        p_soft = torch.softmax(teacher(x)/T, -1)
    q_logits = student(x)/T
    q_log    = torch.log_softmax(q_logits, -1)

    loss_kd = (p_soft*(p_soft.log()-q_log)).sum(1).mean()*T*T      # KL 项
    loss_ce = torch.nn.CrossEntropyLoss()(q_logits*T, y)           # 硬标签
    loss    = alpha*loss_ce + (1-alpha)*loss_kd
    loss.backward(); opt.step()


4  PET微调:把分类任务改成「完形填空」

说人话,就是自己弄一个[mask] ----》 映射表,这样以bert 为案例的预测出来的 【mask】通过映射表,就是我们的真实分类了,所以我们在微调的时候,把数据弄成原始句子 ➕ 【mask】模式,真实分类给进去,然后微调bert 模型,训练好的这个就是我们的老师,这个老师,去给其他样本进行打软标签, 也就是提供软标签这个,用于指导我们的另一个模型去拟合或者接近老师的答案。
(PET 产生的原因就是,因为我们的bert 在预训练的时候,就是MLM任务,我们直接把任务改成这种,就不用拟合或者说训练太久,即可达到好的效果。) 

  1. Stage-A:5-10 条标注 + Pattern T + Verbalizer V → 微调 K 个 BERT-MLM(填 [MASK],损失=交叉熵)。

  2. Stage-B:老师集成给未标注文本打软标签  。

  3. Stage-C:把 当教师,用 KL/交叉熵 训学生分类器(下式)。

PVP 组件:Pattern T + Verbalizer V
例:"Review: <x>. Sentiment: [MASK]." ,terrible↔0,great↔1

Step-A 少量标注 → 微调 K 个教师 MLM

  • 损失:CrossEntropyLoss 填 [MASK](即交叉熵)

Step-B 教师集成 → 大量未标注文本生成软标签 psoft

Step-C 学生分类器

# --- Stage-A: 训练 K 个教师 MLM ---
for T in patterns:
    teacher = BertForMaskedLM.from_pretrained('bert-base')
    finetune_mlm(teacher, few_shot_data, T, verbalizer)  # 交叉熵填空
    teachers.append(teacher)

# --- Stage-B: 生成软标签 ---
soft = []
for x in unlabeled:
    logits = [mask_logits(m,x,T,V) for m,T in zip(teachers,patterns)]
    soft.append(torch.mean(torch.stack(logits),0).softmax(-1))  # p_soft

# --- Stage-C: 学生分类器 ---
student = BertForSequenceClassification.from_pretrained('bert-base')
for x, p_soft in zip(unlabeled, soft):
    q = student(x).log_softmax(-1)
    kl  = (p_soft * (p_soft.log() - q)).sum()
    loss = kl                      # α=0,可选加硬标签交叉熵
    loss.backward(); opt.step()

用 KL/交叉熵把学生分布 qθ 贴到教师软标签 psoft 上 。


5  2025 Prompt-Tuning ,lora 家族选型

方法

额外参数

优点

缺点

推荐场景

Prompt-Tuning

0

零成本 PoC

方差大,需≥100B 模型

原型验证

PET

全量+集成

1-10 样本即可

两阶段工程复杂

极少标签

P-Tuning v2

0.1-3 %

稳定通用

需提示编码器

NLU few-shot

PPT

同上 + 预训

最优精度

预训练成本高

少样本高精度

LoRA / QLoRA

0.05-1 %

工业主流

需改 Linear

任务量产

一般都是用 P-Tuning v2 和 LoRA 这几个


参考文献

  1. Fisher R. A., Maximum Likelihood (1922)

  2. Shannon C. E., A Mathematical Theory of Communication (1948)

  3. Kullback S., Leibler R., On Information and Sufficiency (1951)

  4. PyTorch Docs — BCEWithLogitsLoss

  5. PyTorch Docs — CrossEntropyLoss

  6. Schick T., Schütze H., Pattern-Exploiting Training (EACL 2021)

  7. Hinton G. et al., Distilling the Knowledge… (2015)

  8. Liu X. et al., GPT Understands, Too — P-Tuning v2 (2021)

  9. Gu P. et al., PPT: Pre-trained Prompt Tuning (ACL 2022)

  10. Stats.SE 讨论 BCE vs CCE

  11. KD 温度研究综述


一句话总结

Fisher 说:让样本出现概率最大;Shannon 说:把平均比特压到最小;Kullback-Leibler 说:去掉无用信息。
三句话 = 一个训练目标:把交叉熵降到最低。 无论你在训练模型,还是蒸馏学生,还是用一个小小 Prompt 让大模型「开窍」,它始终是深度学习的黄金公式。

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

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

相关文章

5 分钟速通密码学!

让我们开始第一部分&#xff1a;密码学基础 (Cryptography Basics)。 第一部分&#xff1a;密码学基础 (Cryptography Basics) 1. 什么是密码学&#xff1f; 想象一下&#xff0c;在古代战争中&#xff0c;将军需要向远方的部队传递作战指令。如果直接派人送信&#xff0c;信…

Linux——IP协议

1. 现实意义 • IP协议&#xff1a;提供一种能力&#xff0c;把数据报从主机A跨网络送到主机B • TCP/IP协议&#xff1a;核心功能&#xff0c;把数据100%可靠的从主机A跨网络送到主机B 注&#xff1a;TCP协议负责百分百可靠&#xff0c;通过三次握手、滑动窗口、拥塞控制、延…

Linux信号量(32)

文章目录 前言一、POSIX 信号量信号量的基础知识信号量的基本操作 二、基于环形队列实现生产者消费者模型环形队列单生产单消费模型多生产多消费模型 总结 前言 加油&#xff0c;加油&#xff01;&#xff01;&#xff01; 一、POSIX 信号量 信号量的基础知识 互斥、同步 不只…

技术视界 | 打造“有脑有身”的机器人:ABC大脑架构深度解析(上)

ABC大脑架构&#xff1a;连接大模型与物理世界的具身智能新范式 在具身智能和类人机器人技术快速发展的背景下&#xff0c;如何高效整合“大模型的认知理解能力”与“对真实物理世界的精准控制”&#xff0c;成为当前智能体系统设计中最具挑战性也是最关键的问题之一。尽管大语…

使用堡塔和XShell

使用堡塔和XShell 一、SSH协议介绍 SSH为SecureShell的缩写&#xff0c;由IETF的网络小组(NetworkWorkingGroup)所制定;SSH为建立在应用层基础上的安全协议。SSH是较可靠&#xff0c;专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中…

软件项目交付阶段,验收报告记录了什么?有哪些标准要求?

软件项目交付阶段&#xff0c;验收报告扮演着至关重要的角色&#xff0c;它相当于一份详尽的“成绩单”&#xff0c;具体记录了项目完成的具体情况以及是否达到了既定的标准。 项目基本信息 该环节将展示软件项目的核心信息&#xff0c;包括项目名称、开发团队构成、项目实施…

LightGBM的python实现及参数优化

文章目录 1. LightGBM模型参数介绍2. 核心优势3. python实现LightGBM3.1 基础实现3.1.1 Scikit-learn接口示例3.1.2 Python API示例 3.2 模型调优3.2.1 GridSearchCV简介3.2.2 LightGBM超参调优3.2.3 GridSearchCV寻优结果解读 在之前的文章 Boosting算法【AdaBoost、GBDT 、X…

封装渐变堆叠柱状图组件附完整代码

组件功能 这是一个渐变堆叠柱状图组件&#xff0c;主要功能包括&#xff1a; 在一根柱子上同时显示高、中、低三种危险级别数据使用渐变色区分不同危险级别&#xff08;高危红色、中危橙色、低危蓝色&#xff09;悬停显示详细数据信息&#xff08;包括总量和各级别数据&#…

山东大学软件学院创新项目实训开发日志——第十三周

目录 1.开展prompt工程&#xff0c;创建个性化AI助理&#xff0c;能够基于身份实现不同角度和语言风格的回答。 2.对输出进行格式化&#xff0c;生成特定格式的会议计划文档。 3.学习到的新知识 本阶段我所做的工作 1.开展prompt工程&#xff0c;创建个性化AI助理&#xff…

Cesium 透明渐变墙 解决方案

闭合路径修复 通过增加额外点确保路径首尾相接 透明渐变效果 使用RGBA颜色模式实现从完全不透明到完全透明的平滑渐变 参数可调性 提供多个可调参数&#xff0c;轻松自定义颜色、高度和圆环尺寸 完整代码实现 <!DOCTYPE html> <html> <head><meta …

day022-定时任务-故障案例与发送邮件

文章目录 1. cron定时任务无法识别命令1.1 故障原因1.2 解决方法1.2.1 对命令使用绝对路径1.2.2 在脚本开头定义PATH 2. 发送邮件2.1 安装软件2.2 配置邮件信息2.3 巡检脚本与邮件发送2.3.1 巡检脚本内容2.3.2 制作时任务发送邮件 3. 调取API发送邮件3.1 编写文案脚本3.2 制作定…

新增 git submodule 子模块

文章目录 1、基本语法2、添加子模块后的操作3、拉取带有submodule的仓库 git submodule add 是 Git 中用于将另一个 Git 仓库作为子模块添加到当前项目中的命令。 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录&#xff0c;同时保持它们各自的提交历史独立。 1、基…

List优雅分组

一、前言 最近小永哥发现&#xff0c;在开发过程中&#xff0c;经常会遇到需要对list进行分组&#xff0c;就是假如有一个RecordTest对象集合&#xff0c;RecordTest对象都有一个type的属性&#xff0c;需要将这个集合按type属性进行分组&#xff0c;转换为一个以type为key&…

Linux 使用 Docker 安装 Milvus的两种方式

一、使用 Docker Compose 运行 Milvus (Linux) 安装并启动 Milvus Milvus 在 Milvus 资源库中提供了 Docker Compose 配置文件。要使用 Docker Compose 安装 Milvus&#xff0c;只需运行 wget https://github.com/milvus-io/milvus/releases/download/v2.5.10/milvus-standa…

AR眼镜+AI视频盒子+视频监控联网平台:消防救援的智能革命

在火灾现场&#xff0c;每一秒都关乎生死。传统消防救援方式面临信息滞后、指挥盲区、环境复杂等挑战。今天&#xff0c;一套融合AR智能眼镜AI视频分析盒子智能监控管理平台的"三位一体"解决方案&#xff0c;正在彻底改变消防救援的作业模式&#xff0c;为消防员装上…

编程技能:字符串函数10,strchr

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;字符串函数09&#xff0c;strncmp 回到目录…

使用tunasync部署企业内部开源软件镜像站-Centos Stream 9

使用tunasync部署企业内部开源软件镜像站 tunasync 是清华大学 TUNA 镜像源目前使用的镜像方案&#xff0c;本文将介绍如何使用 tunasync 部署企业内部开源软件镜像站。 基于tunasync mirror-web nginx进行镜像站点搭建。 1. tunasync设计 tunasync架构如下&#xff1a; …

C++----Vector的模拟实现

上一节讲了string的模拟实现&#xff0c;string的出现时间比vector靠前&#xff0c;所以一些函数给的也比较冗余&#xff0c;而后来的vector、list等在此基础上做了优化。这节讲一讲vector的模拟实现&#xff0c;vector与模板具有联系&#xff0c;而string的底层就是vector的一…

Mac redis下载和安装

目录 1、官网&#xff1a;https://redis.io/ 2、滑到最底下 3、下载资源 4、安装&#xff1a; 5、输入 sudo make test 进行编译测试 会提示 ​编辑 6、sudo make install 继续 7、输入 src/redis-server 启动服务器 8、输入 src/redis-cli 启动测试端 1、官网&#xff…

[25-cv-05718]BSF律所代理潮流品牌KAWS公仔(商标+版权)

潮流品牌KAWS公仔 案件号&#xff1a;25-cv-05718 立案时间&#xff1a;2025年5月21日 原告&#xff1a;KAWS, INC. 代理律所&#xff1a;Boies Schiller Flexner LLP 原告介绍 原告是一家由美国街头艺术家Brian Donnelly创立的公司&#xff0c;成立于2002年2月25日&…