Înțelegerea Ranking Loss, Contrastive Loss, Margin Loss, Triplet Loss, balama Loss and all those confuze names

After the success of my post Understanding categorical Cross-Entropy Loss, Binary Cross-Entropy Loss, Softmax Loss, logistic Loss, Focal Loss and all those confuze names, and after checking that Triplet Loss surclasează Cross-Entropy Loss în subiectul meu principal de cercetare (multi-modal regăsire) am decis să scriu un post similar explicând funcțiile Ranking Losses.

pierderile de clasificare sunt utilizate în diferite domenii, sarcini și setări de rețele neuronale (cum ar fi plasele siameze sau plasele triplete). De aceea primesc nume diferite, cum ar fi pierderea contrastivă, pierderea marjei, pierderea balamalei sau pierderea tripletului.

funcții de pierdere a clasamentului: învățarea metrică

spre deosebire de alte funcții de pierdere, cum ar fi pierderea de entropie încrucișată sau pierderea medie de eroare pătrată, al cărei obiectiv este de a învăța să prezică direct o etichetă, o valoare sau un set sau valori date unei intrări, obiectivul clasării pierderilor este de a prezice distanțele relative dintre intrări. Această sarcină este adesea numită învățare metrică.

funcțiile de clasare a pierderilor sunt foarte flexibile în ceea ce privește datele de antrenament: avem nevoie doar de un scor de similitudine între punctele de date pentru a le folosi. Acest scor poate fi binar (similar / diferit). De exemplu, imaginați-vă un set de date de verificare a feței, unde știm ce imagini ale feței aparțin aceleiași persoane (similare) și care nu (diferite). Folosind o funcție de pierdere a clasamentului, putem antrena un CNN pentru a deduce dacă două imagini ale feței aparțin aceleiași persoane sau nu.

pentru a utiliza o funcție de pierdere a clasamentului, extragem mai întâi caracteristici din două (sau trei) puncte de date de intrare și obținem o reprezentare încorporată pentru fiecare dintre ele. Apoi, definim o funcție metrică pentru a măsura similitudinea dintre aceste reprezentări, de exemplu distanța euclidiană. În cele din urmă, antrenăm extractoarele de caracteristici pentru a produce reprezentări similare pentru ambele intrări, în cazul în care intrările sunt similare sau reprezentări îndepărtate pentru cele două intrări, în cazul în care acestea sunt diferite.
nici măcar nu ne pasă de valorile reprezentărilor, ci doar de distanțele dintre ele. Cu toate acestea, această metodologie de formare a demonstrat că produce reprezentări puternice pentru diferite sarcini.

formularea pierderilor de clasare

diferite nume sunt utilizate pentru clasarea pierderilor, dar formularea lor este simplă și invariantă în majoritatea cazurilor. Distingem două tipuri de pierderi de clasare pentru două setări diferite: atunci când folosim perechi de puncte de date de antrenament sau triplete de puncte de date de antrenament.
ambele compară distanțele dintre reprezentările eșantioanelor de date de antrenament.

dacă preferați formatul video, am făcut un videoclip din această postare. De asemenea, disponibil în limba spaniolă:

pierdere clasament perechi

exemplu de configurare a pierderii de clasare în perechi pentru a antrena o plasă pentru verificarea feței imaginii. În această configurație, greutățile CNNs sunt partajate. Noi o numim plase siameze. Dar o pierdere de rang pereche poate fi utilizată în alte setări sau cu alte plase.

pentru perechile pozitive, pierderea va fi \(0\) numai atunci când netul produce reprezentări pentru ambele elemente din pereche fără distanță între ele, iar pierderea (și, prin urmare, actualizarea parametrilor neți corespunzători) va crește cu acea distanță.

pentru perechile negative, pierderea va fi \(0\) când distanța dintre reprezentările celor două elemente pereche este mai mare decât marja \(m\). Dar când această distanță nu este mai mare decât \(m\), pierderea va fi pozitivă, iar parametrii neți vor fi actualizați pentru a produce o reprezentare mai îndepărtată pentru aceste două elemente. Valoarea pierderii va fi cel mult \(m\), când distanța dintre \(r_a\) și \(r_n\) este \(0\). Funcția marjei este că, atunci când reprezentările produse pentru o pereche negativă sunt suficient de îndepărtate, nu se irosesc eforturi pentru mărirea acelei distanțe, astfel încât formarea ulterioară se poate concentra pe perechi mai dificile.

Triplet clasament pierdere

exemplu de setare a pierderii clasamentului triplet pentru a antrena o plasă pentru verificarea feței imaginii. În această configurație, greutățile CNNs sunt partajate. Noi o numim plase triple.

