当变换器歌唱时-将-SpectralKD-应用于基于文本的知识蒸馏

当变换器歌唱时:将 SpectralKD 应用于基于文本的知识蒸馏

原文:towardsdatascience.com/when-transformers-sing-adapting-spectralkd-for-text-based-knowledge-distillation/

引言

在处理我的意图分类的知识蒸馏问题时,我遇到了一个令人困惑的难题。我的设置涉及一个教师模型,即 RoBERTa-large(在我的意图分类上微调),以及一个学生模型,我试图训练它,同时与教师模型相比,尽量不损失太多准确性。

我尝试了多种映射技术,将每个第二层连接到学生层,将两个教师层平均合并为一个,甚至分配自定义权重,例如给 l1 分配 0.3,给 l2 分配 0.7。但无论我尝试什么组合,教师的准确性从未与学生模型匹配。

那时我开始探索如何将最有信息量的层映射到我的学生模型上,以便学生可以最大化其性能。我想找到一种方法来量化教师模型中哪个层真正对蒸馏至关重要。

在那次搜索中,我偶然发现了一篇迷人的论文——“SpectralKD:通过光谱分析解释和蒸馏视觉变换器的统一框架”,它解决了类似的问题,但是在图像领域。作者使用光谱分析方法(Spectral KD)来更智能地调整教师和学生模型。

好奇心驱使下,我决定将这个想法应用到文本数据上——BOOM!!!,它竟然真的有效! 首次,我的学生模型开始几乎像它的老师一样思考。

来源:作者

这是我微调后的RoBERTa-large模型的层强度图。基于光谱洞察,我在知识蒸馏期间选择了层 1-9 和 21-23用于我的学生模型,这些层承载着最丰富的信息。

由于保密原因,我无法分享我的数据集或代码,但我将向您展示论文中的基于图像的方法如何启发我的基于文本的改编,以及您如何考虑进行同样的操作。


背后故事:FFT 如何揭示模型的光谱灵魂

那么,让我们从光谱强度开始,然后慢慢深入到真正的魔术师:快速傅里叶变换(FFT)

spectralKD 论文中,作者介绍了一个框架,帮助我们看到视觉变换器(ViTs),不仅看到它们预测的内容,还能看到信息在层中的流动。他们不是依靠直觉或可视化,而是使用光谱分析,这是一种测量模型内部表示频率丰富度的方法

想象每个 Transformer 层就像管弦乐队的音乐家,一些层演奏高音(精细细节),而其他层演奏低音(广泛特征)。FFT 帮助我们分别聆听每个演奏者的音乐,并过滤出哪个演奏者拥有最强的旋律,即信息最丰富的信号。

图片

来源:作者

第 1 步:特征图,原材料

图片

B 是批量大小

C 是通道数,

H,W 是空间高度和宽度。

第 2 步:应用傅里叶变换

作者沿着通道维度应用一维 FFT,将这些实值激活转换为频域:

F(X)=FFT(X)

这意味着:

对于每个空间位置(b, h, w),对所有通道进行一维快速傅里叶变换(FFT)。

结果是一个复值张量(因为 FFT 输出实部和虚部)。

因此,F(X)告诉我们该层表示中每种频率有多少。

如果你想知道,“为什么是 FFT 呢?” —— 保持这个想法。

因为在本文的后面,我们将揭示为什么 FFT 是测量模型内部强度的完美工具

第 3 步:测量频率强度

图片

Re(F(X))是实部,

Im(F(X))是虚部。

第 4 步:在整个地图上平均

现在我们想要总结层中所有位置上的这种强度:

图片

这一步告诉我们单个通道的平均强度

图片

然后你可以简单地对每个通道进行平均。哇!现在你有了视觉 Transformer 单层的光谱强度。


探索频率领域:SpectralKD 的光谱透镜

让我们来看看快速傅里叶变换:

图片

Xₖ是输入序列(你的信号、特征或激活模式)。

xₙ是频率索引处的频率分量。

N 是序列中的点数(即通道数或特征数)。

每个项 e⁻ʲ²πᵏⁿ/ᴺ充当一个旋转相量,一个在信号空间中旋转的微小复波,并且它们共同构成了信号处理中最美丽的想法之一。

