"Ne bodi prestrog do sebe" je spoznal Globoko učenje

To je zgodba spoznanja, ki ga je imela skupnost Deep Learning v začetku letošnjega leta, "da svojih modelov ne kaznuje preveč, da bi se zmotili". Do tega spoznanja je prišlo, ko so raziskovalci z glavo trkali ob zid, ko so poskušali najrazličnejše hekerje za večpredmetno odkrivanje. Potem pa je prišla menjava iger iz Facebookove raziskave AI (FAIR) - Focal Loss for Dense Object Detection - ki je prinesla to spoznanje, da smo morda preveč ostri, in še enkrat je en vpogled (spremenil v matematično enačbo) odstranil vse navlaka.

Najprej začnemo z nekaj ozadja. Da bomo lahko usposobili katero koli nevronsko mrežo, potrebujemo 3 stvari:

  1. Podatki
  2. Arhitektura nevronske mreže
  3. Funkcija izgube

Naloga funkcije izgube je ustvariti nizko število, ko je izhod iz nevronske mreže blizu dejanske vrednosti in obratno. Tako kaznujemo nevronsko mrežo zaradi napačnosti.

Če pogledamo zgodovino zaznavanja več objektov, sta nastala dva razreda modelov (skoraj istočasno konec leta 2015) za odkrivanje več objektov od konca do konca: YOLO (samo pogledate nekoč) in SSD (Single Shot Multibox Detector), ki sta bila predstavnika dveh možnih arhitektur, ki bi jih lahko imeli, s pritrjevanjem glave po predhodno izurjeni konvolucijski mreži - kot je ResNet.

YOLO je predstavljal razred modelov, pri katerem smo iz popolnoma povezanega linearnega sloja izpustili en dolg vektor, medtem ko se je pristop konvolucijskih aktivacij v glavi po meri lotil SSD razreda modelov.

Od izdaje YOLO in SSD so se stvari precej premaknile proti SSD - do te mere, da YOLOv3 (različica 3 YOLO-ja) zdaj to počne na način SSD, ker SSD uporablja sprejemljivo polje konvolucijskih aktivacij.

Sprejemno polje aktivacije ni nič drugega kot tisti del vnosa, ki je bil vključen v izračun te aktivacije. Upoštevajte, da v sprejemnem polju ne piše samo, da so "vhodi znotraj tega pravokotnika odgovorni za to aktivacijo", ampak tudi, da so "od vseh vhodov znotraj tega pravokotnika tisti, ki so v središču, bolj odgovorni za to aktivacijo kot drugi" .

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

Sprejemno polje nam omogoča, da rečemo nekaj takega:

Aktiviranje zgornjega levega zgornjega levega dela bo odgovorno za predmete v zgornjem levem delu slike, spodnje-desno skrajno aktiviranje izida konvolucijske plasti bo odgovorno za predmete v zgornjem desnem delu slike in tako naprej .

Zdaj lahko naša funkcija izgube pogleda vsako izhodno konvolucijsko aktivacijo in se odloči, ali lahko ta aktivacija pravilno odraža koordinate in razrede omejevalnega polja objektov v njegovem sprejemljivem polju. To je v resnici težko narediti :(. To vključuje "težavo ujemanja", ki se reši tako, da se vgradijo sidrna polja (ali privzeta polja) in poiščejo njihovo prekrivanje (indeks Žakarda ali križišče nad Unijo) z vsakim od tal predmeti resnice. Nato je, kot je opisano v dokumentu SSD, vsakemu od sidrnih polj dodeljen indeks ali ozadje predmeta tal.

Opomba: Če zadnji odstavek ni imel veliko smisla, bodisi preberite o SSD-ju ali počakajte na mojo naslednjo objavo v blogu, da boste razumeli, kako razlagamo aktivacije in z njimi manipuliramo!

Ko smo šli mimo faze ujemanja, smo v bistvu končali. Za uvrstitev v funkcijo izgube lahko vzamemo aktivacije, ki ustrezajo izbranim sidrnim poljem, in za izgubo L1 izgube za koordinate omejevalnega polja in navzkrižno izgubo entropije.

Vendar to še vedno ne daje odličnih rezultatov. Model z majhnimi predmeti na sliki ne dela dobro. In vpogled v to, zakaj to ne deluje, je prišel iz papirja za fokusno izgubo zaradi gostega zaznavanja predmetov.

Imamo sidrne škatle različnih granularnosti. Manjše sidrne škatle so verjetno odgovorne za iskanje majhnih predmetov na sliki. Ker pa večina manjših sidrišč med našim treningom vsebuje ozadje, nikoli ne postanejo samozavestni s predvidevanjem drugih razredov. In zakaj ne postanejo samozavestni - ker jih preveč ostro kaznujemo, da bi se zmotili. In to je bilo to! Focal loss paper je ta vpogled spremenil v matematično formulo, kot je prikazano spodaj, in popolnoma spremenil igro!

Vir: Papir o goriščni izgubi

Modra črta na zgornjem grafu je navzkrižna izguba entropije. Os y kaže na izgubo navzkrižne entropije, ki jo mora utrpeti model, če napoveduje razred resničnosti tal z verjetnostjo x (na osi x). Bistvo je torej, da četudi model napoveduje pravo stvar z verjetnostjo 0,6, to še vedno veliko kaznujemo. Tudi če model želi predvideti pravi razred, se mu to ne izplača, in ker je večinoma ozadje, model na koncu izpostavi ozadje, razen če ni prekleto prepričan v kakšnem drugem razredu. Trik je torej v tem, da spremenite funkcijo izgube, da bo na grafu videti bolj kot zelena ali vijolična črta. Papir o goriščni izgubi je pomnožil izgubo navzkrižne entropije za faktor, da je model manj oster in je prinesel odlične rezultate, kot lahko preverite tukaj.