
Kod softverskih proizvoda za strojno učenje često je složen i prilično zbunjujući. Otkrivanje i uklanjanje grešaka u njemu zahtjevan je zadatak. Čak i najjednostavniji zahtijevaju ozbiljan pristup arhitekturi mreže, inicijalizaciji težina i optimizaciji mreže. Mala pogreška može dovesti do neugodnih problema.
Ovaj članak govori o algoritmu za otklanjanje pogrešaka vaših neuronskih mreža.
Skillbox preporučuje: Praktični tečaj .
Podsjećamo: za sve čitatelje "Habra" - popust od 10 000 rubalja pri upisu na bilo koji tečaj Skillbox koristeći promotivni kod "Habr".
Algoritam se sastoji od pet faza:
- lako pokretanje;
- potvrda gubitaka;
- provjera međurezultata i veza;
- dijagnostika parametara;
- kontrola rada.
Ako vam se nešto čini zanimljivijim od ostalih, možete odmah prijeći na ove dijelove.
Jednostavan početak
Neuronsku mrežu sa složenom arhitekturom, regularizacijom i planerom brzine učenja teže je otkloniti pogreške nego običnu. Ovdje smo malo lukavi, budući da je sama stvar neizravno povezana s otklanjanjem pogrešaka, ali ovo je ipak važna preporuka.
Jednostavan početak je stvoriti pojednostavljeni model i uvježbati ga na jednom skupu (točki) podataka.
Prvo kreiramo pojednostavljeni model
Kako bismo brzo započeli, stvaramo malu mrežu s jednim skrivenim slojem i provjeravamo radi li sve ispravno. Zatim postupno kompliciramo model, provjeravajući svaki novi aspekt njegove strukture (dodatni sloj, parametar itd.) i idemo dalje.
Model treniramo na jednom skupu (točki) podataka
Kao brzu provjeru ispravnosti vašeg projekta, možete koristiti jednu ili dvije podatkovne točke za obuku kako biste potvrdili radi li sustav ispravno. Neuronska mreža mora pokazati 100% točnost u obuci i testiranju. Ako to nije slučaj, onda je ili model premali ili već imate grešku.
Čak i ako je sve u redu, pripremite model za jednu ili više epoha prije nego krenete dalje.
Procjena gubitka
Procjena gubitaka je glavni način da se poboljša izvedba modela. Morate osigurati da gubitak odgovara problemu i da su funkcije gubitaka ocijenjene na ispravnoj ljestvici. Ako koristite više od jedne vrste gubitaka, provjerite jesu li sve istog redoslijeda i ispravno skalirane.
Važno je obratiti pažnju na početne gubitke. Provjerite koliko je stvarni rezultat blizu očekivanom rezultatu ako je model započeo nasumičnim nagađanjem. U : “Pobrinite se da dobijete rezultat koji očekujete kada počnete s malim brojem parametara. Bolje je odmah provjeriti gubitak podataka (sa stupnjem regularizacije postavljenim na nulu). Na primjer, za CIFAR-10 s Softmax klasifikatorom, očekujemo da će početni gubitak biti 2.302 jer je očekivana difuzna vjerojatnost 0,1 za svaku klasu (budući da postoji 10 klasa), a Softmax gubitak je negativna logaritamska vjerojatnost ispravne klase kao − ln (0.1) = 2.302.
Za binarni primjer, sličan izračun se jednostavno napravi za svaku od klasa. Evo, na primjer, podataka: 20% 0 i 80% 1. Očekivani početni gubitak bit će do –0,2ln (0,5) –0,8ln (0,5) = 0,693147. Ako je rezultat veći od 1, to može značiti da težine neuronske mreže nisu ispravno uravnotežene ili da podaci nisu normalizirani.
Provjera međurezultata i veza
Da bi se debugirala neuronska mreža, potrebno je razumjeti dinamiku procesa unutar mreže i ulogu pojedinih međuslojeva u njihovom povezivanju. Ovo su uobičajene pogreške na koje možete naići:
- netočni izrazi za gradle ažuriranja;
- ažuriranja težine se ne primjenjuju;
- eksplozivni gradijenti.
Ako su vrijednosti gradijenta nula, to znači da je stopa učenja u optimizatoru prespora ili da se susrećete s netočnim izrazom za ažuriranje gradijenta.
Osim toga, potrebno je pratiti vrijednosti aktivacijskih funkcija, težine i ažuriranja svakog od slojeva. Na primjer, veličina ažuriranja parametara (težine i pristranosti) .
Postoji fenomen koji se zove “Dying ReLU” ili , kada ReLU neuroni izlaze nulu nakon što nauče veliku negativnu vrijednost prednaprezanja za svoje težine. Ti se neuroni nikada više ne aktiviraju ni u jednom trenutku u podacima.
Možete upotrijebiti provjeru gradijenta da identificirate ove pogreške aproksimacijom gradijenta pomoću numeričkog pristupa. Ako je blizu izračunatim gradijentima, tada je širenje unatrag pravilno implementirano. Da biste izradili provjeru gradijenta, pogledajte ove sjajne resurse tvrtke CS231 и Kao i Andrew Nga o ovoj temi.
ukazuje na tri glavne metode za vizualizaciju neuronske mreže:
- Preliminari su jednostavne metode koje nam pokazuju opću strukturu obučenog modela. Oni uključuju izlaz oblika ili filtara pojedinačnih slojeva neuronske mreže i parametara unutar svakog sloja.
- Na temelju aktivacije. U njima dešifriramo aktivacije pojedinih neurona ili skupina neurona kako bismo razumjeli njihove funkcije.
- Na temelju gradijenata. Ove metode imaju tendenciju manipulirati gradijentima koji se formiraju iz prolaza naprijed i natrag modela obuke (uključujući mape istaknutosti i mape aktivacije razreda).
Postoji nekoliko korisnih alata za vizualizaciju aktivacija i veza pojedinih slojeva, npr. и .

