1. 程式人生 > >度量學習(metric learning)損失函式

度量學習(metric learning)損失函式

學習的物件通常是樣本特徵向量的距離,度量學習的目的是通過訓練和學習,減小或限制同類樣本之間的距離,同時增大不同類別樣本之間的距離。


常用度量學習損失方法

(1)對比損失
用於訓練Siamese(孿生)網路,,輸入為兩張圖片,每一對訓練圖片都有一個標籤y,y=1表示兩張圖片屬於同一個人(正樣本對),反之y=0,表示他們屬於不同的行人(負樣本對)

對比損失函式:

當輸入為正樣本對的時候,d(Ia,Ib)逐漸減小,相同ID的行人圖片會持續在特徵空間形成聚類。反之,當網路輸入負樣本對時,d(Ia,Ib)會逐漸變大,知道超過設定的alpha。通過最小化損失函式,最後可以使正樣本對之間距離逐漸變小,負樣本對之間距離逐漸變大,從而滿足行人重識別任務的需要。

(2)三元組損失(Triplet loss)
三元組損失是一種被廣泛應用的度量學習損失,之後的大量度量學習方法也是基於三元組損失演變而來。顧名思義,三元組損失需要三張輸入圖片。和對比損失不同,一個輸入的三元組(Triplet)包括一對正樣本對和一對負樣本對。三張圖片分別命名為固定圖片(Anchor) a、正樣本圖片(Positive)p和負樣本圖片(Negative) n 。圖片 a 和圖片 p 為一對正樣本對,圖片 a 和圖片 n 為一對負樣本對。則三元組損失表示為:

如下圖所示,三元組可以拉近正樣本對之間的距離,推開負樣本對之間的距離,最後使得相同ID的行人圖片在特徵空間裡形成聚類,達到行人重識別的目的。


改進:原版的Triplet loss只考慮正負樣本對之間的相對距離,而並沒有考慮正樣本對之間的絕對距離,為此提出改進三元組損失(Improved triplet loss):

保證網路不僅能夠在特徵空間把正負樣本推開,也能保證正樣本對之間的距離很近。

(3)四元組損失(Quadruplet loss)


四元組損失是三元組損失的另一個改進版本。顧名思義,四元組(Quadruplet)需要四張輸入圖片,和三元組不同的是多了一張負樣本圖片。即四張圖片為固定圖片(Anchor) a ,正樣本圖片(Positive) p  ,負樣本圖片1(Negative1) n1 和負樣本圖片2(Negative2) n2 。其中 n1 和 n2 是兩張不同行人ID的圖片,其結構如上圖所示。則四元組損失表示為:


其中α和β是手動設定的正常數,通常設定β小於α,前一項稱為強推動,後一項稱為弱推動。相比於三元組損失只考慮正負樣本間的相對距離,四元組新增的第二項不共享ID,所以考慮的是正負樣本間的絕對距離。因此,四元組損失通常能讓模型學習到更好的表徵。

(4)難樣本取樣三元組損失(Triplet loss with batch hard mining, TriHard loss)
難樣取樣三元組損失(本文之後用TriHard損失表示)是三元組損失的改進版。傳統的三元組隨機從訓練資料中抽樣三張圖片,這樣的做法雖然比較簡單,但是抽樣出來的大部分都是簡單易區分的樣本對。如果大量訓練的樣本對都是簡單的樣本對,那麼這是不利於網路學習到更好的表徵。大量論文發現用更難的樣本去訓練網路能夠提高網路的泛化能力,而取樣難樣本對的方法很多。論文[10]提出了一種基於訓練批量(Batch)的線上難樣本取樣方法——TriHard Loss。
TriHard損失的核心思想是:對於每一個訓練batch,隨機挑選 P 個ID的行人,每個行人隨機挑選 K 張不同的圖片,即一個batch含有 P×K 張圖片。之後對於batch中的每一張圖片 a ,我們可以挑選一個最難的正樣本和一個最難的負樣本和 a 組成一個三元組。

其中 α 是人為設定的閾值引數。TriHard損失會計算 a 和batch中的每一張圖片在特徵空間的歐式距離,然後選出與 a 距離最遠(最不像)的正樣本 p 和距離最近(最像)的負樣本 n 來計算三元組損失。通常TriHard損失效果比傳統的三元組損失要好。

(5)邊界挖掘損失(Margin sample mining loss, MSML)

