Supervised Discrete Hashing

REF https://wendellgul.github.io/research%20note/2018/09/09/Supervised-Discrete-Hashing/

Supervised Discrete Hashing(SDH)论文阅读笔记。

CVPR 2015

本文提出了一个有监督的哈希学习框架,旨在快速且高效地对二进制哈希码直接进行优化。为了利用监督标签信息,本文设计了一个分类框架进行哈希学习,即希望学到的哈希码能够获得更高的分类精度。哈希码相当于数据的特征,将源数据通过非线性转化到二值空间,然后在此空间下进行分类。

为了实现上述的框架,本文将二值特征学习和线性分类器联合起来进行优化。为了能更好的获得数据的非线性结构特征,哈希函数的学习在核空间下进行。整个的优化过程以迭代的方式进行,分为三个相互关联的子问题

为了解决最复杂的子问题,即二值优化问题,本文提出了 discrete cyclic coordinate descent(DCC) 算法来一位一位(bit by bit)的生成哈希码。通过选择合适的分类损失函数,DCC 算法可以返回最优哈希码的闭合解,使得优化过程变得更加高效。

SDH的关键技术在于直接解决没有经过任何松弛操作离散优化问题。首先引入了一个辅助变量,将目标函数转化成可以以正则化项的形式解决的问题;然后使用DCC算法解决二值优化问题。

SDH

  • \(n\) 个样本 \[\mathbf{X} = \lbrace \mathbf{x}_i\rbrace_{i=1}^n\]

  • 学习二值表示 \[\mathbf{B} = \lbrace \mathbf{b}_i\rbrace_{i=1}^n \in \lbrace-1, +1 \rbrace^{L \times n}\]

学到的二值表示能够保留数据的语义关联,其中第 \(i\)\(\mathbf{b}_i\) 是数据 \(\mathbf{x}_i\) 的二值表示,长度为 \(L\)

为了利用标签信息,将二进制码的学习问题转化成线性分类问题,希望学到的二值表示使得分类结果达到最优。

定义如下的多分类公式:

\[ \mathbf{y} = G(\mathbf{b}) = \mathbf{W}^T\mathbf{b} = [\mathbf{w}_1^T\mathbf{b},\cdots,\mathbf{w}_C^T\mathbf{b}] \]

其中 \(\mathbf{w}_k \in \mathbb{R}^{L\times 1},k=1,\cdots,C\) 是类别 \(k\) 的分类向量,\(\mathbf{y}\in \mathbb{R}^{C \times 1}\) 是标签向量。

目标函数如下:

\[ \min_{\mathbf{B}, \mathbf{W}, F} \sum_{i=1}^n \mathcal{L}(\mathbf{y}_i, \mathbf{W}^T\mathbf{b}_i) + \lambda \|\mathbf{W}\|^2 \\ {\rm s.t.}\quad \mathbf{b}_i = {\rm sgn}(F(\mathbf{x}_i)),i=1,\cdots,n \]

  • \(\mathcal{L}(\cdot)\) 损失函数
  • \(\lambda\) 正则项系数
  • \[\mathbf{Y} = \lbrace \mathbf{y}_i\rbrace_{i=1}^n \in \mathbb{R}^{C\times n}\] 实际标签矩阵

在上式中,可以将 \(\mathbf{b}_i\) 替换来消除约束,但是这样做使得优化问题变得更加复杂。一些方法通过先学习 \(F(\mathbf{x})\) 的方法,来学习 \(\mathbf{b}_i\) 的实值表达,然后通过阈值函数转换为二值表达,这样做可以使得原问题更容易得到解决,但是最后的结果并不是最优解。

为了得到更高质量的二进制表达,将上述问题转化如下:

\[ \min_{\mathbf{B}, \mathbf{W}, F} \sum_{i=1}^n \mathcal{L}(\mathbf{y}_i, \mathbf{W}^T\mathbf{b}_i) + \lambda\|\mathbf{W}\|^2 + \nu \sum_{i=1}^n \|\mathbf{b}_i - F(\mathbf{x}_i)\|^2 \qquad (3)\\ {\rm s.t.}\quad \mathbf{b}_i \in \{-1, +1\}^L \]

上式中最后一项用来建模二进制码 \(\mathbf{b}_i\) 与其实值表达 \(F(\mathbf{x}_i)\) 之间的误差,\(\nu\) 是惩罚因子。理论上,当 \(\nu\) 足够大时,上式即接近原优化问题。

容易看出,上式是非凸的并且难以求解,但是当制定合适的损失函数时,上式是可以迭代的求解的。

