metric learning
度量(metric)的定義:
在數學中,一個度量(或距離函數)是一個定義集合中元素之間距離的函數。一個具有度量的集合被稱為度量空間。
為什么要用度量學習?
很多的算法越來越依賴于在輸入空間給定的好的度量。例如K-means、K近鄰方法、SVM等算法需要給定好的度量來反映數據間存在的一些重要關系。這一問題在無監督的方法(如聚類)中尤為明顯。舉一個實際的例子,考慮圖1的問題,
?
假設我們需要計算這些圖像之間的相似度(或距離,下同)(例如用于聚類或近鄰分類)。面臨的一個基本的問題是如何獲取圖像之間的相似度,例如如果我們的目標是識別人臉,那么就需要構建一個距離函數去強化合適的特征(如發色,臉型等);而如果我們的目標是識別姿勢,那么就需要構建一個捕獲姿勢相似度的距離函數。為了處理各種各樣的特征相似度,我們可以在特定的任務通過選擇合適的特征并手動構建距離函數。然而這種方法會需要很大的人工投入,也可能對數據的改變非常不魯棒。度量學習作為一個理想的替代,可以根據不同的任務來自主學習出針對某個特定任務的度量距離函數。
softmax使用歐氏距離,會把同類圖片都聚到一個點中,針對又是馬又是人的圖片,它只能框出一類。
knn最合適的是學習馬氏距離,怎么學?要給出先驗知識,哪兩個數據更相似,歐式距離不可靠。
SVM也是metric learning的一種,因為kernel matrix就是相似度?
?
那么損失函數和度量有什么關系呢?
損失函數就是度量。損失函數就是預測標簽 y‘ 和真實標簽?y?之間的距離。
?
接下來看一篇博文:
http://www.cnblogs.com/zhk-sein/p/3919619.html
?
我對人臉識別的理解:比較兩個人臉是不是相似,而圖片的存儲是矩陣,那我們就是比較這兩個矩陣有多近,如果“很近”,那就是同一個人嘛,相反,如果相差很大,那就不是一個人。如何來判斷兩個矩陣離得“近”呢,答案是豐富多彩的嘛,所以有各種各樣的方法。
然后說下人臉識別的整個過程:樣本——提取特征——訓練——得到分類器——測試
1 樣本,我用的LFW(Labeled Face in Wild)數據庫,點擊LFW可以下到,一共13233幅圖片,對應5749個人。
2 提取特征,我用的LBP方法,另外由于提的特征過大,如果直接訓練,成本太高,建議進行壓縮,我在這里用的是cai deng的PCA方法,小伙伴們可以直接從這里下工具箱,很方便。
3 訓練過程,我在這里是用的metric learning
這里參考了cao qiong的Similarity Metric Learning for Face Recognition和Jason V. Davis的Information Theoretic Metric Learning他們都是有完整代碼貼出來的,可惜都是matlab的。
前面說到怎么找一個合適的距離能夠“恰好”的把同一個人和不同的人分開,我們當然可以用我們熟悉的歐式距離,d1=(X-Y)’(X-Y)(X,Y是兩個人臉的矩陣),但是效果不好,這個時候大家就想辦法了,還有什么距離的,通常,馬氏距離d=(X-Y)‘G(X-Y),這個時候我們通過訓練找到一個合適的G,這個G能使在X和Y相近時,得到一個很小的值;cao qiong還引入了另一個距離,d2=XMY,這個距離,當X和Y靠近時,會很大,而遠離時,d的值很小。cao xiong綜合以上兩點,d=d2-d1。而Jason V. Davis只使用了d1。
metric learning本質上就是要找一個合適的矩陣G。
感覺這是轉化為一個最優化問題,我們肯定是最優某一項指標,然后給出一些限制條件,這樣就變成我們熟悉的運籌學的問題了。
4 得到分類器,有了G以后分類就簡單了,可以采用KNN分類,也可以給個簡單的閾值,如果d大于某個值就不是同一個人,如果小于某個值就是一個人。
5 訓練的結果:我用400維的數據測試下來識別率是89.7%
?
轉載于:https://www.cnblogs.com/mengmengmiaomiao/p/7596271.html
總結
以上是生活随笔為你收集整理的metric learning的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蛋糕(卡特兰数)
- 下一篇: kafka和flume进行整合的日志采集