Dijagnostika parametara
Neuronske mreže imaju mnogo parametara koji su u međusobnoj interakciji, što komplicira optimizaciju. Zapravo, ovaj odjeljak je predmet aktivnog istraživanja stručnjaka, tako da bi se prijedlozi u nastavku trebali smatrati samo savjetima, polazištima od kojih se može graditi.
Veličina Paketa (veličina serije) - Ako želite da veličina serije bude dovoljno velika da dobijete točne procjene gradijenta pogreške, ali dovoljno mala za stohastički gradijentni pad (SGD) za reguliranje vaše mreže. Male veličine serija dovest će do brze konvergencije zbog buke tijekom procesa obuke i posljedično do poteškoća u optimizaciji. Ovo je detaljnije opisano .
Stopa učenja - prenizak će dovesti do spore konvergencije ili rizika od zaglavljivanja u lokalnim minimumima. U isto vrijeme, visoka stopa učenja uzrokovat će optimizacijsku divergenciju jer riskirate skok kroz duboki, ali uski dio funkcije gubitka. Pokušajte upotrijebiti zakazivanje brzine kako biste je smanjili dok trenirate neuronsku mrežu. Ažuriran sa CS231n .
Gradijentno rezanje — gradijenti parametra dotjerivanja tijekom povratnog širenja pri najvećoj vrijednosti ili graničnoj normi. Korisno za rješavanje problema s eksplozivnim gradijentima na koje možete naići u točki tri.
Normalizacija serije - koristi se za normalizaciju ulaznih podataka svakog sloja, što nam omogućuje rješavanje problema internog pomaka kovarijate. Ako Dropout i Batch Norma koristite zajedno, .
Stohastički gradijentni pad (SGD) — postoji nekoliko varijanti SGD-a koje koriste zamah, adaptivne stope učenja i Nesterovljevu metodu. Međutim, nijedan od njih nema jasnu prednost u pogledu učinkovitosti učenja i generalizacije ().
Regulacija - ključan je za izgradnju modela koji se može generalizirati, budući da dodaje kaznu za složenost modela ili ekstremne vrijednosti parametara. Ovo je način da se smanji varijanca modela bez značajnog povećanja njegove pristranosti. Više .
Da biste sami sve procijenili, trebate onemogućiti regularizaciju i sami provjeriti gradijent gubitka podataka.
Ispadanje je još jedan način pojednostavljenja vaše mreže radi sprječavanja zagušenja. Tijekom treninga ispadanje se provodi samo održavanjem aktivnosti neurona s određenom vjerojatnošću p (hiperparametar) ili postavljanjem na nulu u suprotnom slučaju. Kao rezultat toga, mreža mora koristiti različit podskup parametara za svaku seriju obuke, što smanjuje promjene u određenim parametrima koji postaju dominantni.
Važno: ako koristite i ispadanje i skupnu normalizaciju, pazite na redoslijed ovih operacija ili ih čak koristite zajedno. O svemu tome još se aktivno raspravlja i nadopunjuje. Evo dvije važne rasprave o ovoj temi и .
Kontrola rada
Radi se o dokumentiranju tijeka rada i eksperimenata. Ako ništa ne dokumentirate, mogli biste zaboraviti, na primjer, koja se stopa učenja ili ponderi klase koriste. Zahvaljujući kontroli, možete jednostavno pregledati i reproducirati prethodne pokuse. To vam omogućuje smanjenje broja dvostrukih eksperimenata.
Međutim, ručna dokumentacija može postati težak zadatak u slučaju velikog opsega posla. Ovdje dolaze alati kao što je Comet.ml koji vam pomažu da automatski bilježite skupove podataka, promjene koda, eksperimentalnu povijest i proizvodne modele, uključujući ključne informacije o vašem modelu (hiperparametri, metrika izvedbe modela i informacije o okolišu).
Neuronska mreža može biti vrlo osjetljiva na male promjene, a to će dovesti do pada izvedbe modela. Praćenje i dokumentiranje vašeg rada prvi je korak koji možete poduzeti kako biste standardizirali svoje okruženje i modeliranje.

Nadam se da vam ovaj post može biti početna točka za početak otklanjanja pogrešaka vaše neuronske mreže.
Skillbox preporučuje:
- Dvogodišnji praktični tečaj .
- Mrežni tečaj .
- Praktični godišnji tečaj .
Izvor: www.habr.com
