基于譜哈希的相似性存儲設計方法
【技術領域】
[0001] 本發(fā)明涉及存儲和機器學習技術領域,具體涉及一種基于譜哈希的相似性存儲設 計方法。
【背景技術】
[0002] 譜哈希(Spectral Hashing,SH)通過對樣本數(shù)據(jù)集合進行訓練獲得一個相應的哈 希函數(shù),然后利用此函數(shù)對高維數(shù)據(jù)點進行降維生成低維二進制數(shù)據(jù)。譜哈希不僅可提高 查詢效率,而且在漢明空間中所計算樣本距離與原始高維空間所計算樣本距離能保持一 致。譜哈希在近似搜索降低哈希比特方面比其他哈希方法,比如局部敏感哈希(Locality-Sensitive Hashing,LSH)方法更優(yōu)秀。
[0003] -般哈希桶定義是指原始空間數(shù)據(jù)通過某種哈希方法被映射到相對應的桶中,每 個哈希桶包含的是哈希值相同的原始數(shù)據(jù)。若把通過譜哈希得到的哈希桶作為存儲單元作 相似性存儲,由于沒有對桶做負載均衡處理,容易造成存儲系統(tǒng)中某個節(jié)點負載過大,沒有 實現(xiàn)數(shù)據(jù)分布式存儲,這樣對數(shù)據(jù)查詢時容易消耗大量系統(tǒng)帶寬,嚴重影響系統(tǒng)的性能。
【發(fā)明內容】
[0004] 鑒于以上技術中的不足之處,本發(fā)明提出一種基于譜哈希的相似性存儲設計方 法,保證相近的節(jié)點服務器中包含相似原始空間數(shù)據(jù),以解決相似性查詢時系統(tǒng)查詢開銷 過大問題。
[0005] 基于譜哈希的相似性存儲設計方法,其特征在于,包括
[0006] 步驟1、通過對數(shù)據(jù)集進行學習并且訓練得到譜哈希的映射函數(shù),然后將高維原始 數(shù)據(jù)項u作為映射函數(shù)的輸入項,計算出每個數(shù)據(jù)項的k維二進制哈希編碼V,把具有相同哈 希編碼的數(shù)據(jù)項放入同一個哈希桶中,V作為相應哈希桶的桶編號;
[0007] 步驟2、根據(jù)哈希桶編號V計算每個哈希桶在Chord環(huán)上的位置,
[0008] ecauchy(v) =a. V
[0009] 其中向量a滿足標準柯西分布,為從p-穩(wěn)態(tài)分布中抽取k個隨機變量組成的k維向 量,V表示哈希桶的桶編號,若兩個哈希桶中數(shù)據(jù)項在原始高維空間中比較相似,則它們在 相應的Chord環(huán)上的節(jié)點服務器的位置有極大概率相近;
[0010] 步驟3、查找Chord路由表找到V所屬的哈希桶所在的Chord環(huán)上的虛擬桶。
[0011] 還包括步驟4、虛擬桶負載過大時,對Chord環(huán)上的虛擬桶進行桶負載調控。
[0012] 所述桶負載調控的過程為:
[0013] A4-1.計算負載過重的虛擬桶的節(jié)點P上的各個ε的一維實數(shù)值ε '所對應的虛擬桶 內的原始數(shù)據(jù)項數(shù)量之和,并記包含最大、最小值的虛擬桶對應的位置分別為emax'和
[0014] A4-2 .選擇適當?shù)恼麛?shù)erefer ',它使得[emin ',erefer ' ]和(erefer ',emax ' ]之間的虛擬 桶內的原始數(shù)據(jù)項數(shù)量之和均等;
[0015] A4-3.分配一個新的虛擬節(jié)點P',其位置為erefer',將[emin',erefer']范圍內的虛擬 桶包含的數(shù)據(jù)迀移到P'所在的虛擬桶,同時修改兩個節(jié)點的索引表。
[0016] 本發(fā)明的有益效果:采用譜哈希方法將高維原始空間數(shù)據(jù)映射到漢明空間,避免 了采用LSH方法產生大量哈希表占用大量內存的問題;采用新型的數(shù)據(jù)映射算法,將哈希桶 映射到Chord環(huán)上,使得擁有相似原始數(shù)據(jù)的哈希桶在Chord環(huán)上也相近,為相似性存儲提 供很好的理論依據(jù);通過新型桶負載均衡的方法有效地避免了可能出現(xiàn)的哈希桶負載過重 的情況。
【附圖說明】
[0017] 圖1為基于譜哈希的相似性存儲設計方法的流程圖。
【具體實施方式】
[0018] 為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對 本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。
[0019] 如圖1所示為基于譜哈希的相似性存儲的設計方法。該方法主要分三個層次,分別 為:利用譜哈希進行數(shù)據(jù)映射,數(shù)據(jù)映射方法,Chord的構建,具體實施步驟包括如下:
[0020] (1)利用譜哈希進行數(shù)據(jù)映射
[0021] 譜哈希是將譜分析技術融合進哈希函數(shù)中,將構造的新的哈希函數(shù)用于高維數(shù)據(jù) 的處理上。譜哈希首先需要對高維數(shù)據(jù)樣本進行譜分析,利用特征函數(shù),通過分析高維數(shù)據(jù) 樣本的平均分布,生成一個譜哈希函數(shù)。因此譜哈希的動機就是給定一個高維樣本數(shù)據(jù)庫 進行訓練,找到一個理想的哈希函數(shù)。這個哈希函數(shù)可以將相似的高維數(shù)據(jù)點哈希到一個 相似的值上。
[0022] 具體算法包含以下幾個步驟:
[0023] 1)利用主成分分析從高維數(shù)據(jù)樣本集合當中獲取主成分。
[0024] 2)根據(jù)1)中的結果生成二元索引映射函數(shù)。
[0025] 3)利用2)中的結果對訓練集合之外的高維數(shù)據(jù)建立索引文件,生成對應的海明編 碼,實現(xiàn)高維數(shù)據(jù)的查詢。譜哈希的查詢效率是非常高的,此外在語義哈希中引入了譜分析 技術對樣本進行訓練所產生的哈希函數(shù)與LSH隨機映射的方法相比更加可靠與準確。
[0026] (2)數(shù)據(jù)映射算法
[0027] 通過過譜哈希的特點,快速地將不同種類的高維數(shù)據(jù)哈希到不同的桶中。因此,使 用該特征將高維數(shù)據(jù)映射到不同的節(jié)點空間中,實現(xiàn)相似性存儲和分布式索引。
[0028] ξ:表示將高維數(shù)據(jù)點映射到節(jié)點空間的函數(shù)。具體方法是將每一個哈希桶分布在 不同的節(jié)點之上。這種方法雖然解決了節(jié)點負載均衡的問題,但對于一個查詢請求而言,需 要查詢多個節(jié)點,增加了查詢跳轉的所帶來的網絡開銷與時間延遲。因此,理想的映射函數(shù) 應滿足以下條件:
[0029] 1、將擁有相似高維數(shù)據(jù)點的桶映射到同一個節(jié)點上;
[0030] 2、能夠保持各個節(jié)點負載均衡。
[0031]對于以上條件條件,利用數(shù)據(jù)映射函數(shù)eCauchy(v)=a.V將k_維整數(shù)向量V映射到分 布式網絡的空間中,a是滿足標準柯西分布的k-維隨機向量,用ε Cauchy代表哈希桶在Chord環(huán) 上的位置。因此把哈希桶映射到分布式節(jié)點空間中。譜哈希先將d-維數(shù)據(jù)映射到各個桶中, 然后利用函數(shù)ξ將各個桶映射到各個分布式網絡節(jié)點上。這樣既能保證擁有相似數(shù)據(jù)的桶 映射到同一節(jié)點上,也能保證各