optimized product quantiization笔记
论文链接:https://www.microsoft.com/en-us/research/wp-content/uploads/2013/06/cvpr13opq.pdf
先说一下乘积量化product quantiization:
积量化(PQ)是一种有效的矢量量化方法。乘积量化器可以以非常低的存储器/时间成本生成指数大的码本。 PQ的本质是将高维向量空间分解为子空间的笛卡尔乘积,然后分别量化这些子空间。
伪代码(看不懂没事下面有讲解):
个人理解:
将 x 分割成跟码本一样多的块。然后用一个矩阵R进行降维。对降维后的这个 x 叫做 x(head)对 码本也进行同样操作。更新码本,完成后 根据码本更新这个降维的矩阵R,互相更新以缩小距离真实点的欧式距离。
第一步: 固定矩阵R 更新码本
第二部 固定码本,更新矩阵R 使用码本作为正定矩阵进行SVD分解:
这里我再稍微说一下,为什么用svd的码本的特征矩阵作为正定矩阵。我们可以将特征值看作是伸缩,特征向量看作是旋转。使用vu作为正定矩阵,相当于是对这个码本映射进行旋转从而进行优化。
这就是一个ITQ(迭代量化的过程)感兴趣的可以看一下这篇文章ITQ
SVD具体流程可以参考svd分解