Förstå Rankningsförlust, Kontrastiv förlust, Marginalförlust, Triplettförlust, Gångjärnsförlust och alla de förvirrande namnen

efter framgången med mitt inlägg förstå kategorisk Korsentropiförlust, binär Korsentropiförlust, Softmax-förlust, logistisk förlust, Fokalförlust och alla de förvirrande namnen, och efter att ha kontrollerat att Triplettförlusten överträffar Korsentropiförlust i mitt huvudforskningsämne (multimodal hämtning) bestämde jag mig för att skriva ett liknande inlägg som förklarar Rankningsförlustfunktioner.

Rankningsförluster används i olika områden, uppgifter och neurala nätverksuppsättningar (som siamesiska nät eller Triplettnät). Det är därför de får olika namn som Kontrastiv förlust, Marginalförlust, Gångjärnsförlust eller Triplettförlust.

Rankningsförlustfunktioner: metrisk inlärning

till skillnad från andra förlustfunktioner, såsom Korsentropiförlust eller Genomsnittlig Kvadratfelförlust, vars mål är att lära sig att förutsäga direkt en etikett, ett värde eller en uppsättning eller värden som ges en ingång, är målet att rangordna förluster att förutsäga relativa avstånd mellan ingångar. Denna uppgift om det ofta kallas metrisk inlärning.

Rankningsförlustfunktionerna är mycket flexibla när det gäller träningsdata: vi behöver bara en likhetspoäng mellan datapunkter för att använda dem. Den poängen kan vara binär (liknande / olika). Som ett exempel, föreställ dig en ansiktsverifieringsdataset, där vi vet vilka ansiktsbilder som tillhör samma person (liknande) och vilka inte (olika). Med hjälp av en Rankningsförlustfunktion kan vi träna en CNN för att dra slutsatsen om två ansiktsbilder tillhör samma person eller inte.

för att använda en Rankningsförlustfunktion extraherar vi först funktioner från två (eller tre) inmatningsdatapunkter och får en inbäddad representation för var och en av dem. Sedan definierar vi en metrisk funktion för att mäta likheten mellan dessa representationer, till exempel euklidiskt avstånd. Slutligen tränar vi funktionen extraktorer för att producera liknande representationer för båda ingångarna, om ingångarna är likartade eller avlägsna representationer för de två ingångarna, om de är olika.
vi bryr oss inte ens om värdena på representationerna, bara om avstånden mellan dem. Denna träningsmetodik har dock visat sig producera kraftfulla representationer för olika uppgifter.

Rankningsförluster formulering

olika namn används för Rankningsförluster, men deras formulering är enkel och invariant i de flesta fall. Vi skiljer två typer av Rankningsförluster för två olika inställningar: när vi använder par träningsdatapunkter eller tripletter av träningsdatapunkter.
båda jämför avstånd mellan representationer av träningsdataprover.

om du föredrar videoformat gjorde jag en video av det här inlägget. Finns även på spanska:

parvis Rankningsförlust

exempel på en parvis ranking förlust setup för att träna ett nät för bild ansikte verifiering. I denna inställning delas vikterna för CNN: erna. Vi kallar det siamesiska nät. Men en parvis rankningsförlust kan användas i andra inställningar eller med andra nät.

för positiva par kommer förlusten att vara \(0\) endast när nätet producerar representationer för båda de två elementen i paret utan avstånd mellan dem, och förlusten (och därmed motsvarande nätparameteruppdatering) kommer att öka med det avståndet.

för negativa par blir förlusten \(0\) när avståndet mellan representationerna för de två parelementen är större än marginalen \(m\). Men när det Avståndet inte är större än \(m\) kommer förlusten att vara positiv, och nettoparametrar kommer att uppdateras för att producera mer avlägsen representation för dessa två element. Förlustvärdet kommer att vara högst \(m\), när avståndet mellan \(r_a\) och \(r_n\) är \(0\). Marginalens funktion är att när representationerna som produceras för ett negativt par är tillräckligt avlägsna, slösas inga ansträngningar på att förstora det Avståndet, så vidareutbildning kan fokusera på svårare par.

triplett Ranking förlust

