<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一文理解Ranking Loss/Margin Loss/Triplet Loss

          共 5868字,需瀏覽 12分鐘

           ·

          2020-08-12 16:47

          點(diǎn)擊藍(lán)字


          ?關(guān)注我們



          作者丨土豆@知乎
          來(lái)源丨h(huán)ttps://zhuanlan.zhihu.com/p/158853633
          本文已獲授權(quán),未經(jīng)作者許可,不得二次轉(zhuǎn)載。

          前言

          Ranking loss在很多不同的領(lǐng)域,任務(wù)和神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)(比如siamese net或者Triplet net)中被廣泛地應(yīng)用。其廣泛應(yīng)用但缺乏對(duì)其命名標(biāo)準(zhǔn)化導(dǎo)致了其擁有很多其他別名,比如對(duì)比損失Contrastive loss,邊緣損失Margin loss,鉸鏈損失hinge loss和我們常見(jiàn)的三元組損失Triplet loss等。
          本文翻譯自FesianXu(原文鏈接:https://gombru.github.io/2019/04/03/ranking_loss/),如有謬誤,請(qǐng)?zhí)岢鲋刚x謝。

          ranking loss函數(shù):度量學(xué)習(xí)

          不像其他損失函數(shù),比如交叉熵?fù)p失和均方差損失函數(shù),這些損失的設(shè)計(jì)目的就是學(xué)習(xí)如何去直接地預(yù)測(cè)標(biāo)簽,或者回歸出一個(gè)值,又或者是在給定輸入的情況下預(yù)測(cè)出一組值,這是在傳統(tǒng)的分類任務(wù)和回歸任務(wù)中常用的。ranking loss的目的是去預(yù)測(cè)輸入樣本之間的相對(duì)距離。這個(gè)任務(wù)經(jīng)常也被稱之為度量學(xué)習(xí)(metric learning)。
          在訓(xùn)練集上使用ranking loss函數(shù)是非常靈活的,我們只需要一個(gè)可以衡量數(shù)據(jù)點(diǎn)之間的相似度度量就可以使用這個(gè)損失函數(shù)了。這個(gè)度量可以是二值的(相似/不相似)。比如,在一個(gè)人臉驗(yàn)證數(shù)據(jù)集上,我們可以度量某個(gè)兩張臉是否屬于同一個(gè)人(相似)或者不屬于同一個(gè)人(不相似)。通過(guò)使用ranking loss函數(shù),我們可以訓(xùn)練一個(gè)CNN網(wǎng)絡(luò)去對(duì)這兩張臉是否屬于同一個(gè)人進(jìn)行推斷。(當(dāng)然,這個(gè)度量也可以是連續(xù)的,比如余弦相似度。)
          在使用ranking loss的過(guò)程中,我們首先從這兩張(或者三張,見(jiàn)下文)輸入數(shù)據(jù)中提取出特征,并且得到其各自的嵌入表達(dá)(embedded representation,譯者:見(jiàn)[1]中關(guān)于數(shù)據(jù)嵌入的理解)。然后,我們定義一個(gè)距離度量函數(shù)用以度量這些表達(dá)之間的相似度,比如說(shuō)歐式距離。最終,我們訓(xùn)練這個(gè)特征提取器,以對(duì)于特定的樣本對(duì)(sample pair)產(chǎn)生特定的相似度度量。
          盡管我們并不需要關(guān)心這些表達(dá)的具體值是多少,只需要關(guān)心樣本之間的距離是否足夠接近或者足夠遠(yuǎn)離,但是這種訓(xùn)練方法已經(jīng)被證明是可以在不同的任務(wù)中都產(chǎn)生出足夠強(qiáng)大的表征的。

          ranking loss的表達(dá)式

          正如我們一開始所說(shuō)的,ranking loss有著很多不同的別名,但是他們的表達(dá)式卻是在眾多設(shè)置或者場(chǎng)景中都是相同的并且是簡(jiǎn)單的。我們主要針對(duì)以下兩種不同的設(shè)置,進(jìn)行兩種類型的ranking loss的辨析
          1. 使用一對(duì)的訓(xùn)練數(shù)據(jù)點(diǎn)(即是兩個(gè)一組)
          2. 使用三元組的訓(xùn)練數(shù)據(jù)點(diǎn)(即是三個(gè)數(shù)據(jù)點(diǎn)一組)
          這兩種設(shè)置都是在訓(xùn)練數(shù)據(jù)樣本中進(jìn)行距離度量比較。

          成對(duì)樣本的ranking loss

          Fig 2.1 成對(duì)樣本ranking loss用以訓(xùn)練人臉認(rèn)證的例子。在這個(gè)設(shè)置中,CNN的權(quán)重值是共享的。我們稱之為Siamese Net。成對(duì)樣本ranking loss還可以在其他設(shè)置或者其他網(wǎng)絡(luò)中使用。
          在這個(gè)設(shè)置中,由訓(xùn)練樣本中采樣到的正樣本和負(fù)樣本組成的兩種樣本對(duì)作為訓(xùn)練輸入使用。正樣本對(duì)由兩部分組成,一個(gè)錨點(diǎn)樣本 和 另一個(gè)和之標(biāo)簽相同的樣本 ,這個(gè)樣本與錨點(diǎn)樣本在我們需要評(píng)價(jià)的度量指標(biāo)上應(yīng)該是相似的(經(jīng)常體現(xiàn)在標(biāo)簽一樣);負(fù)樣本對(duì)由一個(gè)錨點(diǎn)樣本和一個(gè)標(biāo)簽不同的樣本組成,在度量上應(yīng)該和不同。(體現(xiàn)在標(biāo)簽不一致)
          現(xiàn)在,我們的目標(biāo)就是學(xué)習(xí)出一個(gè)特征表征,這個(gè)表征使得正樣本對(duì)中的度量距離盡可能的小,而在負(fù)樣本對(duì)中,這個(gè)距離應(yīng)該要大于一個(gè)人為設(shè)定的超參數(shù)——閾值。成對(duì)樣本的ranking loss強(qiáng)制樣本的表征在正樣本對(duì)中擁有趨向于0的度量距離,而在負(fù)樣本對(duì)中,這個(gè)距離則至少大于一個(gè)閾值。用分別表示這些樣本的特征表征,我們可以有以下的式子:
          對(duì)于正樣本對(duì)來(lái)說(shuō),這個(gè)loss隨著樣本對(duì)輸入到網(wǎng)絡(luò)生成的表征之間的距離的減小而減少,增大而增大,直至變成0為止。
          對(duì)于負(fù)樣本來(lái)說(shuō),這個(gè)loss只有在所有負(fù)樣本對(duì)的元素之間的表征的距離都大于閾值的時(shí)候才能變成0。當(dāng)實(shí)際負(fù)樣本對(duì)的距離小于閾值的時(shí)候,這個(gè)loss就是個(gè)正值,因此網(wǎng)絡(luò)的參數(shù)能夠繼續(xù)更新優(yōu)化,以便產(chǎn)生更適合的表征。這個(gè)項(xiàng)的loss最大值不會(huì)超過(guò),在的時(shí)候取得。這里設(shè)置閾值的目的是,當(dāng)某個(gè)負(fù)樣本對(duì)中的表征足夠好,體現(xiàn)在其距離足夠遠(yuǎn)的時(shí)候,就沒(méi)有必要在該負(fù)樣本對(duì)中浪費(fèi)時(shí)間去增大這個(gè)距離了,因此進(jìn)一步的訓(xùn)練將會(huì)關(guān)注在其他更加難分別的樣本對(duì)中。
          假設(shè)用分別表示樣本對(duì)兩個(gè)元素的表征,是一個(gè)二值的數(shù)值,在輸入的是負(fù)樣本對(duì)時(shí)為0,正樣本對(duì)時(shí)為1,距離是歐式距離,我們就能有最終的loss函數(shù)表達(dá)式:

          三元組樣本對(duì)的ranking loss

          三元組樣本對(duì)的ranking loss稱之為triplet loss。在這個(gè)設(shè)置中,與二元組不同的是,輸入樣本對(duì)是一個(gè)從訓(xùn)練集中采樣得到的三元組。這個(gè)三元組由一個(gè)錨點(diǎn)樣本,一個(gè)正樣本,一個(gè)負(fù)樣本組成。其目標(biāo)是錨點(diǎn)樣本與負(fù)樣本之間的距離 與錨點(diǎn)樣本和正樣本之間的距離之差大于一個(gè)閾值,可以表示為:
          Fig 2.2 Triplet loss的例子,其中的CNN網(wǎng)絡(luò)的參數(shù)是共享的。
          在訓(xùn)練過(guò)程中,對(duì)于一個(gè)可能的三元組,我們的triplet loss可能有三種情況:
          1、“簡(jiǎn)單樣本”的三元組(easy triplet)
          。在這種情況中,在嵌入空間(譯者:指的是以嵌入特征作為表征的歐幾里德空間,空間的每個(gè)基底都是一個(gè)特征維,一般是賦范空間)中,對(duì)比起正樣本來(lái)說(shuō),負(fù)樣本和錨點(diǎn)樣本已經(jīng)有足夠的距離了(即是大于)。此時(shí)loss為0,網(wǎng)絡(luò)參數(shù)將不會(huì)繼續(xù)更新。
          2、“難樣本”的三元組(hard triplet)
          。在這種情況中,負(fù)樣本比起正樣本,更接近錨點(diǎn)樣本,此時(shí)loss為正值(并且比大),網(wǎng)絡(luò)可以繼續(xù)更新。
          3、“半難樣本”的三元組(semi-hard triplet)
          。在這種情況下,負(fù)樣本到錨點(diǎn)樣本的距離比起正樣本來(lái)說(shuō),雖然是大于后者,但是并沒(méi)有大于設(shè)定的閾值,此時(shí)loss仍然為正值,但是小于,此時(shí)網(wǎng)絡(luò)可以繼續(xù)更新。
          Fig 2.3 三元組可能的情況。

          負(fù)樣本的挑選

          在訓(xùn)練中使用Triplet loss的一個(gè)重要選擇就是我們需要對(duì)負(fù)樣本進(jìn)行挑選,稱之為負(fù)樣本選擇(negative selection)或者三元組采集(triplet mining)。選擇的策略會(huì)對(duì)訓(xùn)練效率和最終性能結(jié)果有著重要的影響。一個(gè)明顯的策略就是:簡(jiǎn)單的三元組應(yīng)該盡可能被避免采樣到,因?yàn)槠鋖oss為0,對(duì)優(yōu)化并沒(méi)有任何幫助。
          第一個(gè)可供選擇的策略是離線三元組采集(offline triplet mining),這意味著在訓(xùn)練的一開始或者是在每個(gè)世代(epoch)之前,就得對(duì)每個(gè)三元組進(jìn)行定義(也即是采樣)。第二種策略是在線三元組采集(online triplet mining),這種方案意味著在訓(xùn)練中的每個(gè)批次(batch)中,都得對(duì)三元組進(jìn)行動(dòng)態(tài)地采樣,這種方法經(jīng)常具有更高的效率和更好的表現(xiàn)。
          然而,最佳的負(fù)樣本采集方案是高度依賴于任務(wù)特性的。但是在本篇文中不會(huì)在此深入討論,因?yàn)楸疚闹皇菍?duì)ranking loss的不同別名的綜述并且討論而已。可以參考[2]以對(duì)負(fù)樣本采樣進(jìn)行更深的了解。

          ranking loss的別名們

          ranking loss家族正如以上介紹的,在不同的應(yīng)用中都有廣泛應(yīng)用,然而其表達(dá)式都是大同小異的,雖然他們?cè)诓煌墓ぷ髦忻麅翰⒉灰恢拢@可真讓人頭疼。在這里,我嘗試對(duì)為什么采用不同的別名,進(jìn)行解釋:
          Ranking loss:這個(gè)名字來(lái)自于信息檢索領(lǐng)域,在這個(gè)應(yīng)用中,我們期望訓(xùn)練一個(gè)模型對(duì)項(xiàng)目(items)進(jìn)行特定的排序。比如文件檢索中,對(duì)某個(gè)檢索項(xiàng)目的排序等。
          Margin loss:這個(gè)名字來(lái)自于一個(gè)事實(shí)——我們介紹的這些loss都使用了邊界去比較衡量樣本之間的嵌入表征距離,見(jiàn)Fig 2.3
          Contrastive loss:我們介紹的loss都是在計(jì)算類別不同的兩個(gè)(或者多個(gè))數(shù)據(jù)點(diǎn)的特征嵌入表征。這個(gè)名字經(jīng)常在成對(duì)樣本的ranking loss中使用。但是我從沒(méi)有在以三元組為基礎(chǔ)的工作中使用這個(gè)術(shù)語(yǔ)去進(jìn)行表達(dá)。
          Triplet loss:這個(gè)是在三元組采樣被使用的時(shí)候,經(jīng)常被使用的名字。
          Hinge loss:也被稱之為max-margin objective。通常在分類任務(wù)中訓(xùn)練SVM的時(shí)候使用。他有著和SVM目標(biāo)相似的表達(dá)式和目的:都是一直優(yōu)化直到到達(dá)預(yù)定的邊界為止。

          Siamese 網(wǎng)絡(luò)和Triplet網(wǎng)絡(luò)

          Siamese網(wǎng)絡(luò)(Siamese Net)和Triplet網(wǎng)絡(luò)(Triplet Net)分別是在成對(duì)樣本和三元組樣本 ranking loss采用的情況下訓(xùn)練模型。
          Siamese網(wǎng)絡(luò)
          這個(gè)網(wǎng)絡(luò)由兩個(gè)相同并且共享參數(shù)的CNN網(wǎng)絡(luò)(兩個(gè)網(wǎng)絡(luò)都有相同的參數(shù))組成。這些網(wǎng)絡(luò)中的每一個(gè)都處理著一個(gè)圖像并且產(chǎn)生對(duì)于的特征表達(dá)。這兩個(gè)表達(dá)之間會(huì)進(jìn)行比較,并且計(jì)算他們之間的距離。然后,一個(gè)成對(duì)樣本的ranking loss將會(huì)作為損失函數(shù)進(jìn)行訓(xùn)練模型。
          我們用表示這個(gè)CNN網(wǎng)絡(luò),我們有Siamese網(wǎng)絡(luò)的損失函數(shù)如:

          Triplet網(wǎng)絡(luò)
          這個(gè)基本上和Siamese網(wǎng)絡(luò)的思想相似,但是損失函數(shù)采用了Triplet loss,因此整個(gè)網(wǎng)絡(luò)有三個(gè)分支,每個(gè)分支都是一個(gè)相同的,并且共享參數(shù)的CNN網(wǎng)絡(luò)。同樣的,我們能有Triplet網(wǎng)絡(luò)的損失函數(shù)表達(dá)為:

          在多模態(tài)檢索中使用ranking loss

          根據(jù)我的研究,在涉及到圖片和文本的多模態(tài)檢索任務(wù)中,使用了Triplet ranking loss。訓(xùn)練數(shù)據(jù)由若干有著相應(yīng)文本標(biāo)注的圖片組成。任務(wù)目的是學(xué)習(xí)出一個(gè)特征空間,模型嘗試將圖片特征和相對(duì)應(yīng)的文本特征都嵌入到這個(gè)特征空間中,使得可以將彼此的特征用于在跨模態(tài)檢索任務(wù)中(舉個(gè)例子,檢索任務(wù)可以是給定了圖片,去檢索出相對(duì)應(yīng)的文字描述,那么既然在這個(gè)特征空間里面文本和圖片的特征都是相近的,體現(xiàn)在距離近上,那么就可以直接將圖片特征作為文本特征啦~當(dāng)然實(shí)際情況沒(méi)有那么簡(jiǎn)單)。為了實(shí)現(xiàn)這個(gè),我們首先從孤立的文本語(yǔ)料庫(kù)中,學(xué)習(xí)到文本嵌入信息(word embeddings),可以使用如同Word2Vec或者GloVe之類的算法實(shí)現(xiàn)。隨后,我們針對(duì)性地訓(xùn)練一個(gè)CNN網(wǎng)絡(luò),用于在與文本信息的同一個(gè)特征空間中,嵌入圖片特征信息。
          具體來(lái)說(shuō),實(shí)現(xiàn)這個(gè)的第一種方法可以是:使用交叉熵?fù)p失,訓(xùn)練一個(gè)CNN去直接從圖片中預(yù)測(cè)其對(duì)應(yīng)的文本嵌入。結(jié)果還不錯(cuò),但是使用Triplet ranking loss能有更好的結(jié)果。
          使用Triplet ranking loss的設(shè)置如下:我們使用已經(jīng)學(xué)習(xí)好了文本嵌入(比如GloVe模型),我們只是需要學(xué)習(xí)出圖片表達(dá)。因此錨點(diǎn)樣本是一個(gè)圖片,正樣本是一個(gè)圖片對(duì)應(yīng)的文本嵌入,負(fù)樣本是其他無(wú)關(guān)圖片樣本的對(duì)應(yīng)的文本嵌入。為了選擇文本嵌入的負(fù)樣本,我們探索了不同的在線負(fù)樣本采集策略。在多模態(tài)檢索這個(gè)問(wèn)題上使用三元組樣本采集而不是成對(duì)樣本采集,顯得更加合乎情理,因?yàn)槲覀兛梢圆唤@式的類別區(qū)分(比如沒(méi)有l(wèi)abel信息)就可以達(dá)到目的。在給定了不同的圖片后,我們可能會(huì)有需要簡(jiǎn)單三元組樣本,但是我們必須留意與難樣本的采樣,因?yàn)椴杉降碾y負(fù)樣本有可能對(duì)于當(dāng)前的錨點(diǎn)樣本,也是成立的(雖然標(biāo)簽的確不同,但是可能很相似。)
          在該實(shí)驗(yàn)設(shè)置中,我們只訓(xùn)練了圖像特征表征。對(duì)于第個(gè)圖片樣本,我們用表示這個(gè)CNN網(wǎng)絡(luò)提取出的圖像表征,然后用分別表示正文本樣本和負(fù)文本樣本的GloVe嵌入特征表達(dá),我們有:
          在這種實(shí)驗(yàn)設(shè)置下,我們對(duì)比了triplet ranking loss和交叉熵?fù)p失的一些實(shí)驗(yàn)的量化結(jié)果。我不打算在此對(duì)實(shí)驗(yàn)細(xì)節(jié)寫過(guò)多的筆墨,其實(shí)驗(yàn)細(xì)節(jié)設(shè)置和[4,5]一樣。基本來(lái)說(shuō),我們對(duì)文本輸入進(jìn)行了一定的查詢,輸出是對(duì)應(yīng)的圖像。當(dāng)我們?cè)谏缃痪W(wǎng)絡(luò)數(shù)據(jù)上進(jìn)行半監(jiān)督學(xué)習(xí)的時(shí)候,我們對(duì)通過(guò)文本檢索得到的圖片進(jìn)行某種形式的評(píng)估。采用了Triplet ranking loss的結(jié)果遠(yuǎn)比采用交叉熵?fù)p失的結(jié)果好。

          深度學(xué)習(xí)框架中的ranking loss層

          Caffe

          Constrastive loss layer
          pycaffe triplet ranking loss layer

          PyTorch

          CosineEmbeddingLoss
          MarginRankingLoss
          TripletMarginLoss

          TensorFlow

          contrastive_loss
          triplet_semihard_loss

          參考資料

          [1]?https://blog.csdn.net/LoseInVain/article/details/88373506
          [2]?https://omoindrot.github.io/triplet-loss
          [3]?https://github.com/adambielski/siamese-triplet
          [4]?https://arxiv.org/abs/1901.02004
          [5]?https://gombru.github.io/2018/08/01/learning_from_web_data/
          推薦閱讀


          添加極市小助手微信(ID : cv-mart),備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測(cè)-深圳),即可申請(qǐng)加入極市目標(biāo)檢測(cè)/圖像分割/工業(yè)檢測(cè)/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR等技術(shù)交流群,更有每月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競(jìng)賽、干貨資訊匯總、行業(yè)技術(shù)交流一起來(lái)讓思想之光照的更遠(yuǎn)吧~

          △長(zhǎng)按添加極市小助手

          △長(zhǎng)按關(guān)注極市平臺(tái),獲取最新CV干貨

          覺(jué)得有用麻煩給個(gè)在看啦~??
          瀏覽 144
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  WWW日本色情视频 | 国产黄色视频网站在线观看 | 亚洲图片小说在线视频 | 北条麻妃在线中文字幕 | 日韩人妻一区二区 |