PQ 论文学习

论文名称《Product quantization for nearest neighbor search》

摘要

论文介绍了一种叫做乘积量化(Product quantization,PQ)的方法实现近似的最近邻检索。主要的思想是将数据进行切分,分块进行量化,然后在笛卡尔空间内计算各块量化结果的积得到整个数据数据的量化结果。并且作者提供了对称距离计算(SDC)和非对称距离计算(ADC)进行距离的比较,实验表明了ADC的准确率更高;作者进一步将ADC与反向文件系统进行结合实现了IVFADC的快速检索算法。

简介

在很多应用中都需要计算高维向量之间的欧氏距离,也就是最近邻检索。

常用的最近邻检索方法有KD树、Hash方法,但是KD树在特征维度比较高时效率并不优于简单的循环比对,算法的复杂度依然是O(nD)。

Hash的方法了解的不太多,2个开源工具FALCONN和NMSLIB。

理论知识

向量量化

向量量化的目的在于降维,量化的过程就是定义一个量化函数 q 将输入向量xRD映射成向量 q(x)C={ci;iI} , I=0,,k1 , ci 叫做类中心, C 就表示大小为k的码书。Vi表示对应于索引i的cell, Vi={xRD:q(x)=ci} ,属于同一个 Vi 中的所有向量都可以从 ci 中重建。

量化会带来误差,平均一个量化器优劣的标准是 MSE(q)=EX[d(q(x),x)2] =p(x)d(q(x),x)2dx ,其中 d(x,y)=||xy|| 就是向量x和y之间的欧氏距离。

为了获取最有的量化器,就需要满足Lloyd最优化条件,首先,向量x必须量化到和它距离最近类中心;第二个条件是重建结果是属于一个Voronoi Cell的向量集的期望。一般都是用k-means方法来进行量化,首先随机制定几个中心位置,将向量集中的每个向量分配到离它最近的类中心,然后再重新计算分配后的类中心的位置,迭代,得到最优化的分配结果。

由于量化之后的类中心个数一共是k个,所以每一个向量构建的索引的长度为 log2k ,一般情况下k为2的整数次幂。

乘积量化

参考了 http://blog.csdn.net/CHIERYU/article/details/50321473

乘积量化是对普通向量量化的优化。
对于128维的向量,一个普通的量化器产生64bits的code,那么类中心的个数为 264 ,那么训练一个k-means需要的样本上为k的数倍,这么多的样本很难获取,同时即便是存储表示k个类中心的D*k(D是向量的维度)个浮点数也需要非常大的存储空间,因此实际应用中很难实现。

乘积量化是将向量分为独立的 m 个子向量,每个子向量的长度为D=D/m,子向量使用 m 个量化器进行单独的量化。一般情况下D m 的整数倍。

qj是和第 j 个子向量关联的量化器,得到索引Ij和码书 Cj 。那么对于整个向量而言,索引就是所有子索引的乘积,整个向量的码书也就是各子向量码书的笛卡尔积 C=C1Cm 。假设每一个子量化器都有 k 个类中心,那么整个向量的量化类中心数为 k=(k)m .PQ算法的复杂度是使用k-means算法学习长度为 D 、具有 k 个类中心的的子向量的m倍。PQ算法不需要存储所有的码书,只是存储 mk 个类中心,由于每一个类中心都是 D 维的,所以一共需要存储 mDk=kD 个浮点数。PQ算法的内存占用和算法复杂度远低于K-means算法。

PQ算法中 m k是两个可以调节的参数,调整的目的是是的整个量化过程的MSE最小。每一个子向量量化完成后有 k 个类中心,那么长度就是 log2k 个bit,m个子向量,所以量化完成后每一个向量共有 mlog2k 个bit。

作者实验表明了 m,k 与MSE之间的关系,如下图所示:
这里写图片描述
m固定时, k 越大,MSE越小,但所需的存储空间和计算复杂度越大。 m=8,k=256 是一组通常比较合理的参数设置。

量化后的检索

参考了 http://blog.csdn.net/CHIERYU/article/details/50347735

检索分为了两种ADC和SDC两种方式,如下图所示:
这里写图片描述

SDC就是计算两个向量都量化后的码之间的差值,ADC则是计算未量化的x向量和量化后的y向量之间的差值。

ADC方法的距离误差上限就是量化器的MSE(q),但SDC的距离误差上限为2*MSE(q),同时SDC需要更多的计算过程,因此ADC更加适用。

检索的具体实现

使用IVFADC算法进行向量在大数据集中的最近邻匹配的查找。整个过程分为了构建索引和查询两个过程。如下图所示:
这里写图片描述

下面的内容转载自:http://blog.csdn.net/CHIERYU/article/details/50347735