(考慮了正負樣本對之間的絕對距離,同時借鑑了TriHard loss引入 hard sample mining 的思想,MSML 吸收了這兩個優點。)
邊界樣本挖掘損失(MSML)是一種引入難樣本取樣思想的度量學習方法。三元組損失只考慮了正負樣本對之間的相對距離。為了引入正負樣本對之間的絕對距離,四元組損失加入一張負樣本組成了四元組。四元組損失也定義為:

假如我們忽視引數 α 和 β 的影響,我們可以用一種更加通用的形式表示四元組損失:


其中 m 和 n 是一對負樣本對,m 和 a 既可以是一對正樣本對也可以是一對負樣本對。之後把TriHard loss的難樣本挖掘思想引入進來,便可以得到:

其中 a,p,m,n 均是batch中的圖片,a,p 是batch中最不像的正樣本對,m,n 是batch 中最像的負樣本對,a,m 皆可以是正樣本對也可以是負樣本對。概括而言TriHard損失是針對batch中的每一張圖片都挑選了一個三元組,而MSML損失只挑選出最難的一個正樣本對和最難的一個負樣本對計算損失。所以MSML是比TriHard更難的一種難樣本取樣,此外maxd(a,p)可以看作是正樣本對距離的上界,mind(m,n)可以看作是負樣本對的下界。MSML是為了把正負樣本對的邊界給推開,因此命名為邊界樣本挖掘損失。總的概括,MSML是同時兼顧相對距離和絕對距離並引入了難樣本取樣思想的度量學習方法。其演變思想如下圖:


相關推薦

度量學習metric learning損失函式

學習的物件通常是樣本特徵向量的距離,度量學習的目的是通過訓練和學習,減小或限制同類樣本之間的距離,同時增大不同類別樣本之間的距離。常用度量學習損失方法(1)對比損失用於訓練Siamese(孿生)網路,,輸入為兩張圖片,每一對訓練圖片都有一個標籤y,y=1表示兩張圖片屬於同一個

度量學習meritc learning思考

經典論文: 簡單總結下個人對mertic learning的認知:         ①本質是學習一個embedding space,也可以理解為對映空間,使得同類的物體距離更近,不同類物體距離更遠。         ②應用場景:a.大量的類別,如人臉;b.每類訓練

機器學習Machine Learning大家與資源

