发布于
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=BPexp(n=1Nwnlogpn)BLEU = BP \cdot exp(\sum_{n=1}^N w_n \log p_n)

其中 BP 为简短惩罚因子:

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

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

pn=n-gramCCountclip(n-gram)n-gramCCount(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/NNN 通常为 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σσ_Ni=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)(ci)+1{ci=}Lbox(bi,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))=λiouLiou(bi,b^σ(i))+λL1bib^σ(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[logp^σ^(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=12Nnoveli=1wj=1hk=1c(1maskijnovel)fijknovelfijkbase2\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^)+λfeatLkdfeat+λclsLkdcls\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;θ,μ)=1Mj=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)=1Mj=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;θ,ω)=1Mj=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(ωlLl(x^i1,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(1eβ)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 许可协议。转载请注明出处。