构建索引的过程主要分为上图中主要涉及三个过程,coarse quantizer,product quantizer和append to inverted list。

  1. coarse quantizer。
    对数据库中的所有特征采用K-means聚类,得到粗糙量化的类中心,比如聚类成1024类,并记录每个类的样本数和各个样本所属的类别。这个类中心的个数就是inverted list的个数。把所有类中心保存到一张表中,叫coarse_cluster表,表中每项是d维。
  2. product quantizer
    计算y的余量,这里写图片描述,用y减去y的粗糙量化的结果得到r(y)。r(y)维数与y一样,然后对所有r(y)的特征分成m组,采用乘积量化,每组内仍然使用k-means聚类,这时结果是一个m维数的向量,这就是上篇文章中提到的内容。把所有的乘积量化结果保存到一个表中,叫pq_centroids表,表中每项是m维。
  3. append to inverted list
    前面的操作中记录下y在coarse_cluster表的索引 i ,在pq_centroids表中的索引j,那么插入inverted list时,把(id,j)插入到第i个倒排索引Li中,id是y的标识符,比如文件名。list的长度就是属于第i类的样本y的数目。处理不等长list有些技巧。

检索的过程主要包括四个操作:

  1. 粗糙量化
    对查询图像x的特征进行粗糙量化,即采用KNN方法将x分到某个类或某几个类,分到几个类的话叫做multiple assignment。过程同对数据集中的y分类差不多。
  2. 计算余量
    计算x的粗糙量化误差 r(x)=xqc(x)
  3. 计算d(x,y)
    对r(x)分组,计算每组中r(x)的特征子集到pq_centroids的距离。根据ADC的技巧,计算x与y的距离可以用计算x与q(y)的距离,而q(y)就是pq_centroids表中的某项,因此已经得到了x到y的近似距离。
  4. 最大堆排序
    堆中每个元素代表数据库中y与x的距离,堆顶元素的距离最大,只要是比堆顶元素小的元素,代替堆顶元素,调整堆,直到判断完所有的y。
    这里写图片描述

multiple assignment:
这里写图片描述

如上图所示,x与y都分到了1这个voronoi包,如果不采用multiple assignment方法,则只会在voronoi包1中搜索与x接近的y,明显voronoi包2,voronoi包3中与x更近的y不会被检索到,采用multiple assignment的方法,在x的w个最近粗糙类中心中搜索y,那么准确率就提高了。但这要求遍历w个list,费内存和时间,是以牺牲空间和时间换准确率。

PQ算法的高效实现可以参考:https://github.com/facebookresearch/faiss

### 回答1: 三电平逆变器是一种新型的逆变器拓扑结构,由于采用了更高的电平,使得输出波形更加接近正弦波,提高了质量,减少了谐波。而PQ控制算法是控制逆变器输出的一种常见方法,通过不断调节逆变器输出电流和电压的相位和幅值,实现对输出波形的控制。 在三电平逆变器中,PQ控制可以实现对输出电流和电压的准确控制,使得输出波形更接近正弦波形。此外,在电力电子领域,PQ控制也被广泛应用于并联式逆变器和无刷直流电机驱动器等多种设备中。CSDN是一家IT技术社区,其中有很多关于电力电子领域和三电平逆变器PQ控制方面的技术文章和论文展示,可以作为学习和研究的参考资料。 总之,三电平逆变器和PQ控制算法的结合是实现高质量输出波形的重要手段,同时也是电力电子领域的热门研究方向。在今后的工作和研究中,我们可以继续学习和探讨这一领域的相关知识,不断提高自己的技能和能力,为行业的发展做出更大的贡献。 ### 回答2: 三电平逆变器是一种高性能电源电压逆变器,它具有输出波形质量高、效率高、适用范围广等优点。而PQ控制是一种基于瞬时有功和瞬时无功理论的控制方法,它能够实现电力电子器件的高精度控制和优化运行。通过将三电平逆变器和PQ控制相结合,可以实现更加高效、可靠和稳定的电力转换,满足各种工业和民用电力应用的需求。 三电平逆变器的主要特点包括三电平结构、零电压开关技术、电流采样反馈控制等。其中,三电平结构是指逆变器中的主电路拓扑结构由两组反向开关阵列组成,使得输出波形更加接近正弦波形,减小了输出谐波。零电压开关技术可以减少开关器件的损耗,提高了逆变器的效率。电流采样反馈控制则能够提高逆变器的输出精度和响应速度,保证了系统的稳定性。 PQ控制则是一种针对电力器件运行的控制方法,它采用瞬时有功和瞬时无功理论,实现了电力器件的精细控制和优化运行。它可以实现对逆变器输出电压、电流、有功功率、无功功率等参数的实时监测和控制。通过PQ控制,可以实现逆变器的高效、可靠和稳定运行,达到更好的电力转换效果。 因此,三电平逆变器PQ控制的相结合可以为电力转换领域提供高性能、高效率、高精度的电源方案,满足各种应用需求,具有广阔的市场前景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值