Să analizăm 3 situații ale acestei pierderi:

Sursa: https://omoindrot.github.io/triplet-loss. Reprezentarea a trei “tipuri de negative” pentru o ancoră și o pereche pozitivă.

selecție negative

o decizie importantă a unui antrenament cu pierderea clasamentului Triplet este selecția negativă sau mineritul triplet. Strategia aleasă va avea un impact ridicat asupra eficienței instruirii și performanței finale. O apreciere evidentă este că antrenamentul cu triplete ușoare ar trebui evitat, deoarece pierderea lor rezultată va fi \(0\).

primele strategii utilizate offline triplet miniere, ceea ce înseamnă că tripleti sunt definite la începutul formării, sau la fiecare epocă. Ulterior, a fost propusă exploatarea tripletelor online, ceea ce înseamnă că tripletele sunt definite pentru fiecare lot în timpul antrenamentului, ceea ce a dus la o mai bună eficiență și performanță a antrenamentului.
modul optim de selecție a negativelor depinde în mare măsură de sarcină. Dar nu voi intra în acest post, deoarece obiectivul său este doar o privire de ansamblu asupra diferitelor nume și abordări pentru clasarea pierderilor. Consultați Oliver moindrot blog post pentru o analiză mai profundă asupra mineritului triplet.

pierderea tripletelor în învățarea profundă a fost introdusă în învățarea asemănării imaginii cu granulație fină cu clasarea profundă și FaceNet: o încorporare unificată pentru recunoașterea feței și gruparea.

acest github conține câteva parcele interesante dintr-un model instruit pe MNIST cu pierdere de entropie încrucișată, pierdere de clasare în perechi și pierdere de clasare tripletă și cod Pytorch pentru acele antrenamente.

alte denumiri utilizate pentru clasarea pierderilor

sunt în esență cele explicate mai sus și sunt utilizate în multe aplicații diferite cu aceeași formulare sau variații minore. Cu toate acestea, pentru ei sunt folosite diferite nume, ceea ce poate fi confuz. Aici vă explic de ce sunt folosite aceste nume.

  • pierderea clasamentului: Acest nume provine din câmpul de recuperare a informațiilor, unde dorim să instruim modele pentru a clasifica articolele într-o anumită ordine.
  • pierdere în marjă: acest nume provine din faptul că aceste pierderi folosesc o marjă pentru a compara distanțele reprezentărilor eșantioanelor.
  • pierdere contrastivă: contrastiv se referă la faptul că aceste pierderi sunt calculate în contrast cu două sau mai multe reprezentări ale punctelor de date. Acest nume este adesea folosit pentru pierderea clasament perechi, dar nu am mai văzut folosind-o într-o configurație cu tripleti.
  • pierderea tripletului: adesea folosit ca nume de pierdere atunci când sunt folosite perechi de antrenament triplet.
  • balama pierdere: de asemenea, cunoscut sub numele de max-marja obiectiv. Este folosit pentru formarea SVMs pentru clasificare. Are o formulare similară în sensul că se optimizează până la o marjă. De aceea, acest nume este uneori folosit pentru clasarea pierderilor.

plasele siameze și triplete

plasele siameze și triplete sunt configurații de antrenament în care se utilizează pierderea de clasare în perechi și pierderea de clasare tripletă. Dar aceste pierderi pot fi utilizate și în alte setări.
în aceste setări, reprezentările pentru probele de antrenament din pereche sau triplet sunt calculate cu plase identice cu greutăți comune (cu același CNN).

plasele siameze

sunt construite de două CNN-uri identice cu greutăți comune (ambele CNN-uri au aceleași greutăți). Fiecare dintre aceste plase procesează o imagine și produce o reprezentare. Aceste reprezentări sunt comparate și se calculează o distanță între ele. Apoi, o pierdere de clasificare în perechi este utilizată pentru a instrui rețeaua, astfel încât distanța dintre reprezentările produse de imagini similare este mică, iar distanța dintre reprezentările imaginilor dis-similare este mare.

deoarece într-o configurație netă Siameză reprezentările pentru ambele elemente din pereche sunt calculate de același CNN, fiind \(f (x)\) că CNN, putem scrie pierderea de clasare în perechi ca:

plase triplete

ideea este similară cu o plasă Siameză, dar o plasă tripletă are trei ramuri (trei CNN-uri cu greutăți comune). Modelul este instruit oferind simultan o imagine pozitivă și una negativă imaginii ancorei corespunzătoare și folosind o pierdere de clasare tripletă. Acest lucru permite rețelei să învețe mai bine ce imagini sunt similare și diferite de imaginea ancorei.

