本發(fā)明涉及信息檢索與多媒體檢索,尤其是涉及基于混合向量量化的最近鄰搜索方法。
背景技術(shù):
最近鄰檢索在計算機很多領(lǐng)域都是被重點研究的問題。它在很多領(lǐng)域都起到基礎(chǔ)性作用,比如數(shù)據(jù)庫、機器學(xué)習(xí)、計算機視覺和信息檢索。最近鄰搜索問題可以被簡單定義如下:給定維度相同的查詢向量q和n個候選向量。目標是返回某種距離度量方式(通常是l1-距離或者l2-距離)下,在空間中距離查詢向量最近的那些候選向量。
可以通過線性搜索整個候選集來找到最近鄰。然而,線性搜索的時間復(fù)雜度是o(n·d)。盡管線性搜索的時間復(fù)雜度對維度和數(shù)據(jù)規(guī)模都是線性增長的,但是當維度和數(shù)據(jù)規(guī)模都增長的時候,其時間復(fù)雜度實際上是二次增長的。因此,在大規(guī)模地高維且稠密的向量空間里進行實時搜索幾乎是不可能的。在這種情況下,大部分的傳統(tǒng)方法,比如k-d樹、r-樹和局部敏感哈希(lsh)無法得到滿意的結(jié)果。
近幾年,基于向量量化的方法因其在高維數(shù)據(jù)上簡單的計算,顯著更低的空間消耗和不錯的結(jié)果,變得越來越受歡迎。代表性的方法有乘積量化子(pq)、加法量化子(aq)和組合量化子(cq)。pq把高維向量分解成幾段,每一段被一個量化子所量化,該量化子是從對應(yīng)的子空間里的子向量訓(xùn)練得到。最后,原始向量被幾段連接起來的單詞所近似,其中每一個單詞都是對應(yīng)子空間碼本中距離原始子向量最近的單詞。查詢向量和候選集向量的距離被近似為查詢向量在對應(yīng)子空間里的最近鄰的距離之和。不同于pq、aq和cq不把向量分解成段。它們用幾個與原向量同維度的單詞加和來表示原向量。這些單詞選自預(yù)先訓(xùn)練的碼本,每一個碼本至多選擇一個向量。與pq相似,查詢向量與候選集向量之間的距離被近似為查詢向量與這些被選擇的基本向量的距離的加和,并且借助查詢表來達到有效的距離計算。
量化方法的優(yōu)點包括兩個方面。一方面,候選集向量已經(jīng)被壓縮(通常內(nèi)存消耗會降低一個數(shù)量級),這使得將整個參照數(shù)據(jù)集可以被載入內(nèi)存。另一方面,通過查表來計算查詢向量與候選集向量之間的距離,速度非常快。然而,這些基于量化的方法里,都對被檢索的數(shù)據(jù)有一個隱含的假設(shè)??紤]到計算消耗,在量化的時候,只采用數(shù)目有限的單詞;因此,量化不能很好近似能量跨度很大的數(shù)據(jù)集。比如,給定向量[0.1,0.03,…]1*128和[55,122,…]1*128,它們的能量差異非常大。因為大的能量差,當前的方法可能只能很好近似表示其中一個向量,而不能有效近似另一個向量。當采用它們之中的任何一個做最近鄰搜索的時候,都不得不進行線性搜索,這使得這些方法難以應(yīng)用到大規(guī)模的搜索任務(wù)中。
技術(shù)實現(xiàn)要素:
針對以上問題,本發(fā)明的目的在于提供基于混合向量量化的最近鄰搜索方法。
本發(fā)明包括以下步驟:
1)混合向量量化的編碼方法:
給定一個向量v∈rd,對其前i階的余向量(第一階為向量本身)進行余向量量化,后面j階的每階余向量對其方向向量(歸一化后的向量)和能量分別編碼;假設(shè)i=2,j=2,則其編碼形式如下:
在公式(1)中,
在編碼中,設(shè)總的編碼階數(shù)為n,即n=i+j,則其中i由具體的問題確定,若待檢索的數(shù)據(jù)集很大,則i的值大;因為前面i階將用作生成倒排索引結(jié)構(gòu)的索引,i值越大所能生成的索引值越多,可以索引的數(shù)據(jù)量也越大;目的是把數(shù)據(jù)集盡量打散,保證每次最近鄰查詢都只訪問少量的候選向量;
2)基于低階余向量量化編碼的倒排索引結(jié)構(gòu):
(1)設(shè)采用四階編碼,即n=4,經(jīng)過步驟1),輸入向量q將編碼為c1c2c3h0c4h1;其中,c1c2為余向量量化后的編碼,這兩個編碼將合并作為倒排表的索引鍵值,即i=c1c2,而余下的編碼將存放在倒排表該索引鍵值所對應(yīng)的鏈表中;
(2)鏈表的每一項存放了候選向量的標記和余下的高階編碼,例如n=4情形下鏈表中每個候選項為<id,c3h0c4h1>。
3)基于層級剪枝的在線搜索策略:
(1)給定查詢點q,搜索過程首先計算查詢點q到每一個倒排索引鍵值的距離,這時需要把鍵值i拆分為c1和c2,c1和c2分別對應(yīng)第一階碼本中的向量
在公式(2)的計算中,為了加快計算速度,可以先算q到
(2)經(jīng)步驟(1)之后,查詢計算q到候選鏈表中每一個候選項的距離,計算的公式如下,注意到公式(2)的計算結(jié)果可以加入到公式(3)的計算中以加快計算速度:
(3)步驟(2)之后,查詢將獲得q到經(jīng)過混合編碼的候選向量的距離,查詢對距離排序,然后輸出。
本發(fā)明提出一種基于剩余向量量化(rvq)的方法,從編碼和索引結(jié)構(gòu)兩方面做出了改進。rvq是一種遞歸地量化上一步向量量化得到的殘差向量來逼近原始向量的方法。實驗觀察到,訓(xùn)練簡單的rvq與需要復(fù)雜訓(xùn)練的aq,cq和sq可以取得近似的結(jié)果。本發(fā)明將rvq進行了改進,使其適用于能量跨度很大的數(shù)據(jù)集。本發(fā)明中,向量和其殘差向量在量化之前,都會先被標準化得到向量的能量和單位方向向量,然后對單位方向向量和能量分別進行量化,本發(fā)明被命名為遞歸標準化向量量化(rnq)。
在本發(fā)明的倒排搜索結(jié)構(gòu)采用了一種混合rvq和rnq的編碼方式。也就是,低階的剩余向量采用rvq編碼,而高階的剩余向量采用rnq編碼。這種設(shè)計充分利用了rvq的低階編碼效率和rnq的低編碼誤差。在搜索時,低階的rvq碼被當作倒排索引鍵值。為了構(gòu)造有區(qū)分度的索引鍵值來加速搜索,做了一個關(guān)于rvq碼本設(shè)置的綜合性研究,發(fā)現(xiàn)在每一階上合理設(shè)置碼本的單詞數(shù)量可以降低編碼誤差;采用多階的單詞數(shù)目少的碼本得到的倒排表鍵值比用一階的單詞數(shù)目多的碼本構(gòu)造出來的編碼誤差更低;并且,多階倒排鍵值能很靈活的擴展到十億級別的數(shù)據(jù)集上。
附圖說明
圖1為mxq在低2階作倒排索引鍵值,高2階作rnq編碼。
圖2為mxq在sift1m數(shù)據(jù)集上與ivfpq,ivfrvq,imi的對比。
圖3為mxq在gist1m數(shù)據(jù)集上與ivfpq,ivfrvq,imi的對比。
具體實施方式
1)混合向量量化的編碼方法
給定一個向量v∈rd,對其前i階的余向量(第一階為向量本身)進行余向量量化,后面j階的每階余向量對其方向向量(歸一化后的向量)和能量分別編碼。假設(shè)i=2,j=2,則其編碼形式如下:
在公式(1)中,
在編碼中,設(shè)總的編碼階數(shù)為n,即n=i+j。則其中i由具體的問題確定。若待檢索的數(shù)據(jù)集很大,則i的值大。因為前面i階將用作生成倒排索引結(jié)構(gòu)的索引,i值越大所能生成的索引值越多,可以索引的數(shù)據(jù)量也越大,目的是把數(shù)據(jù)集盡量打散,保證每次最近鄰查詢都只訪問少量的候選向量。
2)基于低階余向量量化編碼的倒排索引結(jié)構(gòu)
(1)設(shè)采用四階編碼,即n=4,經(jīng)過1所述步驟,輸入向量q將編碼為c1c2c3h0c4h1。其中c1c2為余向量量化后的編碼。這兩個編碼將合并作為倒排表的索引鍵值,即i=c1c2。而余下的編碼將存放在倒排表該索引鍵值所對應(yīng)的鏈表中。
(2)鏈表的每一項存放了候選向量的標記和余下的高階編碼。例如n=4情形下鏈表中每個候選項為<id,c3h0c4h1>。
3)基于層級剪枝的在線搜索策略
(1)給定查詢點q,搜索過程首先計算查詢點q到每一個倒排索引鍵值的距離。這時需要把鍵值i拆分為c1和c2。c1和c2分別對應(yīng)第一階碼本中的向量
在公式(2)的計算中,為了加快計算速度,可以先算q到
(2)步驟(1)之后,查詢計算q到候選鏈表中每一個候選項的距離。計算的公式如下,注意到公式(2)的計算結(jié)果可以加入到公式(3)的計算中以加快計算速度。
(3)步驟(2)之后,查詢將獲得q到經(jīng)過混合編碼的候選向量的距離,查詢對距離排序,然后輸出。
圖1為本發(fā)明所提出的方法混合向量量化在低2階rvq編碼作倒排索引鍵值,高2階方向和能量分別編碼的圖示。
mxq在sift1m數(shù)據(jù)集上與ivfpq,ivfrvq,imi的對比參見圖2,mxq在gist1m數(shù)據(jù)集上與ivfpq,ivfrvq,imi的對比參見圖3,在mxq中,每一個數(shù)據(jù)的最低的2階用rvq編碼作為索引鍵值,高階余向量的能量和方向分開編碼。測試采用了國際通用的sift1m和gist1m數(shù)據(jù)集。檢索評價標準采用檢索結(jié)果的召回率。具體定義為,各個數(shù)據(jù)的最近鄰在返回結(jié)果中排的位置的平均值。
實驗過程中,ivfrvq和mxq作為倒排鍵值的第一階碼本大小設(shè)置為8192,第二階碼本大小設(shè)置為256;ivfpq只有一階碼本作為索引鍵值,該碼本的大小設(shè)置為8192;imi的兩個碼本的大小都設(shè)置為4096。ivfpq,ivfrvq和mxq減去倒排鍵值的余向量的碼本數(shù)目分別選取了4,8,16;而imi分別選取了8,16。
從圖2可以看到,mxq在大部分配置情況下召回率都是最高,特別是在gist1m數(shù)據(jù)集上,優(yōu)于其他所有方法。ivfrvq與mxq的編碼相似,但是mxq的結(jié)果優(yōu)于ivfrvq,說明將余向量的方向和能量分開編碼比rvq更有效。
ivfpq對應(yīng)的方法為h.jegou等人提出的方法(productquantizationfornearestneighborsearch,in:ieeetransactionsonpatternanalysisandmachineintelligence,2011,33(1):117-128.)
ivfrvq對應(yīng)的方法為y.chen等人提出的方法(approximatenearestneighborsearchbyresidualvectorquantization,in:sensors,vol.10,pp.11259-11273,2010.)
imi對應(yīng)的方法為a.babenko等人提出的方法(theinvertedmulti-index,in:computervisionandpatternrecognition(cvpr),2012ieee,2012:3069-3076.)
本發(fā)明公開一種基于混合向量量化的最近鄰檢索方法。該類方法與現(xiàn)有向量量化方法不同的是,它對低階余向量(一階為原向量)采用傳統(tǒng)余向量量化方式,而對高階余向量,將它的方向向量和能量分別量化。一方面,向量量化后的低階碼將用來生成倒排索引結(jié)構(gòu)的索引鍵值;另一方面,對每一高階余向量進行分解。把一個向量分解為方向向量和能量。對方向向量和能量分別量化。與其他已有的量化方法相比,該方法訓(xùn)練碼本以及量化過程都比目前的方法簡單,同時取得較好的編碼準確率。