# Difference between revisions of "hamming Distance Metric Learning"

## Introduction

This paper tries to propose a method to learn mappings from high dimensional data to binary codes. One of the main advantages of using binary space is that one can do exact KNN classification in sublinear time. Like other metric learning methods this paper also tries to optimize some cost function which is based one a similarity measure between data points. One choice of similarity measure in binary space is Euclidean distance which produces unsatisfactory results. Another choice is Hamming distance, which is the total number of positions at which the corresponding bits are different.

The task is to learn a mapping from b(x) that project p-dimensional real valued input x onto a q dimensional binary code while preserving some notion of similarity. This mapping, which is called hash function is parameterized by a matrix w such that:
$b(x,w)=sign(f(w,x))$

In a previous paper, the authors tried to used a loss function which bears some similarity to the hinge function used in SVM. It includes a hyper-parameter which is a threshold in Hamming space that differentiates neighbors from non-neighbors. such that similar points are mapped to binary codes that do differ in more than P bits and disimilar points should map to points closer no more than P bits. For two binary codes $h$ and $g$ with hamming distance $||h-g||_H$ and a similarity label $s \in {0,1}$ the pairwise hinge loss function is defined as:

$l_{pair}(h,g,\rho)= \begin{cases} [||h-g||_H-\rho+1]_{+} & for s=1(similar) \\ {[}\rho-||h-g||_H+1]_+ & for s=0(dissimilar) \end{cases}$

where ${[}\alpha]_{+}=max(\alpha,0)$ and $\rho$ is a threshold value that separates similar from dissimilar codes.

In practice finding value of $\rho$ is not easy. Moreover in some datasets the relative pairwise distance is important not the precise numerical value. As a result in this paper authors defined the loss function in terms of the relative similarity. To define relative similarity it is assumed that dataset include triplet of items $(x,x^+,x^-)$ such that $x$ is more similar to $x^+$ than $x^-$. With this assumption the ranking loss on triplet of binary codes $(h,h^+,h^-)$ is:

$L_{triple}(h,h^+,h^-)=[||h-h^+||-||h-h^-||+1]_+$

## Optimization

Given a training set of triplets, $D={(x_i,x_i^+,x_i^-)}_{i=1}^n$, the objective is to minimize the sum of ranking loss for all training samples and a simple regularizer on the vector of unknown parameters $w$:

$L(w)=\sum_{(x,x^+,x^-) \in D}l_{triple}(b(x,w),b(x^+,w),b(x^-,w))+\frac{\lambda}{2}||w||$
which is a discontinuous and non-convex function and optimization is not trivial. The discontinuity is because of the sign function and can be mitigated through construction of upper bound on the empirical loss. To do that one can rewrite function b as following
$b(x,w)=sign(f(x,w) = \underset{h\in H} {arg\,max} h^Tf(x,w)$

where $H=\{-1,+1\}^q$.

## Upper bound on empirical loss

The upper bound on loss has the following form:

$l_{triple}((b(x,w),b(x^+,w),b(x^-,w)) \leq max_{g,g^+,g^-}\{l_{triple}(g,g^+,g^-)+g^Tf(x,w)+g^{+^T}f(x^+,w)+g^{-^T}f(x^-,w)\}-max_h\{h^Tf(x,w)\}-max_{h^+}\{h^{+^T}f(x,w)\} -max_{h^-}\{h^{-^T}f(x,w)\}$

This upper bound is continuous and piece wise smooth in w as long as f is continuous in w. in particular when $f$ is linear in $w$. the bound becomes piecewise linear and convex.

To use the upper bond for optimization we should be able to find $(g,g^-,g^+)$ that maximizes the first term of the above equation. There $2^{3q}$ possible combinations for codes which makes this optimization challenging. However this optimization can be solved efficiently for the calss of triplet loss functions, such loss function do not depend on the specific binary codes, but rather the differences which can take only $2q$ values because it is an integer between $-q$ and $q$. and this optimization can be done in $O(q^2)$.

## Perceptron-like learning

Now to learn the efficient value for $w$ the authors used a stochastic gradient descent approach in which they first initialize $w^0$ randomly and then at iteration this value is updated by following algorithm: 1.Select a random triplet $(x,x^+,x^-)$ from dataset $D$

2.Compute $(\hat{h},\hat{h}^+,\hat{h}^-)=(b(x,w^t),b(x^+,w^t),b(x^-,w^t))$

3.Compute $(\hat{g},\hat{g}^+,\hat{g}^-)$

4.Update the model parameters using
$w^{t+1}=w^{t}+n[\frac{\partial f(x)}{\partial w}(\hat{h}-\hat{g})+\frac{\partial f(x^+)}{\partial w}(\hat{h}^+-\hat{g}^+)+\frac{\partial f(x^-)}{\partial w}(\hat{h}^--\hat{g}^-)-\lambda w^t]$

where $n$ is the learning rate and \frac{\partial f(x)}{\partial w} is the transpose of the Jacobian Matrix.