图片

来源:作者(在这里,旋转相量 e⁻ʲ²πᵏⁿ/ᴺ在复平面上乘以 g(t))

图片

来源:作者(在复平面上平均所有点,然后它将给出相量实体的质心,并且只在特定的频率或 K(在上述情况下,是 3)处达到峰值)

.OMG!这里到底发生了什么?让我来分解一下。

当你将隐藏激活 xₙ(例如,在通道或特征维度上)乘以这个相量时,你实际上是在询问:

“嘿,层,你在你的表示中包含了多少 第 k 种类型的变异?”

每个频率 k 对应特征维度上的一个独特的 模式尺度

较低的 k 值捕捉 广泛的、平滑的语义结构(如主题级上下文),而较高的 k 值捕捉 快速、细粒度的变化(如标记级细微差别或句法信号)。

现在是时候来点有趣的:如果某些层与特定的频率模式产生共鸣,傅里叶变换的乘积将完美对齐,傅里叶公式中的和将产生一个 强烈的响应 对应于那个 k。

如果不是,旋转会相互抵消,这意味着频率在那个层的表示中不起重要作用。

因此,傅里叶变换并没有添加任何新内容;它只是找出我们的层在不同抽象尺度上如何编码信息。

这就像放大并意识到:

  • 有些层以平稳、概念性的意义(低频)安静地嗡嗡作响,

  • 其他则通过标记之间的尖锐、详细的交互(高频)而嗡嗡作响。

FFT 基本上 将层的隐藏状态转换为一个频率指纹——一个映射,显示了该层关注的信息类型。

这正是 SpectralKD 用来确定在知识蒸馏过程中哪些层实际上是在做“重活”的方法。

如果你仍然需要傅里叶变换的可视化和更多直觉,你可以直接观看 3Blue1Brown 视频,“但傅里叶变换是什么?一个视觉介绍。”


从视觉到语言:光谱强度如何指导我的意图分类器

图片

来源:作者

让一个层激活张量是:

图片

其中:

  • N = 样本数(批量大小)

  • L = 序列长度(标记/时间步数)

  • H = 隐藏维度(层产生的通道/特征数)

每个样本 i 有一个激活矩阵 Xᵢ ∈ Rᴸˣᴴ(序列位置 x 隐藏特征)

再次,你可以计算 Xᵢ 的 FFT,然后使用实部和虚部来测量频率长度,并在通道间平均,然后对每一层进行。

频率长度:

图片

通道间的频率:

图片

层内的频率:

图片

在这里,K 是保留的桶数


结论

他们的分析显示有两个主要见解:

  1. 并非所有层都同等贡献。 在均匀的 Transformer 架构中,只有少数 早期最终 层显示出强烈的频谱活动,真正的“热点”信息流。

  2. 不同的 Transformer 类型,相似的旋律。尽管架构各异,但层次化和均匀的 Transformer 共享惊人的相似光谱模式,这暗示了这些模型学习和表示知识的一种普遍方式。

基于这些发现,SpectralKD 引入了一种简单、参数无关的知识蒸馏(KD)策略。通过在教师和学生模型之间选择性地对齐早期和最终层之间的光谱行为,学生学会模仿教师的特征光谱,即使在从未明确对齐的中间层也是如此。

论文中的结果引人注目:蒸馏后的学生(DeiT-Tiny)不仅在基准测试(如 ImageNet-1K)上与教师的表现相匹配,而且它还学会了像教师一样进行光谱思考,以非凡的忠诚度捕捉局部和全局信息。

最终,SpectralKD 将可解释性与蒸馏相结合,提供了一种新颖的方式来可视化在学习过程中 Transformer 内部发生的事情。它开辟了一条新的研究路线,作者称之为“蒸馏动力学”,这是一段探索知识如何在教师和学生网络之间流动、振荡和和谐的过程。


参考文献

核心光谱与 Transformer 基础

可解释性与光谱分析

知识蒸馏与模型压缩

SpectralKD 核心论文

posted @ 2026-03-27 10:21  布客飞龙III  阅读(12)  评论(0)    收藏  举报