社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

CVPR 2024 | 知识蒸馏中的Logit标准化:辅助logit-based KD算法稳定涨点

PaperWeekly • 2 年前 • 1250 次点击  

©作者 | 孙上荃
单位 | 中科院信工所
研究方向 | 知识蒸馏


太长不看的一句话总结:传统知识蒸馏默认学生/教师网络的温度是全局一致的,这种设置迫使学生模仿教师的 logit 的具体值,而非其关系,论文方法提出 logit 标准化,解决了这个问题。

论文标题:
Logit Standardization in Knowledge Distillation

论文链接:

https://arxiv.org/abs/2403.01427

开源代码:

https://github.com/sunshangquan/logit-standardization-KD

项目主页:

https://sunsean21.github.io/logit-stand-KD.html


知识蒸馏(Knowledge Distillation)

该部分是给不熟悉的读者科普的,熟悉的读者可以看一下符号表达就跳过。

2015 年,Hinton #ref_1 注意到深度学习模型变得越来越大,率先想到是否可以利用一个训练好的大模型(俗称 Teacher、教师模型),教授一个小模型(俗称 Student、学生模型)进行学习。

以常见的分类问题举例,给定一个包含 个样本的图像分类数据集 , 是其中第 个样本图像, 是 对应的标签(数据集如果有 个类,则为 1 至 之间的一个整数,代表图像属于第 个类),学生网络 和教师网络 会读取一张输入图像 ,输出各自的 logit:

我们用带有温度 的 softmax 函数,就可以将 logit 转换为概率密度的形式:
其中 和 分别是学生和教师预测的概率密度,其满足 和 。
随后,就可以用 KL 散度将学生的输出和教师的输出进行定量对比,以此作为损失函数对学生网络进行优化:

整个过程可以看下面的图 1a。


上面简单的概述内容还是有所局限,大家也可以看一下其他科普文章,例如:


潘小小:【经典简读】知识蒸馏(Knowledge Distillation)经典之作(https://zhuanlan.zhihu.com/p/102038521)。



问题背景与分析

距离 Hinton #ref_1 2015 年提出知识蒸馏已经过去了 9 年,温度这个超参数最早就被设定为教师、学生之间共享的,并且是对所有样本都全局不变的,而这样的设置并没有理论支持。


已有工作中,CTKD #ref_2 引入了对抗学习,针对不同难度的样本选择不一样的温度,但是它仍然让学生和教师共享温度;ATKD #ref_3 则是引入一种锐利度指标,针对性地选择学生和教师之间的温度平衡。但是他们均没有讨论学生和教师的温度来自于哪里,也没有理论性地讨论它们是否可以全局不一致、学生教师之间不共享。


因此针对这个问题,文章做出了三个贡献:


  1. 文章基于信息论中的熵最大化理论,推导了含有超参数温度的 softmax 函数表达式。基于推导过程,发现温度并没有明显的约束条件,即没有理论强制学生和教师在全局范围内共享温度(见 1.1.1、1.1.2)

  2. 文章发现已有的“共享温度”的设置会导致两个问题:

  3. 学生网络被迫输出和教师网络相当的 logit(见1.2)

  4. KL 散度难以真实反映学生的蒸馏效果(见2.3)

  5. 文章提出了 logit 标准化,可作为预处理辅助现有基于 logit 的知识蒸馏算法

注:本文初次于 2023 年 3 月投稿至 ICCV 2023,与 2023 年 8 月公开的 NormKD #ref_4 属于 concurrent work。

▲ 图1. logit 标准差辅助的知识蒸馏和传统知识蒸馏的对比

2.1 超参数-温度的来源

这部分推导了带有超参数温度的 softmax 函数,如果只想看结论,可直接跳到 1.3 小节。

2.1.1 教师网络的温度

基于 Edwin #ref_5 1957 年提出的最大熵理论(Maximum-Entropy Principle),可以证明出分类任务的 softmax 函数是求解条件熵最大化问题的唯一解形式,也就是说,对于一个训练好的教师网络,面对以下两个条件,其概率密度 应该使得熵处于最大值,两个条件分别为


  1. 变量向量 需要求和为 1。也就是说,它满足概率密度的形式。
  2. 原始 logit 向量 的期望为正确的 logit 项。也就是说,它需要预测正确。

其数学表达为以下式子:

针对这个求解问题,可以利用拉格朗日乘子法,引入拉格朗日乘子 (条件1)和 (条件2),将条件优化变为单一表达式:

对目标函数求导后取零,即可得到优化问题的解的形式。于是我们对 求偏导,得到:

对其取 0,我们得到

此处的 就变成了我们常见的 softmax 的分母,公式(7)就变为了我们常见的 softmax 函数。而 就是我们常见的温度变量,它的值取 1 时,就是分类任务中不带有温度的 KL 散度函数。

2.1.2 学生网络的温度

与上一小节类似,我们针对蒸馏任务,引入一个新的约束条件:

  1. 学生 logit 向量的期望需要等于教师 logit 的期望。也就是说,需要学生学习到教师的知识。
加入这第三个约束的求解问题的数学表达为:

类似地引入拉格朗日乘子 (条件1)、(条件2)、(条件3),可以将条件优化变为单一表达式:

对 求偏导,得到:

对其取 0,并且设 ,我们得到

其中为了简洁,分母为 。公式(11)变为了我们常见的 softmax 函数。而 就是我们常见的温度变量,它与 取等时,就是蒸馏任务中最常见的学生、教师共享温度的情况。

讨论:

  • 问题1:学生和教师之间是否可以取不同的温度?

答:如果对公式(5)和公式(8)分别对 、 和 求偏导,则其偏导表达式均会退回到对应的条件约束表达式,表达式恒成立,其结果与这三个变量 、 和 也因此无关,所以其取值并没有明显的约束形式。如果我们取 ,就是我们常见知识蒸馏中共享温度的情况。

  • 问题2:蒸馏过程中是否可以对不同样本取不同的温度?

答:与问题 1 类似,其取值并没有明显的约束形式,因此可以针对样本选择温度的取值。

2.2 共享温度的弊端(1/2)

上一小节讨论了 “学生和教师网络是否可以针对样本选择不同的温度” 的问题,但是我们还并不知道是否有必要选择不同的温度值,因此本节展示传统知识蒸馏共享温度带来的弊端。

首先我们将之前的 softmax 表达式统一得到一个一般形式,其表示为:
其中 、、 和 分别为学生()和教师()的 softmax 表达式中的偏置项()和缩放项( ),其中偏置项虽然可以通过分子分母相消,但是其有稳定 logit 均值的作用(之后 2.2 节中提到)。

对于一个蒸馏好的理想学生,我们假设对于给定样本,其损失函数(KL 散度)达到最小值。也就是说,这个理想学生可以完美学习教师的概率,那对于任意索引 ,都可以得到 。

那么对于任意一对索引 ,我们有:

将上面的式子按 从 1 到 求和,然后除以 ,可以得到:

其中 和 分别是学生和教师 logit 的均值。然后我们对公式(14)按 从 1 到 求和,我们可以得到:

其中, 是标准差函数。


假设我们设定教师和学生的温度相同,即 ,那么公式(14)就会变为:

由此可以看出经典知识蒸馏问题中共享温度的设定,最终会强制学生和教师 logit 之间存在一个固定的差 ,但是考虑到学生网络和教师网络之间的能力差距,学生很难生成与教师 logit 的均值相当的 logit #ref_6 #ref_7 #ref_8(见图 2 横轴)。


我们继续考虑教师和学生的温度相同的情况下的标准差,将公式(15)进行简化,可以得到:

由此可以看出经典知识蒸馏问题中共享温度的设定,最终也会强制学生和教师输出的 logit 标准差一致,考虑到其二者的能力差距,学生同样很难生成与教师 logit 的标准差相当的 logit(见图 2 纵轴)。

▲ 图2. 不同尺寸网络的 logit 均值和标准差的双变量散点图
图 2 展示了不同尺寸网络输出的 logit 均值和标准差,可以看出尺寸较大的网络均值更接近于 0,标准差也越小,也就是 logit 更紧凑。由此规律可以看出,较小的学生网络确实难以输出和较大的教师网络相当的 logit 范围。

2.3 小节

我们从本节可以得到以下结论:


  • 学生、教师网络的温度没有明显的约束条件,不必一定全局共享,可以人为指定

  • 在温度共享的情况下,学生、教师网络之间有一个 logit 范围的强制性匹配

  • 基于学生、教师网络的能力差距, 上述强制性匹配很可能限制学生网络的蒸馏效果



提出方法:Logit标准化

3.1 算法

为了打破上述的强制性匹配,文章基于公式(14)的形式,提出了 logit 标准化,即把 、 、 和 代入 softmax 函数:

其中 函数就是一种加权 -score 标准化函数,其表达形式如算法 1 所示,通过引入一个基础温度 来控制标准化后的 logit 值域(见 2.2 优势第四条)。而完整的 logit 标准化知识蒸馏算法则如算法 2 所示。
▲ 算法1:Z-score 函数算法;算法2:logit 标准化的知识蒸馏算法

3.2 优势

这样 -score 标准化后的 logit,,有至少四个好处(所有证明可见文章补充材料:https://sunsean21.github.io/resources/cvpr2024_supp.pdf):

  • 均值为零

之前的工作 #ref_1 #ref_3 常常有学生/教师 logit 的均值为 0 的假设,但是如图 2 所示,其几乎是不可能真实实现的,而基于提出的 logit 标准化函数,logit 均值会自动变为 0。


  • 标准差为

这个性质也是 -score 自带的性质,证明简单。这条性质使学生、教师 logit 被投影到同一范围的类-高斯分布内,而由于其投影过程是多对一的,意味着其反向过程是不确定的,确保了学生的原始 logit 可以不受“强制性匹配”的副作用影响。

  • 单调性

其定义为给定一串索引序列 ,如果其可以将原始 logit 进行由小到大的排序,即 ,那么其也能够将变换后 logit 进行相对应的排序,即 。由于 -score 属于线性变换函数,这条性质自动满足。这条性质确保了学生能够学习到教师网络 logit 必要的内在关系。

  • 有界性,上下界为


这条性质需要几步证明,可查询补充材料(https://sunsean21.github.io/resources/cvpr2024_supp.pdf)。这个性质保证了我们可以自己控制 softmax 函数内 logit 的值域范围,能够保证数值计算的稳定性。

3.3 Toy Case:共享温度的弊端(2/2)

上文中提到共享温度有两个弊端,文章此时举例了一个 toy case 展示其第二个弊端的过程,如图 3 所示。

有两个学生网络 和 ,一起向教师 学习。 的 logit 范围与 相仿,而 的 logit 范围远小于 的 logit,所以 的损失函数 小于 的损失函数 。然而其二者的预测结果却和损失函数的优劣产生了矛盾: 预测的 “Bird” 错误了,而 预测的 “Dog” 却是正确了。


这一矛盾说明了:在学生、教师共享温度的设定下,KL 散度可能无法准确描述学生的蒸馏性能和学习效果!

▲ 图3. 一个 toy case,展示了“温度共享”带来的KL散度无法准确评估学生网络性能的情况

而如果使用文章提出的 logit 标准化(见图 3 下半部分),标准化后的 的 logit 计算的损失函数 大于 的标准化后的 logit 计算的损失函数 ,与其二者预测结果相符,解决了上述问题。



实验结果

4.1 数值结果

在 CIFAR-100 上的结果如表 1、2 所示,文章在四个现有的 logit 知识蒸馏算法上进行了验证,分别为 KD #ref_1、CTKD #ref_2、DKD #ref_9 和 MLKD #ref_10。

▲ 表1. CIFAR-100 上面的蒸馏结果,此表为学生、教师的网络结构不同的情况

▲ 表2. CIFAR-100 上面的蒸馏结果,此表为学生、教师的网络结构相同的情况

在 ImageNet 上的结果如表 3 所示。

▲ 表3. ImageNet 上面的蒸馏结果

4.2 消融实验

针对超参数 和 ,文章在 四种情况下做了消融实验,下表表 4 展示了 的情况,可以看出在 的时候,均有不错的效果,当其取 9 的时候效果最佳。

▲ 表4. 消融实验

4.3 可视化结果

  • logit 范围:


从图 4 第一行中,可以看出经典知识蒸馏算法可以迫使学生产生与教师 logit 相仿的 logit 范围,但是其预测的最大 logit 值没有达到教师的值(12),预测产生了错误。而文章的方法可以使原始 logit 摆脱“强制性匹配”(见图 4b 第一行),而其标准化后的 logit 结果则与教师的几乎完美匹配(见图 4c 第一行)。


从图 4 第二行中可以从全局角度得出类似的结论。

▲ 图4. 第一行:一组学生、教师 logit 的柱状图可视化案例;第二行:学生、教师 logit 之间的平均差值的热度图

  • 特征可视化:


图 5 展示了四种基于 logit 知识蒸馏的 t-SNE 特征可视化,可以看出没有 logit 标准化进行蒸馏的网络输出特征没有很好地散落开,而 logit 标准化进行蒸馏的网络特征具有更好的可辨别性。
▲ 图5. 四种基于 logit 知识蒸馏的特征可视化

4.4 教师-学生鸿沟问题

学生、教师之间由于能力差距,强的老师可能无法做一个好的老师,文章将这个现象解释为学生难以输出与教师 logit 相仿范围的 logit,而这又是现有知识蒸馏所强制强迫的,因此限制了学生的学习。

图6展示了一组没有经过 logit 标准化的传统蒸馏和经过 logit 标准化的蒸馏的 logit 双变量分布可视化,可以看出传统知识蒸馏仍然无法使学生、教师之间的分布重合(粉色、紫色);而 logit 标准化后的 logit 分布则可以完全重合(深绿色、橙色)。

▲ 图6. logit 均值和标准差的双变量散点图

表 5 展示了一组不同能力老师的蒸馏效果,可以看出 logit 标准化普遍地提升了学生的性能,弥补了学生、教师网络之间的学习鸿沟。

▲ 表5. 一组不同能力老师的蒸馏效果,学生为 WRN-16-2

4.5 蒸馏ViT

文章 https://sunsean21.github.io/resources/cvpr2024_supp.pdf 还展示了蒸馏 ViT 的效果,见图 7 和表 6。

▲ 图7. 蒸馏 ViT 的训练轨迹可视化

▲ 表6. 蒸馏 ViT 的性能


参考文献

[1] [arXiv 2015] Distilling the Knowledge in a Neural Network https://arxiv.org/abs/1503.02531
[2] [AAAI 2023] Curriculum Temperature for Knowledge Distillation https://arxiv.org/abs/2211.16231
[3] [OpenReview 2022] Reducing the Teacher-Student Gap via Adaptive Temperatures  https://openreview.net/forum?id=h-z_zqT2yJU
[4] [arXiv 2023] NormKD: Normalized Logits for Knowledge Distillation https://arxiv.org/abs/2308.00520
[5] [Physical Review 1957] Information Theory and Statistical Mechanics https://journals.aps.org/pr/abstract/10.1103/PhysRev.106.620
[6] [ICCV 2019] On the efficacy of knowledge distillation. https://openaccess.thecvf.com/content_ICCV_2019/papers/Cho_On_the_Efficacy_of_Knowledge_Distillation_ICCV_2019_paper.pdf
[7] [AAAI 2020] Improved knowledge distillation via teacher assistant https://ojs.aaai.org/index.php/AAAI/article/view/5963/5819
[8] [ICCV 2021] Densely guided knowledge distillation using multiple teacher assistants https://openaccess.thecvf.com/content/ICCV2021/papers/Son_Densely_Guided_Knowledge_Distillation_Using_Multiple_Teacher_Assistants_ICCV_2021_paper.pdf
[9] [CVPR 2022] Decoupled Knowledge Distillation https://openaccess.thecvf.com/content/CVPR2022/papers/Zhao_Decoupled_Knowledge_Distillation_CVPR_2022_paper.pdf
[10] [CVPR 2023] Multi-Level Logit Distillation https://openaccess.thecvf.com/content/CVPR2023/papers/Jin_Multi-Level_Logit_Distillation_CVPR_2023_paper.pdf



更多阅读



#投 稿 通 道#

 让你的文字被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。


📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算


📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿


△长按添加PaperWeekly小编



🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧


·
·
·


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/169321