內容挺多的,轉過來吧 =======================國外==================== Machine Learning 大家(1):M. I. Jordan (http://www.cs.berkeley.edu/~jordan/)  &nbs

強化學習RLAI讀書筆記第六章差分學習TD-learning

第六章:Temporal-Difference Learning TD-learning演算法是強化學習中一個獨具特色而又核心的想法,結合了蒙特卡洛演算法和動態規劃的想法。和MC一樣不需要環境模型直接從sample裡學習,也像DP一樣使用bootstrap通過別的狀態值的估計更新當前狀態值。首先

強化學習Reinforcement Learning知識整理

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

JMeter學習十六JMeter函式學習

JMeter函式是一些能夠轉化在測試樹中取樣器或者其他配置元件的域的特殊值。一個函式的呼叫就像這樣:${_functionName(var1,var2,var3)},-functionName匹配函式名,圓括號內設定函式的引數,例如${_time(YMD)}實際引數因函式而不同。不需要引數的函式使圓

1. 整合學習Ensemble Learning原理

1. 前言 我們之前介紹了很多的機器學習的演算法,大家有沒想過一個問題用所有的方法都試一遍,然後拿結果一起再來判斷。其實這種思路在機器學習中完全是可以的,並且有了自己的一個陣營,就是整合學習。整合學習顧名思義是結合了好多的演算法一起來進行預測。就像我們想看一部電影前,問問身邊看過的幾個朋友對這部電影的評價,

2. 整合學習Ensemble LearningBagging

1. 前言 前面從整體的角度介紹了整合學習演算法,整合學習演算法分為Bagging、Boosting、Stacking。Bagging的特點是各個弱學習器之間沒有依賴關係,Boosting的特點是各個弱學習器之間有依賴關係,Stacking的特點是在多個學習器的基礎上再加一個機器學習演算法進行預測。

2. 集成學習Ensemble LearningBagging

投票 ble 機器學習 簡單的 技術分享 能夠 包含 系列 細節 1. 前言 前面從整體的角度介紹了集成學習算法,集成學習算法分為Bagging、Boosting、Stacking。Bagging的特點是各個弱學習器之間沒有依賴關系,Boosting的特點是各個弱學習器之間

人工智慧 深度學習Deep learning開源框架

Google開源了TensorFlow(GitHub),此舉在深度學習領域影響巨大,因為Google在人工智慧領域的研發成績斐然,有著雄厚的人才儲備,而且Google自己的Gmail和搜尋引擎都在使用自行研發的深度學習工具。 1、Caffe。源自加州伯克利分校的Caffe被廣泛應用,包括Pint

PyTorch之遷移學習Transfer Learning

TRANSFER LEARNING TUTORIAL Finetuning the convnet: Instead of random initializaion, we initialize the network with a pretrained network, l

3. 集成學習Ensemble Learning隨機森林Random Forest

總結 子節點 clas 支持向量機 2個 最終 分類算法 容易 oot 1. 前言 相信看了之前關於集成學習的介紹,大家對集成學習有了一定的了解。本文在給大家介紹下遠近聞名的隨機森林(RF)算法。 隨機森林是集成學習中可以和梯度提升樹GBDT分庭抗禮的算法,尤其是它可以很方

3. 整合學習Ensemble Learning隨機森林Random Forest

1. 前言 相信看了之前關於整合學習的介紹,大家對整合學習有了一定的瞭解。本文在給大家介紹下遠近聞名的隨機森林(RF)演算法。 隨機森林是整合學習中可以和梯度提升樹GBDT分庭抗禮的演算法,尤其是它可以很方便的並行訓練,在如今大資料大樣本的的時代很有誘惑力。 2. 隨機森林原理 隨機森林是Baggin

5. 整合學習Ensemble LearningGBDT

1. 前言 如果讀了我之前的幾篇整合學習的博文,相信讀者們已經都對整合學習大部分知識很有了詳細的學習。今天我們再來一個提升,就是我們的集大成者GBDT。GBDT在我們的Kaggle的比賽中基本獲得了霸主地位,大部分的問題GBDT都能獲得異常好的成績。 2. GBDT原理 GBDT的中文名叫梯度提升樹,G

5. 集成學習Ensemble LearningGBDT

sem 加法 ble 表達 big 靈活 比較 amp ensemble 1. 前言 如果讀了我之前的幾篇集成學習的博文,相信讀者們已經都對集成學習大部分知識很有了詳細的學習。今天我們再來一個提升,就是我們的集大成者GBDT。GBDT在我們的Kaggle的比賽中基本獲得了霸

6. 整合學習Ensemble Learning演算法比較

1. 整合學習(Ensemble Learning)原理 2. 整合學習(Ensemble Learning)Bagging 3. 整合學習(Ensemble Learning)隨機森林(Random Forest) 4. 整合學習(Ensemble Learning)Adaboost 5. 整合學習

7. 整合學習Ensemble LearningStacking

1. 整合學習(Ensemble Learning)原理 2. 整合學習(Ensemble Learning)Bagging 3. 整合學習(Ensemble Learning)隨機森林(Random Forest) 4. 整合學習(Ensemble Learning)Adaboost 5. 整合學習

強化學習Reinforcement Learning背景介紹

強化學習前世今生 如今機器學習發展的如此迅猛,各類演算法層出不群,特別是深度神經網路的發展,為非常經典的強化學習帶來了新的思路,雖然強化學習一直在發展中,但在2013年這個關鍵點,DeepMind大神David Sliver使用了神經網路逼近函式值後,開始了新的方向,又一發不可收

機器學習:整合學習ensemble learning——原理概述

整合學習(ensemble learning) 整合學習通過構建多個個體學習器,然後再用某種策略將他們結合起來,產生一個有較好效果的強學習器來完成任務。基本原理如下圖所示。這裡主要有三個關鍵點:個體學習器的同質異質、個體學習器的生成方式、結合策略。 同質異質。首先需要明確的是個體學習器至少不差於弱學習器。

遷移學習TRANSFER LEARNING

在本教程中,您將學習如何使用遷移學習來培訓您的網路。 在實踐中,很少有人從頭開始訓練整個卷積網路(使用隨機初始化),因為擁有足夠大小的資料集是相對少見的。相反,在一個非常大的資料集上預先訓練一個卷積神經網路是很常見的(例如,ImageNet,它包含了120萬個有1000個類