Porozumění ztrátě pořadí, kontrastní ztrátě, ztrátě marže, ztrátě tripletu, ztrátě závěsu a všem těm matoucím jménům

po úspěchu mého příspěvku porozumění kategorické ztrátě křížové entropie, binární ztrátě křížové entropie, ztrátě Softmax, logistické ztrátě, ohniskové ztrátě a všem těm matoucím jménům a po kontrole, že ztráta tripletu překonává ztrátu křížové entropie v mém hlavním výzkumném tématu (multimodální vyhledávání) jsem se rozhodl napsat podobný příspěvek vysvětlující funkce ztrátových hodnocení.

ztráty Hodnocení se používají v různých oblastech, úkolech a nastaveních neuronových sítí (jako jsou siamské sítě nebo tripletové sítě). Proto dostávají různá jména, jako je kontrastní ztráta, ztráta marže,ztráta závěsu nebo ztráta tripletu.

funkce ztráty pořadí: metrické učení

na rozdíl od jiných ztrátových funkcí, jako je ztráta křížové entropie nebo ztráta Střední čtvercové chyby, jejichž cílem je naučit se přímo předpovídat štítek, hodnotu nebo sadu nebo hodnoty dané vstupem, je cílem ztrát hodnocení předpovídat relativní vzdálenosti mezi vstupy. Tento úkol, pokud se často nazývá metrické učení.

funkce ztrát hodnocení jsou velmi flexibilní, pokud jde o tréninková data: k jejich použití potřebujeme pouze skóre podobnosti mezi datovými body. Toto skóre může být binární (podobné / odlišné). Jako příklad si představte datovou sadu pro ověření obličeje, kde víme, které obrázky obličeje patří stejné osobě (podobné) a které ne(odlišné). Pomocí funkce ztráty Hodnocení můžeme trénovat CNN, abychom odvodili, zda dva obrázky obličeje patří stejné osobě nebo ne.

Chcete-li použít funkci ztráty pořadí, nejprve extrahujeme funkce ze dvou (nebo tří) vstupních datových bodů a získáme vloženou reprezentaci pro každý z nich. Poté definujeme metrickou funkci pro měření podobnosti mezi těmito reprezentacemi, například euklidovská vzdálenost. Nakonec trénujeme extraktory funkcí tak, aby vytvářely podobné reprezentace pro oba vstupy, v případě, že vstupy jsou podobné, nebo vzdálené reprezentace pro dva vstupy, v případě, že jsou odlišné.
nestaráme se ani o hodnoty reprezentací, pouze o vzdálenosti mezi nimi. Tato metodika školení však prokázala, že vytváří silné reprezentace pro různé úkoly.

formulace hodnotících ztrát

pro hodnocení ztrát se používají různé názvy, ale jejich formulace je ve většině případů jednoduchá a invariantní. Rozlišujeme dva druhy ztrát hodnocení pro dvě nastavení differents: když používáme dvojice tréninkových datových bodů nebo trojčata tréninkových datových bodů.
oba porovnávají vzdálenosti mezi reprezentacemi vzorků tréninkových dat.

pokud dáváte přednost formátu videa, udělal jsem video z tohoto příspěvku. K dispozici také ve španělštině:

pairwise Ranking Loss

příklad nastavení ztráty párového hodnocení pro trénování sítě pro ověření obličeje obrazu. V tomto nastavení jsou sdíleny váhy CNN. Říkáme tomu siamské sítě. Párová ztráta pořadí však může být použita v jiných nastaveních, nebo s jinými sítěmi.

u kladných párů bude ztráta \(0\) pouze tehdy, když síť vytvoří reprezentace pro oba dva prvky v páru bez vzdálenosti mezi nimi, a ztráta (a proto odpovídající aktualizace parametrů sítě) se s touto vzdáleností zvýší.

pro záporné páry bude ztráta \(0\), pokud je vzdálenost mezi reprezentacemi dvou párových prvků větší než okraj \(m\). Ale když tato vzdálenost není větší než \(m\), ztráta bude kladná a čisté parametry budou aktualizovány, aby vytvořily vzdálenější reprezentaci pro tyto dva prvky. Hodnota ztráty bude nanejvýš \(m\), pokud je vzdálenost mezi \(r_a\) a \(r_n\) \(0\). Funkce marže spočívá v tom, že když jsou reprezentace vytvořené pro negativní pár dostatečně vzdálené, není vynaloženo žádné úsilí na zvětšení této vzdálenosti, takže další školení se může zaměřit na obtížnější páry.

trojnásobná ztráta pořadí