\(\mathbf{b}_i\) 的非线性映射

本文使用一个简单但是有效的非线性变换,如下所示:

\[ F(\mathbf{x}) = \mathbf{P}^T\phi(\mathbf{x}) \]

其中 \(\phi(\mathbf{x})\) 是一个 \(m\) 维的列向量,由 RBF 核函数映射得到:

\[ \phi(\mathbf{x}) = [\exp(-\frac{\|\mathbf{x} - \mathbf{a}_1\|^2}{\sigma}),\cdots,\exp(-\frac{\|\mathbf{x}-\mathbf{a}_m\|^2}{\sigma})]^T \]

其中 \[\lbrace \mathbf{a}_j \rbrace_{j=1}^m\] 是从训练样本中随机挑选的 \(m\) 个样本,\(\sigma\) 是核的宽度,\[\mathbf{P} \in \mathbb{R}^{m\times L}\]\[\phi(\mathbf{x})\] 映射到低维空间,

F-Step

将(3) 中 \(\mathbf{B}\) 固定,\(\mathbf{P}\) 可以由下式计算:

\[ \mathbf{P} = (\phi(\mathbf{X})\phi(\mathbf{X})^T)^{-1}\phi(\mathbf{X})\mathbf{B}^T \qquad (5) \]

这一步与损失函数无关。

使用 \(l_2\) 损失

  1. 是写为:

\[ \min_{\mathbf{B}, \mathbf{W},F} \sum_{i=1}^n\|\mathbf{y}_i - \mathbf{W}^T\mathbf{b}_i\|^2 + \lambda\|\mathbf{W}\|^2 + \nu\sum_{i=1}^n\|\mathbf{b}_i - F(\mathbf{x}_i)\|^2 \\ {\rm s.t.} \quad \mathbf{b}_i \in \{-1, +1\}^L \]

\[ \min_{\mathbf{B}, \mathbf{W},F} \|\mathbf{Y} - \mathbf{W}^T\mathbf{B}\|^2 + \lambda\|\mathbf{W}\|^2 + \nu\|\mathbf{B} - F(\mathbf{X})\|^2 \\ {\rm s.t.} \quad \mathbf{B} \in \{-1, +1\}^{L\times n} \]

G-Step

对于上式,当\(\mathbf{B}\) 固定时,能够很容易求得 \(\mathbf{W}\) 的闭合解:

\[ \mathbf{W} = (\mathbf{B}\mathbf{B}^T + \lambda \mathbf{I})^{-1}\mathbf{B}\mathbf{Y}^T \qquad (8) \]

B-Step

当除 \(\mathbf{B}\) 以外的其他参数都固定时,由于 \(\mathbf{B}\) 的离散性,求得 \(\mathbf{B}\) 的值很难。将原问题写为:

\[ \min_{\mathbf{B}} \|\mathbf{Y} - \mathbf{W}^T\mathbf{B}\|^2 + \nu \|\mathbf{B} - F(\mathbf{X})\|^2 \\ {\rm s.t.} \quad \mathbf{B} \in \{-1, +1\}^{L \times n} \]

上式的求解问题是 NP 难度的,但是当 \(\mathbf{B}\) 中的其他列固定时,\(\mathbf{B}\) 中的每一列都有一个封闭解。将上式重写为:

\[ \begin{align} \min_{\mathbf{B}} \quad&\|\mathbf{Y}\|^2 - 2{\rm Tr}(\mathbf{Y}^T\mathbf{W}^T\mathbf{B}) + \|\mathbf{W}^T\mathbf{B}\|^2 +\\ \nu(&\|\mathbf{B}\|^2 - 2{\rm Tr}(\mathbf{B}^TF(\mathbf{X})) + \|F(\mathbf{X})\|^2) \\ {\rm s.t.}\quad &\mathbf{B} \in \{-1,1\}^{L \times n} \end{align} \]

等价于:

\[ \min_\mathbf{B} \|\mathbf{W}^T\mathbf{B}\|^2 - 2{\rm Tr}(\mathbf{B}^T\mathbf{Q}) \\ {\rm s.t.} \quad \mathbf{B}\in \{-1, 1\}^{L\times n} \]

其中 \(\mathbf{Q} = \mathbf{WY} + \nu F(\mathbf{X})\)