exempel på en triplett ranking förlust setup för att träna ett nät för bild ansikte verifiering. I denna inställning delas vikterna för CNN: erna. Vi kallar det trippelnät.

låt oss analysera 3 situationer av denna förlust:

källa: https://omoindrot.github.io/triplet-loss. Representation av tre “typer av negativ” för ett ankare och positivt par.

negativ Selection

ett viktigt beslut av en utbildning med triplett Ranking förlust är negativ selection eller triplett mining. Den valda strategin kommer att ha stor inverkan på träningseffektiviteten och slutprestandan. En uppenbar uppskattning är att träning med enkla tripletter bör undvikas, eftersom deras resulterande förlust blir \(0\).

första strategier som används offline triplett mining, vilket innebär att tripletter definieras i början av utbildningen, eller vid varje epok. Senare, Online triplett mining, vilket innebär att tripletter definieras för varje sats under träningen, föreslogs och resulterade i bättre träningseffektivitet och prestanda.
det optimala sättet för negativt val är mycket beroende av uppgiften. Men jag kommer inte att komma in i det här inlägget, eftersom målet bara är översikt över de olika namnen och metoderna för Rankningsförluster. Se Oliver moindrot blogginlägg för en djupare analys av triplett mining.

Triplettförlust i djupt lärande introducerades för att lära sig finkornig Bildlikhet med djup Ranking och FaceNet: en enhetlig inbäddning för ansiktsigenkänning och kluster.

denna github innehåller några intressanta tomter från en modell utbildad på MNIST med Cross-entropi förlust, parvis Ranking förlust och triplett Ranking förlust, och Pytorch kod för dessa utbildningar.

andra namn som används för Rankningsförluster

Rankningsförluster är väsentliga de som förklaras ovan och används i många olika aplications med samma formulering eller mindre variationer. Men olika namn används för dem, vilket kan vara förvirrande. Här förklarar jag varför dessa namn används.

  • Rankningsförlust: Detta namn kommer från fältet informationshämtning, där vi vill träna modeller för att rangordna objekt i en specifik ordning.
  • Marginalförlust: detta namn kommer från det faktum att dessa förluster använder en marginal för att jämföra provrepresentationer avstånd.
  • Kontrastiv förlust: Kontrastiv hänvisar till det faktum att dessa förluster beräknas kontrasterande två eller flera datapunkter representationer. Detta namn används ofta för parvis Ranking förlust, men jag har aldrig sett att använda den i en installation med trillingar.
  • Triplettförlust: används ofta som förlustnamn när triplettträningspar används.
  • Gångjärnsförlust: även känd som maxmarginalmål. Den används för att träna SVMs för klassificering. Den har en liknande formulering i den meningen att den optimerar till en marginal. Därför används detta namn ibland för att rangordna förluster.

siamesiska och triplettnät

siamesiska och triplettnät är träningsinställningar där parvis Rankningsförlust och Triplettrankningsförlust används. Men dessa förluster kan också användas i andra inställningar.
i dessa inställningar beräknas representationerna för träningsproverna i paret eller tripletten med identiska nät med delade vikter (med samma CNN).

siamesiska nät

är byggda av två identiska CNN med delade vikter (båda CNN har samma vikter). Var och en av dessa nät bearbetar en bild och producerar en representation. Dessa representationer jämförs och ett avstånd mellan dem beräknas. Sedan används en parvis Rankningsförlust för att träna nätverket, så att avståndet mellan representationer som produceras av liknande bilder är litet och avståndet mellan representationer av disliknande bilder är stort.

eftersom representationerna för båda elementen i paret i en siamesisk net setup beräknas av samma CNN, som är \(f(x)\) som CNN, kan vi skriva den parvisa Rankningsförlusten som:

Triplettnät

tanken liknar ett siamesiskt nät, men ett triplettnät har tre grenar (tre CNN med delade vikter). Modellen tränas genom att samtidigt ge en positiv och en negativ bild till motsvarande ankarbild och använda en Triplettrankningsförlust. Det låter nätet lära sig bättre vilka bilder som liknar och skiljer sig från ankarbilden.

när det gäller triplettnät, eftersom samma CNN \(f (x)\) används för att beräkna representationerna för de tre tripletelementen, kan vi skriva Triplettrankningsförlusten som :

