Abstract
- 本文提出了 metric learning 结合 KD 的方法,使用成对的或者三个一组的训练样本使得 student 模型可以更加接近 teacher 模型的表现。
- metric learning 的目标是减小相似样本之间的距离而增大不相似样本之间的距离;这个思路应用到 KD 中,可以减小 teacher 网络和 student 网络的输出差距;由于对于不同目标,teacher 网络的输出有很大的差异,因此 student 网络应该去区分它们。
Introduction
- 在 metric learning 中,研究人员试图建立一个模型用来增大相似样本之间的相似度;具有代表性的 deep metric learning 是 Siamese Network 和 Triplet Network。这些都是学习,以便减少输出之间的欧几里得距离为相似的样本。另外,学习使得不同样本的输出之间的欧氏距离变大。也就是说,有一个函数可以阐明不相似的输出之间的差异。
- 模型尝试对于相同的目标得到相同的输出结果;并且对于不同的目标,能够清晰地分辨出他们之间的不同。有了这个特征,metric learning 模型在face vertification 和 re-identification 等领域表现得非常好。
- 本文提出:将 metric learning 的理念引入 KD 中,在 metric learning 中用来减小输出相似度差异的函数将被用在 KD 来减少 teacher model 和 student model 的输出之间的差异
Related works
Metric learning
- metric learning 是一种度量的学习嵌入(a method of learning embedding),这种方法建立在各种几何距离的基础上(欧氏距离,cosine 相似度),metric learning 应用领域广泛,包括:image search(图片搜索), biometric authentication(生物特征识别技术),abnormality detection(异常检测)
- 深度学习嵌入(deep learning embedding)的一个典型代表是 Siamese Neural Network。这个网络由两个完全相同的 network 组成;这两个网络的输出连在一起。
- 这两个网络从两个不同的样本中提取特征向量,通常,这两个网络的权值是进行共享的。将提取的特征向量定义为网络参数训练的优化目标函数:
-
D i j D_{ij} Dij 代表对于每一个 network,对于一对输入 x i x_i xi 和 x j x_j xj 的一对输出 f ( x i ) f(x_i) f(xi) 和 f ( x j ) f(x_j) f(xj) 之间的距离,这个距离被如下定义:
-
m m m 代表簇间距离(两个不同簇之间的距离)
-
χ 2 χ^2 χ2 代表的是在 mini-batch 中随机产生的 samples 中挑选出来的 成对的样本 的索引集合
-
l l l 代表对于每个成对样本,为他们分配的 label,例如 :当样本对 i i i 和 j j j 相似的时候,label l i j = 1 l_{ij}=1 lij=1;当不相似的的时候,label l i j = 0 l_{ij}=0 lij=0
-
- Siamese网络方案如图所示
- 经过Siamese网络的训练,不相似对输出之间的距离较远,相似对输出之间的距离较近。
- Siamese 网络只能两两考虑样本间的距离。由于这个原因,Siamese网络必须唯一地确定两样本间相似性的定义。例如,如果有两个不同的男性形象,在性别概念的情况下,他们应该被判定为相似。但是,就个人的概念而言,它们应被判定为不相似。在 Siamese 网络中表达这些多概念是很困难的。
- Wang et al. [9], Hoffer et al.[10]提出了三元组网络;三元组网络被设计用来学习从一个三元组的样本中嵌入,三个成分分别被称为“anchor”,“positive”和“negative”
- 三元组网络的学习原理是: anchor x a x_a xa 和 positive x p x_p xp 之间的距离,小于 anchor x a x_a xa 和 negative x n x_n xn 之间的距离
- Triplet Network 的 loss function 被定义如下:
- f ( ⋅ ) f(·) f(⋅) 代表的是模型的输出
- m m m 是代表簇间距的参数
- Θ \Theta Θ 是一个 anchor positive negative 样本索引的集合
- Triplet 网络通过学习使得 anchor-positive 之间的距离相对于 anchor-negative 之间的距离更近,因此,可以考虑多个相似的概念,而不依赖于一个相似的概念。也就是说:三元组网络可以克服 Siamese 网络的缺点。
knowledge distillation
-
Ba 等人提出的知识蒸馏(BKD)中的重要操作是使得 student 网络的 logits 输出尽可能地接近 teacher 网络的 logits 输出;一般用下面的定义来约束:
- t ( ⋅ ) t(·) t(⋅) 表示的是 teacher 网络输出的特征向量
- s ( ⋅ ) s(·) s(⋅) 表示的是 student 网络输出的特征向量
- χ χ χ 代表训练集
-
虽然这种通过 teacher 引导训练方式得到的 student 网络效果比只单纯地训练 student 网络的效果要好,但是人们不确定 teacher 的存在是否对 student 网络的训练有帮助
-
Hinton等人[5]提出训练学生模型,使教师模型的softmax输出(概率)与学生模型的softmax输出(概率)接近(这种 KD 方法称为 HKD)。他们使用两个模型的softmax输出的 K L KL KL 散度作为学生模型训练的损失。基于 K L KL KL 散度的损失定义为
- softmax 是 softmax 函数
- T T T 是温度参数,用来控制 logits 层的 soft 程度
-
K
L
KL
KL 是求 teacher 的 softmax 输出概率
p
i
p_i
pi 和 student 的 softmax 输出概率
q
i
q_i
qi 之间的
K
L
KL
KL 散度;散度公式定义如下:
-
他们认为,logits 上的的负值可能在某些情况下对学习产生积极影响,或者在某些情况下对学习产生消极影响。
-
近年来,人们提出了各种知识提炼的方法。 P a r k Park Park 等人[13]将教师模型输出之间的关系表示为两个输出之间的欧氏距离( R K D − D RKD-D RKD−D),并将其传递到学生模型中。它们将 t ( x i ) t(x_i) t(xi) 和 t ( x j ) t(x_j) t(xj) 这对输出之间的相似性表示为:
- χ 2 χ^2 χ2 代表从 mini-batch 中随机产生的 sample pairs 的集合
-
他们通过 H u b e r l o s s Huber loss Huberloss 对学生模型进行优化,使得学生模型输出与教师模型输出的相似度更接近。 R K D − D RKD-D RKD−D 的损失函数采用的相似度计算 ψ ( D ) \psi(D) ψ(D) 定义为
-
他们还使用三个输出形成的角度的余弦作为模型输出的相似性( R K D − A RKD-A RKD−A)
-
三个输出 t ( x i ) t(x_i) t(xi), t ( x j ) t(x_j) t(xj) 和 t ( x k ) t(x_k) t(xk) 的余弦被定义为:
-
R K D − A RKD-A RKD−A 的损失也用 H u b e r L o s s Huber Loss HuberLoss [14]定义为
- χ 3 χ^3 χ3 代表从 mini-batch 中随机产生的 三元组 sample pairs 的集合
-
他们还认为,在知识转移中同时使用角度和欧几里得距离( R K D − D A RKD-DA RKD−DA)进一步提高学生模型的性能。这种情况下的 loss 定义为:
-
R K D − D RKD-D RKD−D 、 R K D − A RKD-A RKD−A 或 R K D − D A RKD-DA RKD−DA 考虑了教师模型输出与学生模型输出之间的成对相似或三元组相似,Ba 's KD[4]或Hinton 's KD等知识蒸馏方法进行了点向迁移(point-wise transfer)[5];因此,知识蒸馏方法,如 R K D − D RKD-D RKD−D 、 R K D − A RKD-A RKD−A 或 R K D − D A RKD-DA RKD−DA 成功地实现了最好的实现效果
-
在知识蒸馏中 KD loss 通常有两个部分构成:
- 第一部分是 hard target loss, 是 ground-truth 标签和 student 网络预测标签之间的约束 loss
- 第二部分是 soft target loss,用来约束 teacher 产生的 soft target 和 student 产生的 soft target;
- λ λ λ 是用来调节这两个部分比重的超参数;对于多个 soft target loss 存在的情况,这个公式的形式也照样适用,例如,在 P a r k K D Park KD ParkKD 中,超参数 λ λ λ 以 λ R K D − D λ_{RKD−D} λRKD−D 和 λ R K D − A λ_{RKD−A} λRKD−A 的形式存在
Proposed method
- 利用 metric learning 的方法将教师模型的邻近关系嵌入到学生模型的输出空间中
- Triplet 是一种深度 metric 学习方法,是一种学习相似度和不同度的有效方法(公式(4)中定义)
- Triplet loss 对减小“anchor-positive”输出之间的距离以及对增大“anchor-negative”的输出距离有作用。我们把这种技术引入 KD 中,定义 KD 的 triplet loss 如下:
- t ( ⋅ ) t(·) t(⋅) 是 teacher 模型的输出, s ( ⋅ ) s(·) s(⋅) 是 student 模型的输出
- m m m 是 margin(边缘)
- x a x_a xa 是随机抽取的训练样本,
- m a x ( 0 , ⋅ ) max(0,·) max(0,⋅) 是**函数 R e l u Relu Relu
- 在 soft target 的情景下, x n x_n xn 是与 x a x_a xa 分类为不同类别的样本。
- Ω Ω Ω 是样本对应的索引的集合;因此,对于同一样本,教师模型和学生模型的输出分别被认为是 anchor 和 positive 的;同样的,我们考虑那些由 student 输出的不同于 positive 样本类的样本,称为 negative 样本
- 因为我们训练的是学生模型,所以教师模型的权重没有更新。即在训练过程中, t ( ⋅ ) t(·) t(⋅) 被视为一个常数。