Supervised Matrix Factorization Hashing; SMFH を提案する. これは非負行列分解をクロスモーダルな問題に適用する.
非負値だけを取り扱う
について2つの行列 \(U,Y\) の積で近似する.
ここで
これらもやはり非負値を取ることにする.
近似 \(\simeq\) の意味は次のフロベニウス距離の最小化で表現する.
2つの異なるモーダルで \(X^1, X^2\) があるからそれぞれ行列分解したい. ここで \(Y\) だけ共有させたい. すなわち
次の目的関数を設定する.
この論文では特に \(Y\) が \(Y \in \{0,1\}^{r \times N}\) な binary code であるとして これをサンプル \(i \in N\) のハッシュとして利用したいそうだ. なのでここでは行列分解のことをハッシュ関数だと思ってる.
一つのサンプルが今2つのモダリティを持っていてそれぞれを \(x^1,x^2\) とする. 一つのサンプルは \(e=(x^1,x^2)\) . ハッシュ関数 \(\ell\) はこれを binary code に映す.
さてこれを教師付きでやりたい. それはすなわち, 2つの \(e_i, e_j\) については \(\ell(e_i)=\ell(e_j)\) であるようにしたいといったこと.
ハッシュどうしの距離としてハミング距離とする. 内積の大小が距離の大小の逆になる.
類似度の行列
この行列を教師として与えることにしてやる.
\(Y\) の列ベクトル \(Y_i, Y_j\) の距離が \(A_{i,j}\) になっているはずだから,
を考える. \(A\) を重みにして \(Y\) を近づける.
自明な解として \(Y=0\) があるのだが, 気にしないらしい. 次の行列分解に関する目的関数も含ませるのでそれで良いのとむやみに大きな値を持たせないようにする罰則項を兼ねてるのかも.
行列分解が出来ることにもして, 適当な重み \(\alpha\) を持たせて
これが最終的な目標関数.