k* 再生值?
k* reproduction values?
我正在阅读 PQ for NNS 第 II.A 部分第 3 页中有关产品量化的内容,上面写着:
..all subquantizers have the same finite number k* of reproduction values. In that case the number of centroids is (k*)^m
其中 m
是子向量的数量。
然而,我根本没有得到k*!我的意思是在矢量量化中,我们将每个矢量分配给 k 个质心。在产品量化中,我们将每个子向量分配给 k 个质心。 k* 是如何发挥作用的?
我认为k*
是每个子的质心数space,k
是整体的质心数space。
例如,如果数据是 2d,如 (x, y)
,我们将每个维度视为一个子space,并分别用 say k*=3
进行 kmeans,我们将得到每个子 space、{x1, x2, x3}
和 {y1, y2, y3}
.
中有 3 个质心
那么整个space就有3^2=9
个可能的质心,分别是*(x1, y1)
,(x1, y2)
, (x1, y3)
, (x2, y1)
...
通过这种方式我们可以使用少量内存获得大量质心(论文中的2^64
),因为我们不必存储所有k*^m
个质心,我们只需要在每个子space.
中存储k*
个质心
编辑:
在上面的例子中,子spaces的数量m=2
,每个子的质心数space k*=3
,整个子的质心数space k=3^2
,每个子的维数space D*=1
,要存储的浮点数mD*k*=Dk*=6
。
*x 和 y 的笛卡尔积
我正在阅读 PQ for NNS 第 II.A 部分第 3 页中有关产品量化的内容,上面写着:
..all subquantizers have the same finite number k* of reproduction values. In that case the number of centroids is (k*)^m
其中 m
是子向量的数量。
然而,我根本没有得到k*!我的意思是在矢量量化中,我们将每个矢量分配给 k 个质心。在产品量化中,我们将每个子向量分配给 k 个质心。 k* 是如何发挥作用的?
我认为k*
是每个子的质心数space,k
是整体的质心数space。
例如,如果数据是 2d,如 (x, y)
,我们将每个维度视为一个子space,并分别用 say k*=3
进行 kmeans,我们将得到每个子 space、{x1, x2, x3}
和 {y1, y2, y3}
.
那么整个space就有3^2=9
个可能的质心,分别是*(x1, y1)
,(x1, y2)
, (x1, y3)
, (x2, y1)
...
通过这种方式我们可以使用少量内存获得大量质心(论文中的2^64
),因为我们不必存储所有k*^m
个质心,我们只需要在每个子space.
k*
个质心
编辑:
在上面的例子中,子spaces的数量m=2
,每个子的质心数space k*=3
,整个子的质心数space k=3^2
,每个子的维数space D*=1
,要存储的浮点数mD*k*=Dk*=6
。
*x 和 y 的笛卡尔积