一.目标
数据集为:,每个样本为d维,每个样本为一个行向量。假设所有样本都是0均值的,即满足一下条件:
通过c个函数把每个样本x映射到一个二进制超立方体的一个顶点上,其中
是一个列向量。因此得到每个样本x在二进制超立方体上的二进制编码,编码长度c,用矩阵表示描述这个过程就是:
其中sgn函数是对矩阵的元素级操作,得到的是同样大小的矩阵。ITQ的目标就是学习一个编码矩阵:。
二.算法推导过程
在应用ITQ算法之前要对数据做PCA降维,把数据从d维降到c维,编码时编码长度就是c维。
什么样的二进制编码才是好的编码呢?所有位(总共c位编码)上编码的结果要满足编码为-1(实际上使用的是0而不是-1)和1的样本数相等且各位上编码应该是不相关的(否则出现编码冗余了)。而编码0和1的样本数相等等价于编码值的方差最大。即:
但是上式中含有sng(xw)函数不好处理,于是采用一种signed magnitude relaxation技术,将上式化为:
这样就讲一个离散的目标函数转化为一个连续的目标函数。这个式子跟PCA的目标式很像。就是样本的协方差矩阵。因此,要找到协方差矩阵的前c个特征值对应的特征向量作为W。
另外,假设实数空间中一个点v是样本点x乘以W投影后得到的投影空间中一个点,在欧式距离的测度下,v到超平面立方体
上最近的点就是超立方体的一个顶点
。因此,二值量化的目标函数是最小化这个距离
。于是使用等式替换V=XW,sgn(V)=B,二值量化误差目标式可以化为:
由于迹具有性质,因此如果W是(1)的解,那么WR也是(1)的解。于是目标式可以变为:
目标式中使用的是F范数,即矩阵各元素的平方和再开根号。
但是Jegou et al发现不使用正交矩阵R,而仅仅使用一个随机旋转矩阵R也取得了很好的结果,而找一个随机旋转矩阵R要比找正交矩阵简单得多。
三.推导步骤
1.降维。
在上述推导的指导下,先将数据从d维降到c维,然后使用RR(random rotate)方法找个旋转矩阵R,大小为c*c(实际中可以先随机生成一个矩阵,然后做SVD分解,用S作为旋转矩阵),右乘到降维后的数据V,最小化目标式(2)求得一个粗糙解。下面开始应用ITQ算法迭代新R,使得目标式(2)的值减少。
2.固定R,更新B。
从上面可以看到最小化(3)式等价于最大化,其中
。当
时更新
,否则更新
为0。
3.固定B,更新R。
当B固定时求解这个(2)目标式的最小值就是一个Orthogonal Procrustes problem。于是,先对矩阵做SVD分解为
,更新R使得
。
4)分支判断。
迭代次数是否达到50次,如果没有,则回到第2步;如果达到了,就结束循环。计算最后得到的编码就是sgn(XWR),大小为n*c。
参考文献:
1.Gong Y, Lazebnik S. Iterative quantization: A procrustean approach to learning binary codes[C]//Computer Vision and Pattern Recognition (CVPR), 2011 IEEE Conference on. IEEE, 2011: 817-824.
(转载请注明作者和出处:http://blog.youkuaiyun.com/CHIERYU 未经允许请勿用于商业用途)