„Ära ole enda vastu liiga raske“ mõistis Deep Learning

See on lugu arusaamast, mis Deep Learning kogukonnal selle aasta alguses oli - "et mitte oma mudeleid eksimise eest liiga palju karistada". See teostus saadi sel ajal, kui teadlased põrutasid pead vastu seina, proovides mitmesuguste objektide tuvastamiseks igasuguseid häkke. Siis aga tuli mängude vahetaja Facebook AI Researchilt (FAIR) - Focal Loss for tihedate objektide tuvastus -, mis tõi kaasa mõistmise, et võib-olla oleme liiga karmid, ja jällegi eemaldas üks ülevaade (muudetud matemaatiliseks võrrandiks) kõik segadust.

Alustame kõigepealt mõne taustaga. Mis tahes närvivõrgu treenimiseks on vaja kolme asja:

  1. Andmed
  2. Neuraalvõrgu arhitektuur
  3. Kaotuse funktsioon

Kadude funktsiooni ülesanne on toota väike arv, kui väljund närvivõrgust on tegeliku väärtuse lähedal ja vastupidi. Nii karistame närvivõrku valede eest.

Kui vaadata mitme objekti objektide tuvastamise ajalugu, siis tekkisid kaks objekti klassi (peaaegu samal ajal 2015. aasta lõpus) ​​otsese (üheastmelise) mitme objekti tuvastamiseks: YOLO (ainult teie vaatate üks kord) ja SSD (Single Shot Multibox Detector), mis olid kahe võimaliku arhitektuuri esindajad, mis meil võisid olla, kleepides kohandatud pea eelnevalt koolitatud konvolutsioonivõrku - nagu ResNet.

YOLO esindas mudeliklassi, kus me sidusime täielikult ühendatud lineaarsest kihist välja ühe pika vektori, samal ajal kui kohandatud pea konvolutsiooniliste aktiveerimiste lähenemist alustas SSD mudeliklass.

Pärast YOLO ja SSD vabastamist on asjad üsna palju liikunud SSD suunas - punktini, et YOLOv3 (YOLO 3. versioon) teeb seda nüüd SSD viisil, kuna SSD kasutab konvolutsiooniliste aktiveerimiste vastuvõtvat välja.

Aktiveerimise vastuvõtuväli pole midagi muud kui sisend, mis osales aktiveerimise arvutamisel. Pange tähele, et vastuvõtlik väli ei ütle mitte ainult seda, et "selle ristküliku sees olevad sisendid vastutavad selle aktiveerimise eest", vaid öeldakse ka, et "kõigist selle ristküliku sees olevatest sisenditest vastutavad selle aktiveerimise eest ümbritsevad keskpunktid rohkem kui teised" .

Allikas: http://cs231n.github.io/convolutional-networks/

Vastuvõtuväli võimaldab meil öelda midagi sellist:

Konvolutsioonikihi väljundi ülaservas aktiveerimine vastutab pildi vasakpoolses ülanurgas asuvate objektide eest, alumine-parempoolne konvolutsioonikihi väljundi aktiveerimine vastutab objektide eest pildi paremas alanurgas ja nii edasi .

Nüüd saab meie kadudefunktsioon vaadata kõiki väljundlikke konvolutsioonilisi aktiveerimisi ja otsustada, kas see aktiveerimine on võimeline peegeldama korrektselt objektide piirdekasti koordinaate ja klasse selle vastuvõtvas väljal. See osutub tegelikult raskesti teostatavaks :(. See hõlmab „vastavusprobleemi”, mis lahendatakse ankurduskastide (või vaikimisi lahtrite) olemasolu ja nende kattuvuse (Jaccardi indeks või ristmik üle liidu) leidmisega iga maaga Seejärel, nagu on kirjeldatud SSD-dokumendis, omistatakse igale ankurduskastile tõeobjektide register või taust.

Märkus. Kui viimasel lõigul polnud suurt mõtet, lugege siis SSD-d või oodake minu järgmist blogipostitust, et mõistaksime, kuidas me aktiveerimisi tõlgendame ja nendega manipuleerime!

Kui oleme sobitusetapist möödunud, oleme põhimõtteliselt valmis. Võime võtta kasutusele aktiveerimised, mis vastavad sobitatud ankrukastidele, ja võtta L1 kaotus piirdekasti koordinaatide jaoks pluss Cross Entropy kaotus klassifikatsiooni jaoks, et meil oleks kaotusfunktsioon.

Kuid see ei anna meile endiselt suurepäraseid tulemusi. Mudel ei tee väikeste kujutisega objektidega head tööd. Ja arusaam, miks see ei töötanud, tuli Focal Loss for Dense Object Detection paberist.

Meil on erineva täpsusega ankrukarbid. Tõenäoliselt vastutavad pildil olevate väikeste objektide leidmise eest väiksemad ankurikarbid. Kuna enamik meie koolitustel olevatest väiksematest ankurduskastidest sisaldab tausta, ei saa nad teiste klasside ennustamisel kunagi enesekindlaks. Ja miks nad ei saa enesekindlaks - sest karistame neid eksituse eest liiga karmilt. Ja see oligi! Focal loss paber muutis selle ülevaate matemaatiliseks valemiks, nagu allpool näidatud, ja muutis mängu täielikult!

Allikas: Focal loss paber

Sinine joon ülaltoodud graafikul on rist-entroopia kaotus. Y-teljel on näidatud ristandomeetria kaotus, mida mudel peab kannatama, kui see ennustab maapinna tõeklassi tõenäosusega x (x-teljel). Seega on asi selles, et isegi kui mudel ennustab õiget tõenäosust 0,6, karistame seda siiski palju. Isegi kui mudel soovib õiget klassi ennustada, pole selle eest mingit tulu ja kuna enamasti on see taust, ütleb mudel tagapõhja välja, kui pole mõne muu klassi suhtes kindel. Seega on trikk kaotusfunktsiooni muutmine, et see näeks graafikul rohelise või lilla joone moodi välja. Teravustuskaotuspaber korrutas Cross Entropy kadu teguriga, et muuta see mudeli jaoks vähem karmiks ja andis suurepäraseid tulemusi, nagu siin saate kontrollida.