本文使用 DCC 方法学习 \(\mathbf{B}\),即一位一位地学习 \(\mathbf{B}\) 。令 \(\mathbf{z}^T\) 表示 \(\mathbf{B}\) 的第 \(l\)\(l=1,\cdots,L\))列,\(\mathbf{B}'\) 表示矩阵 \(\mathbf{B}\) 除去 \(\mathbf{z}\) 的子矩阵,其他符号(\(\mathbf{q},\mathbf{Q}'\)\(\mathbf{v}, \mathbf{W}'\))的定义与之类似,则有:

\[ \begin{align} \|\mathbf{W}^T\mathbf{B}\|^2 &= {\rm Tr}(\mathbf{B}^T\mathbf{WW}^T\mathbf{B}) \\ &=const + \|\mathbf{zv}^T\|^2 + 2\mathbf{v}^T\mathbf{W}'^T\mathbf{B}'\mathbf{z} \\ &=const + 2\mathbf{v}^T\mathbf{W}'^T\mathbf{B}'\mathbf{z} \end{align} \]

其中

\[ \|\mathbf{zv}^T\|^2 = {\rm Tr}(\mathbf{vz}^T\mathbf{zv}^T) = n\mathbf{v}^T\mathbf{v} = const \]

同样的,有

\[ {\rm Tr}(\mathbf{B}^T\mathbf{Q}) = const + \mathbf{q}^T\mathbf{z} \]

将上面的式子结合起来,得到

\[ \min_\mathbf{z}(\mathbf{v}^T\mathbf{W}'^T\mathbf{B}' - \mathbf{q}^T)\mathbf{z} \\ {\rm s.t.} \quad \mathbf{z} \in \{-1,1\}^n \]

这个问题有最优解:

\[ \mathbf{z} = {\rm sgn}(\mathbf{q} - \mathbf{B}'^T\mathbf{W}'\mathbf{v}) \qquad (15) \]

使用hinge损失

损失函数为:

\[ \begin{align} \min_{\mathbf{B}, \mathbf{W}, F, \xi} \quad &\lambda\|\mathbf{W}\|^2 + \sum_{i=1}^n \xi_i + \nu \sum_{i=1}^n\|\mathbf{b}_i-F(\mathbf{x}_i)\|^2 \\ {\rm s.t.}\quad &\forall i,k\quad \mathbf{w}_{c_i}^T\mathbf{b}_i + y_{ki} - \mathbf{w}_k^T\mathbf{b}_i \ge 1-\xi_i,\\ & \mathbf{b}_i \in \{-1,1\}^L \end{align} \]

其中 \(c_i\)\(\mathbf{x}_i\) 的标签。

G-Step

\(\mathbf{B}\) 固定时,\(\mathbf{W}\) 可由多分类 SVM 解决方法求得。

B-Step

当除 \(\mathbf{B}\) 以外的其他参数固定时,原问题写为:

\[ \begin{align} \min_{\mathbf{b}_i} \quad &\|\mathbf{b}_i-F(\mathbf{x}_i)\|^2 \\ {\rm s.t.}\quad &\forall i,k\quad \mathbf{w}_{c_i}^T\mathbf{b}_i + y_{ki} - \mathbf{w}_k^T\mathbf{b}_i \ge 1-\xi_i,\\ & \mathbf{b}_i \in \{-1,1\}^L \end{align} \]

上式中的约束可以写为:

\[ \begin{align} & \forall i,k\quad \mathbf{w}^{(ki)T}\mathbf{b}_i + y^{(ki)} \le 0,\\ & \mathbf{w}^{(ki)} = \mathbf{w}_{c_i} - \mathbf{w}_k, \\ & y^{(ki)} = y_{ki}-1+\xi_i \end{align} \]

带入原问题中,得:

\[ \min_{\mathbf{b}_i} \|\mathbf{b}_i - F(\mathbf{x}_i)\|^2 - \delta\sum_{k=1}^C(\mathbf{w}^{(ki)T}\mathbf{b}_i + y^{(ki)})\\ {\rm s.t.}\quad \mathbf{b}_i \in \{-1,1\}^L \]

这里 \(\delta = 1/\nu\)

上式可以转化为:

\[ \max_{\mathbf{b}_i} \mathbf{b}_i^T(F(\mathbf{x}_i) + \frac \delta 2 \sum_{k=1}^C \mathbf{w}^{(ki)}) \\ {\rm s.t.} \quad \mathbf{b}_i \in \{-1, 1\}^L \]

该问题的最优解为:

\[ \mathbf{b}_i = {\rm sgn}(F(\mathbf{x}_i) + \frac \delta 2 \sum_{k=1}^C \mathbf{w}^{(ki)}) \qquad (22) \]

SDH 算法如下所示:

实验

详见论文。