příklad nastavení ztráty pořadí tripletů pro trénování sítě pro ověření obličeje obrazu. V tomto nastavení jsou sdíleny váhy CNN. Říkáme tomu trojité sítě.

pojďme analyzovat 3 Situace této ztráty:

zdroj: https://omoindrot.github.io/triplet-loss. Reprezentace tří “typů negativů” pro kotvu a pozitivní pár.

výběr negativů

důležitým rozhodnutím tréninku se ztrátou pořadí tripletů je výběr negativů nebo těžba tripletů. Zvolená strategie bude mít velký dopad na efektivitu školení a konečný výkon. Zjevným oceněním je, že je třeba se vyhnout tréninku s lehkými trojčaty, protože jejich výsledná ztráta bude \(0\).

první strategie používané v režimu offline triplet mining, což znamená, že trojčata jsou definovány na začátku tréninku, nebo v každé epoše. Později byla navržena online těžba tripletů, což znamená, že trojčata jsou definována pro každou šarži během tréninku, což vedlo k lepší efektivitě a výkonu školení.
optimální způsob výběru negativů je velmi závislý na úkolu. Ale v tomto příspěvku se do toho nedostanu, protože jeho cílem je pouze přehled různých jmen a přístupů k hodnocení ztrát. Podrobnější analýzu těžby tripletů najdete na blogu Olivera moindrota.

Triplet Loss in deep learning byl zaveden v učení jemnozrnné podobnosti obrazu s hlubokým hodnocením a FaceNet: jednotné vkládání pro rozpoznávání obličeje a shlukování.

tento github obsahuje některé zajímavé grafy z modelu vyškoleného na MNIST se ztrátou Cross-entropie, ztráta párového hodnocení a ztráta pořadí tripletů, a Pytorch kód pro tyto tréninky.

Jiné názvy používané pro hodnocení ztrát

hodnocení ztrát jsou v podstatě ty, které jsou vysvětleny výše, a používají se v mnoha různých aplikacích se stejnou formulací nebo menšími odchylkami. Pro ně se však používají různá jména, což může být matoucí. Zde vysvětluji, proč se tato jména používají.

  • ztráta pořadí: Tento název pochází z pole pro vyhledávání informací, kde chceme trénovat modely pro hodnocení položek v určitém pořadí.
  • ztráta marže: tento název pochází ze skutečnosti, že tyto ztráty používají marži k porovnání vzdáleností reprezentací vzorků.
  • Contrastive Loss: Contrastive odkazuje na skutečnost, že tyto ztráty jsou vypočteny kontrastními dvěma nebo více reprezentacemi datových bodů. Tento název se často používá pro ztrátu párového hodnocení, ale nikdy jsem ho neviděl používat v nastavení s trojčaty.
  • Triplet Loss: často se používá jako Název ztráty, když jsou použity tréninkové páry tripletů.
  • ztráta závěsu: také známý jako cíl max-margin. Používá se pro výcvik SVM pro klasifikaci. Má podobnou formulaci v tom smyslu, že optimalizuje až do marže. Proto se tento název někdy používá pro hodnocení ztrát.

siamské a tripletové sítě

siamské a tripletové sítě jsou tréninkové sestavy, kde se používají párová ztráta pořadí a ztráta pořadí tripletů. Tyto ztráty však lze použít i v jiných nastaveních.
v těchto nastaveních jsou reprezentace pro tréninkové vzorky v páru nebo trojici vypočteny se stejnými sítěmi se sdílenými váhami (se stejnou CNN).

siamské sítě

jsou postaveny dvěma identickými CNN se sdílenými váhami (obě CNN mají stejné váhy). Každá z těchto sítí zpracovává obraz a vytváří reprezentaci. Tyto reprezentace jsou porovnány a je vypočtena vzdálenost mezi nimi. Pak, párová ztráta pořadí se používá k trénování sítě, tak, že vzdálenost mezi reprezentacemi produkovanými podobnými obrázky je malá, a vzdálenost mezi reprezentacemi obrazů podobných dis je velká.

Vzhledem k tomu, že v nastavení siamské sítě jsou reprezentace obou prvků v páru vypočteny stejnou CNN, protože je \(f (x)\), že CNN, můžeme zapsat ztrátu párového hodnocení jako:

tripletové sítě

myšlenka je podobná siamské síti, ale tripletová síť má tři větve (tři CNN se sdílenými váhami). Model je vyškolen tím, že současně dává pozitivní a negativní obraz odpovídajícímu kotevnímu obrazu, a pomocí ztráty pořadí tripletů. To umožňuje síti lépe zjistit, které obrázky jsou podobné a odlišné od obrazu kotvy.

