**於換關鍵字,從lsh轉換為hash檢索,這要感謝李某。
筆者認為關鍵思想是資料降維後使用矩陣旋轉優化,其他和lsh一樣的。
先對原始空間的資料集 x∈rn×d
用pca進行降維處理,設經過pca降維後的資料集為 v∈rn×c
,該問題就可以轉化為將該資料集中的資料點對映到乙個二進位製超立方體的頂點上,使得對應的量化誤差最小,從而而已得到對應該資料集優良的二進位制編碼。
對於pca降維部分,不做詳解。設 v∈rc
為原特徵空間中某一資料點經過pca降維後的表示形式,對應在超立方體中的頂點用 sgn(v)∈c
來表示,要使量化誤差最小,即 v∈rc
與 sgn(v)∈c
的歐式距離最小,即 min||sgn(v)−v)||2
,對於所有的資料點進行二進位制編碼後用b表示,pca降維後 v=x×w
,對整個資料集為 min||b−v||2
。由於對矩陣進行旋轉可以降低量化誤差。
對投影後的矩陣v進行隨機旋轉後,量化誤差降低至0.93,對於找到的最優的旋轉矩陣,量化誤差降低至0.88(矩陣與正交矩陣相乘實際上就是對矩陣做旋轉)。基於這樣乙個事實,考慮將投影後的資料集v進行旋轉變換, min||b−v||2
便變換為 min||b−vr||2
,r為旋轉矩陣。整個問題域就變成了 min||b−vr||2
的優化問題,即找出最優的旋轉矩陣r和與之對應的編碼b。該式的優化可以採用交替跌倒的求解方法:先生成隨機矩陣並對其進行svd分解得到對應的正交矩陣作為r的初始值,然後固定r求b, b=sgn(v×d)
(注意這裡截距 b=0
,因為在原空間已對資料中心化,非常重要),b求出來再通過對 b×v
進行svd更新r,交替迭代若干次即可,文中選用的是50次。
通過上面過程便可經過pca降維後的資料完成編碼過程,後面的相似性採用漢明距離進行度量,這裡不贅述。
總結一下,整個過程可以概括為:先對資料集進行pca降維,然後尋找量化誤差最小的旋轉矩陣即可得到對應該最優旋轉矩陣下的特徵向量的二進位制編碼。
迭代量化演算法的理解(ITQ)
其運用迭代的方法減少量化誤差,從而得到最優的二進位制 1 對資料空間運用pca 主成分分析 進行降維處理,從而將資料對映在乙個二進位製超立方體頂點上。2 用 sgn v v 2的方式判定量化誤差。用b表示降維後的二進位制編碼。用v表示降維後的矩陣v x w,則轉化問題為找出min b v 2的最優解...
技術解析 模型量化壓縮
隨著深度學習技術滲透入越來越多領域,人工智慧在邊緣側的大規模應用被提上日程。尤其這兩年人工智慧 計算機視覺方向在安全生產 工業質檢 智慧型硬體等應用場景中在廣泛應用,這些應用場景往往對效能及資料安全有苛刻的要求,故而在邊緣計算 移動終端 嵌入式終端的產品落地也隨之進入白熱化階段。終端落地很重要的兩個...
JSON迭代解析
第一次寫部落格,好緊張啊。最近乙個在培訓機構培訓的同學,向我請教json資料解析的問題,和他溝通後發現他們解析資料的都是通過實體類來解析的。聽他說,和他同班的同學甚至花了整整一天的時間來寫實體類,感覺好麻煩。而且,如果返回的資料稍微有一點變化,可能整個資料解析就會報錯。廢話不多說了,直接上案例。首先...