Ranking förlust för multimodal hämtning

i min forskning har jag använt Triplet Ranking förlust för multimodal hämtning av bilder och text. Träningsdata består av en datauppsättning bilder med tillhörande text. Målet är att lära sig inbäddning av bilderna och orden i samma utrymme för korsmodal hämtning. För att göra det lär vi oss först och fryser ordinbäddningar från enbart texten, med hjälp av algoritmer som Word2Vec eller GloVe. Sedan strävar vi efter att träna en CNN för att bädda in bilderna i samma utrymme: Tanken är att lära sig att bädda in en bild och dess tillhörande bildtext i samma punkt i det multimodala inbäddningsutrymmet.

det första sättet att göra det var att träna en CNN för att direkt förutsäga textinbäddning från bilder med hjälp av en Cross-Entropy-förlust. Resultaten var trevligt, men senare fick vi reda på att använda en triplett Ranking förlust resultaten var bättre.

inställningen är följande: vi använder fasta textinbäddningar (handske) och vi lär oss bara bildrepresentationen (CNN). Så ankarprovet \(a\) är bilden, det positiva provet \(p\) är texten som är associerad med den bilden och det negativa provet \(n\) är texten till en annan “negativ” bild. För att välja den negativa texten undersökte vi olika negativa gruvstrategier online, med hjälp av avstånden i Handskutrymmet med den positiva textinbäddningen. Triplets mining är särskilt förnuftigt i detta problem, eftersom det inte finns etablerade klasser. Med tanke på mångfalden av bilderna har vi många enkla tripletter. Men vi måste vara försiktig gruv hårt negativ, eftersom texten i samband med en annan bild kan också gälla för ett ankare bild.

Triplet Ranking förlust utbildning av en multimodal hämtning pipeline. Texthandskens inbäddning är fixad, och vi tränar CNN att bädda in bilden närmare sin positiva text än den negativa texten.

med hjälp av denna inställning beräknade vi några kvantitativa resultat för att jämföra triplett Ranking förlust utbildning med Cross-entropi förlust utbildning. Jag kommer inte att förklara experimentdetaljer här, men uppsättningen är densamma som den som används i (papper, bloggpost). I grund och botten gör vi några textfrågor och utvärderar bilden genom texthämtningsprestanda när vi lär oss från sociala mediedata på ett självövervakat sätt. Resultat med en triplett Ranking förlust är betydligt bättre än att använda en Cross-entropi förlust.

bildhämtning med text Genomsnittlig precision på InstaCities1M.

en annan fördel med att använda en triplett Ranking förlust istället en Cross – entropi förlust eller medelvärde Square Error förlust för att förutsäga text inbäddning, är att vi kan lägga undan pre-beräknade och fasta text inbäddning, som i regressions fall vi använder som mark sanning för UT modeller. Det gör det möjligt att använda RNN, LSTM för att bearbeta texten, som vi kan träna tillsammans med CNN, och som leder till bättre representationer.

liknande tillvägagångssätt används för att träna multimodala hämtningssystem och bildtextsystem i COCO, till exempel här.

rangordna Förlustlager i djupa inlärningsramar

Caffe

  • Constrastive förlust skikt. Begränsad till Pairwise Ranking förlust beräkning. Kan till exempel användas för att träna siamesiska nätverk.

  • PyCaffe Triplett Ranking Förlust Skikt. Av David Lu för att träna triplettnätverk.

PyTorch

  • Cosineeddingloss. Det är en parvis Rankningsförlust som använder cosinusavstånd som avståndsmätning. Ingångar är funktionerna i parelementen, etiketten som indikerar om det är ett positivt eller ett negativt Par och marginalen.

  • Marginalförlust. Liknar den förra, men använder euklidiskt avstånd.

  • Tripletmarginförlust. En triplett Ranking förlust med hjälp av euklidiska avstånd.

TensorFlow

  • contrastive_loss. Parvis Ranking Förlust.

  • triplet_semihard_loss. Triplettförlust med halvhård negativ gruvdrift.

Lämna ett svar

Din e-postadress kommer inte publiceras.