v případě trojčlenných sítí, protože stejná CNN \(f (x)\) se používá k výpočtu reprezentací pro tři trojčlenné prvky, můžeme ztrátu pořadí trojčat zapsat jako :

ztráta pořadí pro multimodální vyhledávání

ve svém výzkumu jsem používal ztrátu pořadí tripletů pro multimodální vyhledávání obrázků a textu. Tréninková data se skládají z datové sady obrázků s přidruženým textem. Cílem je naučit embeddings obrazů a slov ve stejném prostoru pro cross-modální vyhledávání. Za tímto účelem se nejprve naučíme a zmrazíme vkládání slov pouze z textu pomocí algoritmů, jako je Word2Vec nebo GloVe. Pak, naším cílem je vycvičit CNN, aby vložil obrázky do stejného prostoru: Cílem je naučit se vložit obrázek a jeho přidružený titulek do stejného bodu v multimodálním vloženém prostoru.

prvním přístupem k tomu bylo školení CNN, aby přímo předpovídala vkládání textu z obrázků pomocí ztráty křížové entropie. Výsledky byly pěkné, ale později jsme zjistili, že pomocí trojčlenného žebříčku byly výsledky ztráty lepší.

nastavení je následující: používáme pevné textové vkládání (rukavice) a učíme se pouze reprezentaci obrazu (CNN). Takže vzorek kotvy \(a\) je obrázek, pozitivní vzorek \(p\) je text přidružený k tomuto obrázku a negativní vzorek \(n\) je text jiného “negativního” obrázku. Chcete-li vybrat negativní text, prozkoumali jsme různé online negativní strategie těžby, pomocí vzdáleností v prostoru rukavice s vložením pozitivního textu. Těžba trojčat je v tomto problému obzvláště rozumná, protože neexistují zavedené třídy. Vzhledem k rozmanitosti obrázků máme mnoho snadných trojčat. Musíme však být opatrní těžbou tvrdých negativů, protože text spojený s jiným obrázkem může být platný i pro kotevní obrázek.

trojnásobný trénink ztrátového hodnocení multimodálního vyhledávacího potrubí. Vkládání textových rukavic je pevné a trénujeme CNN, aby vložil obrázek blíže k jeho pozitivnímu textu než k negativnímu textu.

pomocí tohoto nastavení jsme vypočítali některé kvantitativní výsledky, abychom porovnali trénink ztráty trojčat s tréninkem ztráty mezi Entropiemi. Nebudu zde vysvětlovat podrobnosti experimentu, ale nastavení je stejné jako to, které bylo použito v (papír, blogpost). V zásadě provádíme některé textové dotazy a vyhodnocujeme obraz podle výkonu načítání textu, když se učíme z dat sociálních médií samostatně pod dohledem. Výsledky využívající ztrátu hodnocení Triplet jsou výrazně lepší než použití ztráty křížové entropie.

vyhledávání obrázků podle průměrné přesnosti textu na InstaCities1M.

další výhodou použití ztráty pořadí Triplet místo ztráty křížové entropie nebo střední ztráty chyby čtverce k předpovědi vkládání textu, je to, že můžeme odložit předem vypočtené a pevné vkládání textu, které v případě regrese používáme jako základní pravdu pro modely. To umožňuje použít RNN, LSTM ke zpracování textu, který můžeme trénovat společně s CNN a který vede k lepším reprezentacím.

podobné přístupy se používají pro výcvik multimodálních vyhledávacích systémů a systémů titulků v COCO, například zde.

hodnocení ztrátových vrstev v rámcích hlubokého učení

Caffe

  • Konstrastivní ztrátová vrstva. Omezeno na výpočet ztráty ve dvojicích. Lze použít například k výcviku siamských sítí.

  • PyCaffe Triplet Pořadí Ztráta Vrstva. David Lu trénovat triplet sítě.

PyTorch

  • Cosineembeddingztráta. Je to párová ztráta pořadí, která používá kosinusovou vzdálenost jako metriku vzdálenosti. Vstupy jsou vlastnosti párových prvků, štítek označující, zda se jedná o kladný nebo záporný pár, a okraj.

  • MarginRankingLoss. Podobně jako první, ale používá euclidian vzdálenost.

  • TripletMarginLoss. Ztráta pořadí Triplet pomocí euclidian vzdálenost.

TensorFlow

  • contrastive_loss. Párová Ztráta Pořadí.

  • triplet_semihard_loss. Trojnásobná ztráta s polotvrdou negativní těžbou.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.