Semantic Cluster Unary Loss for Efficient Deep Hashing

Semantic Cluster Unary Loss for Efficient Deep Hashing 论文阅读笔记。

image-20190306093423179

IEEE TIP 2018

本文提出了一个训练效率很高的半监督哈希方法,该方法提出了一个基于分类的一元损失。

  1. 提出了三元组损失的一元上界(Unary Upper Bound, UUB),将基于分类的一元损失与三元组损失连接起来。
  2. 提出了一个高效的有监督哈希算法,该算法通过 Semantic Cluster Unary Loss(SCUL) 进行训练,SCUL 是通过 UUB 修改得到的。SCUL 的时间复杂度只有 $O(n)$,所以能够大幅提升算法训练效率。
  3. 提出了一个结合 UUBMean Teacher(一个state-of-the-aet的半监督算法)的半监督哈希算法。

有监督哈希的一元上界

$n$ 个数据样本 ,哈希学习的目标是学习从数据到哈希码的映射:,其中 $r$ 是哈希码的长度。

三元组损失

给定训练数据 ,其中 是语义相似的, 语义不相似,最常见的一种三元组损失如下:

其中 是距离度量方式(如汉明距离), 是超参。

定义 $g(\cdot, \cdot)$ 是一个单调的,Lipschitz连续的函数,$g(\cdot, \cdot)$ 满足:

则更一般的,三元组损失可以被表示为:

此时,

假设 $S$ 是相似矩阵, 表示 相似,则哈希学习的目标是优化下面这个三元组损失函数:

其中 学到的哈希码。

三元组损失的一元上界

首先考虑每个样本只有一个语义标签的情况,令 $C$ 为语义标签的数目, 的标签,如果两个样本有相同的标签,则二者相似。

直觉上讲,同一类的样本的哈希码之间的差异应该尽可能小,而不同类样本之间的距离应该尽可能大。定义 $C$ 个辅助向量 ,其中每个向量对应一个语义标签,考虑三元组 ,其中 ,根据三角不等式,有:

上式给定了类内两样本距离的上界和类间两样本距离的下界。

根据函数 的性质,我们可以得到三元组损失的上界:

因此,三元组损失可以用哈希码与 $C$ 个辅助向量 的距离表示。

如果类别标签在样本中均匀分布,则有:

由于 无关,则有:

同理,有

因此 的上界为:

,则有:

可以认为是最大间距的多分类损失:

或者是 Softmax 损失:

一元上界和语义簇一元损失(SCUL)

从上式可以看出,UUB 的时间复杂度为 $O(n)$, 可以看做是 $C$ 个簇中心,每个簇对应一个语义标签。

然而,直接最小化 UUB 可能不够稳定,因为 UUB 中的 项在 UUB 中所占权重较大,为了满足 ,可能使得 收敛到 。为了解决这个问题,需要为 寻找更严格的一元上界,即:

其中, 。上式即为语义簇一元损失(SCUL)。

本文通过实验,在两个类别中进行测试,通过计算真实三元组损失,然后用 来估计 的取值,有下图 (a) 可以看出, 的值在整个过程中都很小,所以使用相对小的 的值可以得到 更严格的一元上界。

image-20190306145505687

多标签扩展

实际应用中,一个样本可能有多个标签,当两个样本有一定数目的相同的标签时,认为两个样本相似。

还是考虑语义标签平均分布的情况,即每个样本 拥有某个标签 的概率为 。当两个样本至少有一个标签相同时,认为他们相似,三元组损失定义为:

其中 表示 共有的标签数目。当两个样本共有的标签越多时,其相似度就越高。

表示样本 的标签,并且对任意 。则多标签三元组损失的一元上界的期望为:

其中 表示 包含的标签的数目,并且:

可以看做是多标签 Softmax 分类损失,即

关于多标签三元组损失一元上界的证明过程可以参见原论文附录部分。

同理,我们可以得到更一般化的一元上界的形式,即:

基于语义簇的深度哈希方法

模型

image-20190306155203178

模型中,fc7特征提取的最后一层,在fc7之后包含两条路径,一是经过两个全连接层,第一层是有 $r$ 个输出的哈希层,第二层有 $C$ 个输出, 是第二层的参数,即 个语义簇中心;第二条路径是通过 Softmax 分类的全连接层。

表示通过激活函数的哈希层的输出,则 即为哈希函数,

损失函数

,我们需要优化的 SCUL 为:

其中 为欧式距离,正如上文讨论的,此损失的训练复杂度为 $O(n)​$,并且与三元组损失有着理论关系。为了加快收敛,文中加入了分类损失 作为另一个损失项:

对于单标签问题,其中

对于多标签问题,上式中的 可以被替换为 在上文中有定义,为了简单起见,定义 是多分类 Softmax 损失。

量化损失

本文中没有使用传统的量化损失,通过限制 的范数,使 的值接近 +1/-1,而是采取策略令 远离 ,减少通过 sgn 函数得到的哈希码与 的差异。定义量化损失:

其中 ,根据赫尔德不等式,有 ,故

新的优化问题如下:

当 $p$ 较大时,更容易进行优化,本文中使用

优化

对于标签数目很多的大数据集,如 ImageNet,因为一开始训练时分类的概率比较小,会对反向传播造成影响,所以需要进行 warm-up 操作对语义簇中心矩阵 的范数进行限制,比如让其等于某个定值 , 来防止 变成

对于较小规模的数据集,虽然不需要进行 warm-up 操作,但是为了防止语义簇中心变成 ,一定要随机初始化使得其范数足够的大。

实验

详见论文

此时不赞何时赞!