发布于
3869 字 · 20 分钟

论文阅读笔记

AI 摘要

作者
  • avatar
    姓名
    Corner430
    社交账号
题图

本文整理了我在学习过程中阅读的多篇论文笔记,涵盖 Transformer 架构、目标检测、视觉识别、知识蒸馏、自监督学习等方向。

目录

  1. Attention Is All You Need:Transformer
  2. End-to-End Object Detection with Transformers:DETR
  3. AN IMAGE IS WORTH 16X16 WORDS:Vision Transformer
  4. Incremental-DETR:增量小样本目标检测
  5. Lightweight Transformer for Multi-Modal Object Detection
  6. Self-supervised Label Augmentation via Input Transformations
  7. Learn More for Food Recognition via Progressive Self-Distillation
  8. Solving Math Word Problems with GPT-3
  9. Curriculum Temperature for Knowledge Distillation
  10. Sharpness-Aware Minimization(SAM)
  11. Adaptive Hierarchy-Branch Fusion for Online Knowledge Distillation
  12. Peeling the Onion
  13. Class Incremental Learning with Contrastive Distillation
  14. Improving Face Recognition via Random Temperature Scaling
  15. De-biased Teacher for Semi-supervised Object Detection
  16. Grouped Knowledge Distillation for Deep Face Recognition

泛读笔记

Can Bad Teaching Induce Forgetting?

论文链接:Can Bad Teaching Induce Forgetting? Unlearning in Deep Networks Using an Incompetent Teacher

本文角度新颖,利用知识蒸馏使模型「变弱」,有意遗忘某些知识。应用场景例如:某些数据授权到期,需要让模型遗忘相关知识。传统方法是重新训练,而本文提出用「无能教师」进行蒸馏来实现遗忘。


SKDBERT:随机知识蒸馏压缩 BERT

论文链接:SKDBERT: Compressing BERT via Stochastic Knowledge Distillation

本文采用随机知识蒸馏方法:每次迭代从多个具有不同容量层级的教师中随机选择一个进行蒸馏。在能力基本无损的情况下,模型体积减少了 40%。

20231226095033


BGNN:自适应知识蒸馏增强图神经网络

论文链接:Boosting Graph Neural Networks via Adaptive Knowledge Distillation

本文提出 BGNN 框架,利用多个图神经网络(GNN)的互补知识来提升学生 GNN 的性能。核心思想:对于同一个 GNN,不同聚合方式会学到不同知识,通过知识蒸馏实现互补。

主要创新:

  • 自适应温度模块:根据教师模型对不同节点的 logits 分布(具体依据节点对应的梯度值)动态调整温度。
  • 权重提升模块:对分类错误率高的节点赋予更高权重。

实验结果:在节点分类和图分类任务上分别提升了 3.05% 和 6.35%。

20240110124950


正文

1. Attention Is All You Need:Transformer

先修知识:BLEU 评估指标

BLEU(Bilingual Evaluation Understudy)是机器翻译质量评估指标,通过计算机器翻译与参考翻译之间的 n-gram 匹配程度来衡量翻译精确度。取值范围 0 到 1,越接近 1 越好。

BLEU=BP⋅exp(∑n=1Nwnlog⁡pn)BLEU = BP \cdot exp(\sum_{n=1}^N w_n \log p_n)

其中 BP 为简短惩罚因子:

BP={1,if c>re(1−r/c),if c≤rBP = \begin{cases} 1, & \text{if } c > r \\ e^{(1-r/c)}, & \text{if } c \leq r \end{cases}

cc 为机器翻译总长度,rr 为参考翻译的最佳匹配长度。pnp_n 为基于 n-gram 的改进精确度:

p∗n=∑∗n-gram∈CCountclip(n-gram)∑n-gram∈CCount(n-gram)p*n = \frac{\sum*{\text{n-gram} \in C} \text{Count}_{\text{clip} }(\text{n-gram})}{\sum_{\text{n-gram} \in C} \text{Count}(\text{n-gram})}

权重 wnw_n 一般取均匀值 wn=1/Nw_n = 1/N,NN 通常为 4。

简介

本文发表于 2017 年,提出 Transformer 结构——完全基于注意力机制,不使用 CNN 和 RNN,因此可以并行计算。

  • 数据集:
    • WMT 2014 English-German:约 4.5 万对英德语句子
    • WMT 2014 English-French:约 35 万对英法语句子
  • 代码:tensor2tensor

核心贡献

  • 前人的序列转换模型基于 RNN 或 CNN,本文提出仅基于注意力机制的 encoder-decoder 结构。
  • 在 BLEU 指标上取得最优效果。
  • 在 8 块 P100 GPU 上训练 12 小时。

背景

  • RNN 需要顺序计算,无法并行。
  • 前人方法未解决长距离依赖学习问题:距离越长,计算量越大。
  • Transformer 通过 embedding 固定维度,并用 multi-head attention 弥补可能的信息损失。

模型架构

沿用 Encoder-Decoder 结构,其中 Decoder 是自回归的(当前输入依赖前面的输出)。

20231123172121

Encoder:

  • N=6N = 6 层,每层包含两个子层:multi-head self-attention 和 position-wise FFN
  • 每个子层有残差连接 + Layer Normalization
  • 为满足残差连接,embedding 和输出维度均为 dmodel=512d_{model} = 512

Decoder:

  • N=6N = 6 层,每层包含三个子层:masked multi-head self-attention、multi-head attention 和 position-wise FFN
  • K(键)和 V(值)来自编码器输出,Q(查询)来自解码器输出
  • masked self-attention 通过将后续位置掩码为负无穷来防止信息泄露

注意力机制

Scaled Dot-Product Attention:

20231123180055

queries 和 keys 维度为 dkd_k,values 维度为 dvd_v。除以 dk\sqrt{d_k} 是为了消除方差的影响。点积注意力比加性注意力效率更高。

Multi-Head Attention:

20231123180142

将 queries、keys、values 分别映射到 dk=dv=dmodel/h=64d_k = d_v = d_{model}/h = 64 维空间(h=8h = 8 个头),分别执行注意力计算后拼接,再映射回 dmodeld_{model} 维。

注意力的应用

  • 解码器中,queries 来自前一个解码层,keys 和 values 来自编码器输出
  • 编码器包含 self-attention
  • 通过 mask 防止解码器访问后续位置

前馈网络

FFN(x)=max(0,xW1+b1)W2+b2\mathcal{FFN} (x) = \mathbb{max} (0, x W_1 + b_1)W_2 + b_2

输入输出维度 dmodel=512d_{model} = 512,中间层维度 dff=2048d_{ff} = 2048。

Embedding 与位置编码

  • input embedding 和 output embedding 共享参数
  • 权重乘以 dmodel\sqrt{d_{model} } 使 embedding 结果方差为 1(参考 分析)

20231123195753

位置编码使用正弦和余弦函数:

PE(pos,2i)=sin⁡(pos/100002i/dmodel)PE(pos,2i+1)=cos⁡(pos/100002i/dmodel)\begin{aligned} \text{PE}_{(pos, 2i)} &= \sin(pos / 10000^{2i/d_{model} }) \\ \text{PE}_{(pos, 2i+1)} &= \cos(pos / 10000^{2i/d_{model} }) \end{aligned}

为什么用 Self-Attention?

  • 可并行计算
  • 远距离词也能直接交互
  • 还可以使用局部注意力

实验结果

大模型在 8 块 P100 GPU 上训练 3.5 天:

20231123222009

总结

  • 提出完全基于注意力机制的 Transformer,可并行计算
  • 在机器翻译任务上取得最优效果
  • 未来方向:局部注意力、图像/音频领域的应用

2. DETR:端到端目标检测

论文链接:End-to-End Object Detection with Transformers

先修知识

匈牙利算法:用于解决指派问题的经典算法。

核心贡献

  • 将目标检测视为集合预测问题,去除 NMS、anchor、proposals 等,真正实现端到端
  • 性能对标 Faster R-CNN
  • 数据集:COCO
  • 代码

设计思路

传统方法先生成 proposals 再分类再回归,结果受限于中间操作。DETR 使用 Transformer 并行输出结果,无需自回归。

20231126215613

  • 使用二分匹配损失(bipartite matching loss)
  • 大物体效果好,小物体效果稍差
  • 可扩展到全景分割

模型架构

20231126230443

20231127012221

  • object queries:100 个固定的可学习向量,表示目标个数
  • 匹配代价同时考虑类别和边界框信息
  • 仅对非空类别计算损失

损失函数

首先通过 Lmatch\mathcal{L}_{match} 一对一匹配预测框与真实框:

σ^=argminσ∈σ_N∑i=1NLmatch(yi,y^σ(i))\hat{\sigma} = \text{arg} \quad \text{min}_{\sigma \in \mathcal{\sigma}\_N} \sum_{i=1}^N \mathcal{L}_{\text{match} }(y_i, \hat{y}_{\sigma(i)})

其中 yi=(ci,bi)y_i = (c_i, b_i) 为真实标签,cic_i 为类别(可为空),bib_i 为边界框。

Lmatch(yi,y^σ(i))=−1{ci≠∅}p^σ(i)(c∗i)+1∗{c∗i=∅}L∗box(b∗i,b^∗σ(i))\mathcal{L}_{\text{match} }(y_i, \hat{y}_{\sigma(i)}) = - \mathbb{1}_{\{c_i \neq \emptyset\} } \hat{p}_{\sigma(i)}(c*i) + \mathbb{1}*{\{c*i = \emptyset\} } \mathcal{L}*{\text{box} }(b*i, \hat{b}*{\sigma(i)})

边界框损失使用 L1 损失和广义 IoU 损失的组合:

Lbox(bi,b^σ(i))=λ∗iouL∗iou(b∗i,b^∗σ(i))+λ∗L1∣∣bi−b^∗σ(i)∣∣_1\mathcal{L}_{\text{box} }(b_i, \hat{b}_{\sigma(i)}) = \lambda*{iou} \mathcal{L}*{iou} (b*i, \hat{b}*{\sigma(i)}) + \lambda*{L_1} ||b_i - \hat{b}*{\sigma(i)}||\_1

匈牙利损失:

LHungarian(y,y^)=∑i=1N[−log⁡p^σ^(i)(ci)+1{ci≠∅}Lbox(bi,b^σ^(i))]\mathcal{L}_{\text{Hungarian} }(y, \hat{y}) = \sum_{i=1}^N [- \log \hat{p}_{\hat \sigma(i)}(c_i) + \mathbb{1}_{\{c_i \neq \emptyset\} } \mathcal{L}_{\text{box} }(b_i, \hat{b}_{\hat \sigma(i)})]

匹配代价未使用对数,而匈牙利损失使用了对数——两者关注的优化目标不同:前者关注数值平衡,后者关注梯度平衡。

  • positional encoding 和 object queries 加入每层 attention 的计算
  • 使用辅助解码损失(每层输出都计算损失,所有 FFN 共享参数)

DETR Fig.10


3. Vision Transformer(ViT)

论文链接:AN IMAGE IS WORTH 16X16 WORDS
代码:vision_transformer

将未修改的 Transformer 直接应用于图像分类存在困难:图像是二维矩阵,直接展平为序列会导致序列过长。

ViT 的解决方案:将图像划分为 NN 个 patch,每个 patch 维度为 PP,作为一个 token 输入 Transformer。额外添加一个 class token 用于分类。

20231209141514


4. Incremental-DETR:增量小样本目标检测

论文链接:Incremental-DETR
代码:Incremental-DETR

问题定义

  • 学习新类别时,基类数据不可用
  • 新类和旧类无重叠
  • 新类仅有少量样本

方法

第一阶段:基模型训练

20231127021733

  1. 在 DbaseD_{base} 上正常训练 DETR
  2. 通过 selective search 生成 proposals,选择与基类 ground truth 不重叠的 top-O 个作为伪标签进行自监督微调

第一阶段损失:

Ltotalbase=Lhg(y,y^)+λ′L_hg(y′,y^′)\mathcal{L}^{base}_{total} = \mathcal{L}_{hg}(y, \hat{y}) + \lambda' \mathcal{L}\_{hg}(y', \hat{y}')

第二阶段:增量微调

20231127192105

经验发现:投影层和分类头是类相关的,CNN 主干、Transformer 和回归头是类无关的。仅对类相关部分进行微调。

为防止灾难性遗忘,引入带掩码的知识蒸馏:

Lfeatkd=12Nnovel∑i=1w∑∗j=1h∑∗k=1c(1−maskijnovel)∣∣fijknovel−f∗ijkbase∣∣2\mathcal{L}^{kd}_{feat} = \frac{1}{2 N^{novel}} \sum_{i=1}^{w} \sum*{j=1}^{h} \sum*{k=1}^{c} (1 - \mathcal{mask}^{novel}_{ij}) ||f_{ijk}^{novel} - f*{ijk}^{base}||^2

对于分类器头,使用 KL 散度蒸馏:

Lclskd=Lkl_div(log⁡(qnovel),qbase)\mathcal{L}^{kd}_{cls} = \mathcal{L}_{\text{kl\_div}}(\log(q^{novel}), q^{base})

第二阶段总损失:

Ltotalnovel=Lhg(y,y^)+λ∗featLkd∗feat+λ∗clsLkd∗cls\mathcal{L}^{novel}_{total} = \mathcal{L}_{hg}(y, \hat{y}) + \lambda*{feat} \mathcal{L}^{kd}*{feat} + \lambda*{cls} \mathcal{L}^{kd}*{cls}

总结

  • 通过蒸馏实现新知识学习与旧知识保持的平衡
  • 自监督生成新类伪标签,使模型更易接受新知识
  • 将模型参数分为类相关和类无关两部分

5. 轻量级多模态目标检测 Transformer

论文链接:Lightweight Transformer for Multi-Modal Object Detection

20231210112104

多模态融合(如自动驾驶中的多传感器)面临精度与速度的权衡。本文提出 Poolformer-based fusion operator,用池化替代传统的权重分配方式,在减少参数量、提高速度的同时保持效果。

参考代码:transfuser


6. 自监督标签增强(SLA)

论文链接:Self-supervised Label Augmentation via Input Transformations
代码:SLA

核心思想:通过数据增强来增强标签,不仅对无监督和半监督学习有效,对全监督学习也能带来提升。将「共享底层特征」改为「统一任务」。

20231210143836

三种方法对比:

  1. 数据增强(DA):仅变换输入,强制标签不变。存在弊端(如 6 和 9 的旋转)。

LDA(x,y;θ,μ)=1M∑j=1ML_CE(θ(zj^;μ),y)\mathcal{L}_{DA}(x,y;\theta,\mu) = \frac{1}{M} \sum_{j=1}^M \mathcal{L}\_{CE}(\theta(\hat{z_j}; \mu), y)

  1. 多任务学习(MT):同时优化原始任务和自监督任务,但在全标签数据上通常无额外提升。

LMT(x,y;θ,u,v)=1M∑j=1MLCE(θ(zj^;μ),y)+LCE(θ(zj^;v),j)\mathcal{L}_{MT}(x,y;\theta,u,v) = \frac{1}{M} \sum_{j=1}^{M} \mathcal{L}_{CE}(\theta(\hat{z_j};\mu), y) + \mathcal{L}_{CE}(\theta(\hat{z_j};v),j)

  1. SLA:直接学习联合概率分布,效果最好。

LSLA(x,y;θ,ω)=1M∑j=1ML_CE(p(zj^;ω),(y,j))\mathcal{L}_{SLA}(x,y;\theta,\omega) = \frac{1}{M} \sum_{j=1}^{M} \mathcal{L}\_{CE}(p(\hat{z_j};\omega), (y,j))

20231210144438

SLA 仅增加标签数量,对模型参数基本无影响。它可以退化为数据增强或多任务学习,但多任务学习约束过强(强制标签不变),难以优化。

20231210173513

预测结果变为 MM 倍后,先做聚合(将 MM 个条件概率相加),再经 softmax 后与原标签计算蒸馏损失:

LSLA(x,y;θ,ω,μ)=LSLA(x,y;θ,ω)+DKL(Paggregated(⋅∣x)∣∣σ(z;μ))+βL_CE(σ(z;μ),y)\mathcal{L}_{SLA}(x,y;\theta,\omega,\mu) = \mathcal{L}_{SLA}(x,y; \theta, \omega) + \mathcal{D}_{KL}(P_{aggregated}(·|x)|| \sigma(z;\mu)) + \beta \mathcal{L}\_{CE}(\sigma(z;\mu), y)


7. 渐进式自蒸馏用于食品识别(PSD)

论文链接:Learn More for Food Recognition via Progressive Self-Distillation

食品识别是细粒度分类中的难题——食品可能由多种食材堆叠构成(如沙拉),传统弱监督定位方法受限于区域定位的精度。

PSD 方法:教师模型和学生模型共享相同的 embedding,通过自蒸馏挖掘图像中更有用的区域。推理阶段仅保留教师模型。

20231210235852

流程:输入原始图片 → ViT → T×D tokens → reshape 为 H×W×D feature map → 全局平均池化 → 全连接层 → Class Response Module → 根据阈值生成 mask → mask 与原图相乘 → 输入学生模型。

损失函数:

L=Lg(x,y)+∑i=1m(ω∗lL∗l(x^i−1,y)+ωdLd(x,x^i))\mathcal{L} = \mathcal{L}_{g}(x,y) + \sum_{i=1}^{m}(\omega*l \mathcal{L}*{l}(\hat{x}_{i-1}, y) + \omega_d \mathcal{L}_{d}(x, \hat{x}_{i}))

其中 Lg\mathcal{L}_{g} 为分类损失,Ll\mathcal{L}_{l} 为定位损失,Ld\mathcal{L}_{d} 为蒸馏损失。渐进性通过 ωd\omega_d 的调度控制:

ωd={α⋅exp⁡(−5(1−eβ)2),e<βα,e≥β\omega_d = \begin{cases} \alpha \cdot \exp(-5(1 - \frac{e}{\beta})^2), & e < \beta \\ \alpha, & e \geq \beta \end{cases}

  • 数据集:ETHZ Food-101、Vireo Food-172、ISIA Food-500
  • Embedding 可用 CNN 或 Transformer(如 Swin Transformer)

8. 用 GPT-3 求解数学方程组

论文链接:Solving Math Word Problems concerning Systems of Equations with GPT-3
数据集:MWP2L

本文探究 GPT-3 在数学方程提取和求解上的能力,聚焦二元一次线性方程组:

  1. 问题分类:判断方程类型,准确率 80%-100%
  2. 方程提取:one-shot 精度 31%,3-shot 69%,fine-tune 后达 80%
  3. 问题生成:精度 33%-93%,取决于问题类型

五类问题:

类别示例
Sum and Difference两数之和与差
Item and Property物品与属性(价格等)
Perimeter of Rectangle矩形周长
Motion运动问题
Mixture混合问题

9. 课程温度知识蒸馏(CTKD)

论文链接:Curriculum Temperature for Knowledge Distillation
代码:CTKD
中文解读:CTKD 中文解读

课程学习策略已广泛应用于计算机视觉和自然语言处理。相关工作包括 Curriculum Dropout(Morerio et al. 2017)。


10. SAM:锐度感知最小化

论文链接:Sharpness-Aware Minimization for Efficiently Improving Generalization
代码:SAM 官方 / 第三方实现

在 CIFAR-100 上取得 96.08% 准确率。

核心思想:现代模型参数量巨大,单靠 loss function 优化不足以支撑,会导致过多不同的解。SAM 提出不仅优化 loss,还要优化 loss 最小值附近的平滑度(曲率)。

20231218094309

定理(非正式表述):对于任意 ρ>0\rho > 0,以高概率有

D(ω)≤max∣∣ϵ∣∣_2≤ρLS(ω+ϵ)+h(∣∣ω∣∣_22/ρ2)\mathcal{D}(\omega) \leq \text{max}_{|| \epsilon ||\_2 \leq \rho} \mathcal{L}_{S}(\omega + \epsilon) + \mathcal{h}(|| \omega ||\_2^2 / \rho^2)

右侧可拆解为:

[max∣∣ϵ∣∣2≤ρLS(ω+ϵ)−LS(ω)]+L_S(ω)+h(∣∣ω∣∣_22/ρ2)[\text{max}_{|| \epsilon ||_2 \leq \rho} \mathcal{L}_{S}(\omega + \epsilon) - \mathcal{L}_{S}(\omega)] + \mathcal{L}\_{S}(\omega) + \mathcal{h}(|| \omega ||\_2^2 / \rho^2)

依次为:锐度 + 损失 + 正则项。

SAM 损失函数:

minωLSSAM(ω)+λ∣∣ω∣∣22whereLSSAM(ω)=△max∣∣ϵ∣∣_p≤ρLS(ω+ϵ)\text{min}_{\omega} \mathcal{L}_{S}^{SAM}(\omega) + \lambda || \omega ||_2^2 \quad \text{where} \quad \mathcal{L}_{S}^{SAM}(\omega) \stackrel{\triangle}{=} \text{max}_{|| \epsilon ||\_p \leq \rho} \mathcal{L}_{S}(\omega + \epsilon)

本质上是最大最小化问题。数据并行可以放大 SAM 的性能。


11. 在线知识蒸馏的自适应层次分支融合

论文链接:Adaptive Hierarchy-Branch Fusion for Online Knowledge Distillation


13. 对比蒸馏用于任务对话系统的增量学习

论文链接:Class Incremental Learning for Task-Oriented Dialogue System with Contrastive Distillation

本文通过对比学习与蒸馏实现对话系统的增量学习:

  • 仅更新与新任务相关的部分参数
  • 对比学习:新任务数据作为锚点,原数据为负样本;上一阶段和新阶段模型对新任务数据的输出构成正样本对
  • 复合损失:对比损失 + 交叉熵损失 + 蒸馏损失
  • 动量更新:保证模型训练稳定性

14. 随机温度缩放改善人脸识别

论文链接:Improving Training and Inference of Face Recognition Models via Random Temperature Scaling

模型对无效输入仍以高置信度预测,这是不合理的。本文提出 RTS(Random Temperature Scaling),将温度与不确定性关联,引入 Gumbel 分布设计新的损失函数(类似 softmax),通过随机温度缩放影响模型的不确定性。


15. 无偏教师:半监督目标检测

论文链接:De-biased Teacher: Rethinking IoU Matching for Semi-supervised Object Detection
代码:De-biased-Teacher

20240311001350

  • 有标签图像直接通过弱增强训练学生模型
  • 无标签图像由教师通过弱增强生成伪标签,学生通过强增强训练(一致性正则化)
  • 教师模型通过自身与学生模型的动量更新
  • 截断 softmax 尾部(阈值 0.05)

20231225202053


16. 分组知识蒸馏用于人脸识别

论文链接:Grouped Knowledge Distillation for Deep Face Recognition

L=Lcls+LkdL = \mathcal{L}_{cls} + \mathcal{L}_{kd}

将 logit 按阈值分组为三部分:

  • Primary-KD:学习主要知识
  • Secondary-KD:学习次要知识
  • Binary-KD:确保教师与学生知识分布的一致性(本质是二分类问题)

20231225210830

实验发现 Primary-KD 和 Binary-KD 是关键,Secondary-KD 贡献有限。最佳阈值为 0.93。

根据 student 输出排序后累加直到达到阈值的部分为 Primary-KD。作者实际代码中根据 teacher 排序,但实验表明根据 student 排序反而效果更好。

版权声明

除非另有说明,本文内容采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处。