în cazul plaselor triplete, deoarece același CNN \(f (x)\) este folosit pentru a calcula reprezentările pentru cele trei elemente triplete, putem scrie pierderea clasamentului Triplet ca :

pierderea clasamentului pentru recuperarea multimodală

în cercetarea mea, am folosit pierderea clasamentului Triplet pentru recuperarea multimodală a imaginilor și textului. Datele de instruire constau într-un set de date de imagini cu text asociat. Obiectivul este de a învăța încorporări de imagini și cuvinte în același spațiu pentru regăsire cross-modal. Pentru a face acest lucru, învățăm mai întâi și înghețăm încorporările cuvintelor doar din text, folosind algoritmi precum Word2Vec sau GloVe. Apoi, ne propunem să antrenăm un CNN pentru a încorpora imaginile în același spațiu: Ideea este de a învăța să încorporați o imagine și legenda asociată acesteia în același punct din spațiul de încorporare multimodal.

prima abordare pentru a face acest lucru, a fost formarea unui CNN pentru a prezice direct încorporarea textului din imagini folosind o pierdere de entropie încrucișată. Rezultatele au fost frumos, dar mai târziu am aflat că, folosind un Triplet rezultate pierdere clasament au fost mai bune.

configurarea este următoarea: folosim încorporări de text fixe (mănușă) și învățăm doar reprezentarea imaginii (CNN). Deci eșantionul ancoră \(a\) este imaginea, eșantionul pozitiv \(p\) este textul asociat acelei imagini, iar eșantionul negativ \(n\) este textul unei alte imagini “negative”. Pentru a alege textul negativ, am explorat diferite strategii miniere negative online, folosind distanțele din spațiul mănușii cu încorporarea textului pozitiv. Tripleti miniere este deosebit de sensibil în această problemă, deoarece nu există clase stabilite. Având în vedere diversitatea imaginilor, avem multe triplete ușoare. Dar trebuie să fim atenți miniere hard-negative, deoarece textul asociat la o altă imagine poate fi, de asemenea, valabil pentru o imagine de ancorare.

Triplet clasament pierderea de formare a unei conducte de recuperare multi-modal. Încorporările mănușii de text sunt fixe și antrenăm CNN pentru a încorpora imaginea mai aproape de textul său pozitiv decât de textul negativ.

folosind această configurare am calculat câteva rezultate cantitative pentru a compara Triplet Ranking Loss training cu Cross-Entropy Loss training. Nu voi explica detaliile experimentului aici, dar configurarea este aceeași cu cea utilizată în (hârtie, blogpost). Practic, facem câteva interogări textuale și evaluăm imaginea prin performanța de recuperare a textului atunci când învățăm din datele social Media într-un mod auto-supravegheat. Rezultatele care utilizează o pierdere de clasare tripletă sunt semnificativ mai bune decât utilizarea unei pierderi de entropie încrucișată.

recuperarea imaginii prin precizie medie a textului pe InstaCities1M.

un alt avantaj al utilizării unei pierderi de clasare tripletă în loc de o pierdere de entropie încrucișată sau o pierdere medie de eroare pătrată pentru a prezice încorporările de text, este că putem pune deoparte încorporările de text precalculate și fixe, pe care în cazul regresiei le folosim ca adevăr de bază pentru modelele out. Acest lucru permite utilizarea RNN, LSTM pentru a procesa textul, pe care îl putem antrena împreună cu CNN și care conduc la reprezentări mai bune.

abordări similare sunt utilizate pentru instruirea sistemelor de recuperare multimodală și a sistemelor de subtitrare în COCO, de exemplu aici.

clasarea straturilor de pierdere în cadrele de învățare profundă

Caffe

  • strat de pierdere Constrastivă. Limitat la calculul pierderilor de rang în perechi. Poate fi folosit, de exemplu, pentru a instrui rețelele siameze.

  • Pycaffe Triplet Clasament Strat Pierdere. De David Lu pentru a instrui rețele triplet.

PyTorch

  • CosineEmbeddingLoss. Este o pierdere de clasificare în perechi care folosește distanța cosinusului ca metrică a distanței. Intrările sunt caracteristicile elementelor pereche, eticheta care indică dacă este o pereche pozitivă sau negativă și marja.

  • MarginRankingLoss. Similar cu primul, dar folosește distanța euclidiană.

  • Tripletmargin pierde. O pierdere de clasificare Triplet folosind distanța euclidiană.

TensorFlow

  • contrastive_loss. Pierdere Clasament Perechi.

  • triplet_semihard_loss. Pierdere Triplet cu minerit negativ semi-greu.

Lasă un răspuns

Adresa ta de email nu va fi publicată.