
MasinĂ”ppe tarkvarakuud on sageli keerulised ja ĂŒsna eksitavad. Vigade avastamine ja kĂ”rvaldamine on ressursimahukas ĂŒlesanne. Isegi kĂ”ige lihtsamad nĂ”uavad tĂ”sist lĂ€henemist vĂ”rgu arhitektuurile, kaalu algatamisele ja vĂ”rgu optimeerimisele. VĂ€ike viga vĂ”ib tuua kaasa ebameeldivaid probleeme.
See artikkel on pĂŒhendatud teie neuronvĂ”rkude silumise algoritmile.
Skillbox soovitab: Praktiline kursus .
Tuletame meelde: kĂ”igile «Habr» lugejatele â 10 000 rubla allahindlus igale Skillboxi kursusele, kasutades sooduskoodi «Habr».
Algoritm koosneb viiest etapist:
- lihtne algus;
- kaotuste kinnitamine;
- vahepealsete tulemuste ja ĂŒhenduste kontrollimine;
- parameetrite diagnostika;
- töö jÀlgimine.
Kui midagi tundub teile huvitavam kui ĂŒlejÀÀnud, vĂ”ite kohe nendele jaotistele liikuda.
Lihtne algus
Keerulise arhitektuuri, regulatsiooni ja Ôppimise kursi plaanijaga neuronvÔrgu silumine on keerulisem kui tavaline. Me natuke petame siin, kuna see punkt seondub silumisega kaudselt, kuid see on siiski oluline soovitus.
Lihtne algus seisneb lihtsustatud mudeli loomises ja selle koolitamises ĂŒhes andmestikus (punktis).
Esmalt loome lihtsustatud mudeli
Kasutades kiiret algust, loome vĂ€ikese vĂ”rgu, millel on ainult ĂŒks peidetud kiht, ja kontrollime, et kĂ”ik töötaks Ă”igesti. Siis keerame jĂ€rk-jĂ€rgult mudeli keerukamaks, kontrollides iga uut aspekti selle struktuurist (tĂ€iendavat kihti, parameetrit jne) ja liigume edasi.
Koolitame mudelit ĂŒhes andmestikus (punktis)
Kiireks kontrollimiseks, kas teie projekt töötab, vĂ”ite kasutada ĂŒhe vĂ”i kahe andmepunkti koolitamiseks, et kinnitada, kas sĂŒsteem töötab Ă”igesti. NeuronvĂ”rk peaks nĂ€itama 100% tĂ€psust koolitusel ja testimisel. Kui see nii ei ole, on mudel liiga vĂ€ike vĂ”i on teil juba viga olemas.
Isegi kui kĂ”ik on hea, valmistage mudel ette möödumiseks ĂŒhe vĂ”i mitme epohhi kaudu enne, kui liigute edasi.
Kaotuste hindamine
Kaotuste hindamine on peamine meetod mudeli jĂ”udluse tĂ€psustamiseks. Teil on oluline veenduda, et kaotus vastab ĂŒlesandele ning kaotuse funktsioonid hinnatakse Ă”ige skaalal. Kui kasutate rohkem kui ĂŒhte tĂŒĂŒpi kaotust, veenduge, et kĂ”ik need oleksid ĂŒhe suurusjĂ€rgu ja Ă”igesti skaleeritud.
Oluline on olla tĂ€helepanelik algsete kaotuste suhtes. Kontrollige, kui lĂ€hedane on tegelik tulemus oodatavale, kui mudel alustas juhuslikust oletusest. V : âVeenduge, et saate tulemuse, mida ootate, alustades vĂ€ikese arvu parameetritega. On parem kohe kontrollida andmekao (regulaarimise mÀÀra seadmine nullile). NĂ€iteks CIFAR-10 puhul, kasutades Softmax klassifikaatorit, oodata algseid kaotusi, mis oleks 2.302, kuna eeldatav difusioonitĂ”enĂ€osus on 0,1 iga klassi kohta (kuna klasse on 10), ja Softmax kaotus on korrektse klassi negatiivne logaritmiline tĂ”enĂ€osus, st âln(0.1) = 2.302â.
Binaarse nĂ€ite puhul tehakse sarnane arvutus iga klassi jaoks. Siin on nĂ€iteks andmed: 20% 0's ja 80% 1's. Oodatav algne kaotus oleks kuni â0,2ln(0,5) â0,8ln(0,5) = 0,693147. Kui tulemus on suurem kui 1, vĂ”ib see viidata sellele, et nĂ€rvivĂ”rgu kaalukaalud ei ole nĂ”uetekohaselt tasakaalustatud vĂ”i andmed ei ole normaliseeritud.
Kontrollime vahepealseid tulemusi ja ĂŒhendusi
NĂ€rvivĂ”rgu tĂ”rkeotsimiseks on oluline mĂ”ista protsesside dĂŒnaamikat vĂ”rgu sees ja iga vahekihinĂ€htude rolli, kuna need on omavahel seotud. Siin on tĂŒĂŒpilised vead, millega vĂ”ite kokku puutuda:
- vale vÀljendid gradientide uuendamiseks;
- kaalu uuendusi ei rakendata;
- kaduvad vÔi plahvatavad gradientid (exploding gradients).
Kui gradientide vÀÀrtused on nullid, tÀhendab see, et Ôppimiskiirus optimeerijas on liiga madal vÔi et olete kokku puutunud vale vÀljendiga gradientide uuendamiseks.
Samuti tuleb jÀlgida aktivatsioonifunktsioonide, kaalude ja iga kihi uuenduste vÀÀrtusi. NÀiteks parameetrite (kaalude ja nihkete) uuenduste suurus .
On nĂ€htus, mida nimetatakse "Dying ReLU" vĂ”i , kui ReLU neuronid annavad pĂ€rast suure negatiivse vÀÀrtuse (bias) Ă”ppimist nulli. Need neuronid ei aktiveeru enam kunagi ĂŒheski andmekohas.
Saate kasutada gradientide kontrolli, et tuvastada neid vigu, kaudseist gradientide numbrite pÔhjal. Kui see on lÀhedal arvutatud gradientidele, siis tagasikandumine on rakendatud Ôigesti. Gradientide kontrolli loomiseks tutvuge nende suurepÀraste ressurssidega CS231-st. ja , samuti Andrew Nga kohta sellel teemal.
nÀitab kolme peamist meetodit neurovÔrkude visualiseerimiseks:
- Eelvaated â lihtsad meetodid, mis nĂ€itavad meile koolitatud mudeli ĂŒldstruktuuri. Need hĂ”lmavad vĂ€ljaandeid vĂ”i filtrite vormide nĂ€itamisest ĂŒksikutes neuronite kihtides ja omadustest igas kihis.
- Aktiivsustel pĂ”hinevad. Neis dekodeerime ĂŒksikute neuronite vĂ”i neuronigruppide aktiveerimist, et mĂ”ista nende funktsioone.
- Gradientidel pÔhinevad. Need meetodid kipuvad manipuleerima gradientidega, mis tekivad mudeli Ôppimise ajal (sealhulgas olulisuse kaardid ja klassi aktiveerimise kaardid).
On mitmeid kasulikke tööriistu aktivatsioonide ja ĂŒksikute kihtide ĂŒhenduste visualiseerimiseks, nĂ€iteks ja .

Parameetrite diagnostika
NeurovÔrkudel on palju parameetreid, mis omavahel suhtlevad, mis muudab optimeerimise keeruliseks. Tegelikult on see jaotis teadlaste aktiivse uurimise teema, seega tuleks allolevaid soovitusi kÀsitleda vaid nÀpunÀidete ja alguspunktidena.
Partii suurus (batch size) â see peab olema piisavalt suur, et saada tĂ€pseid vigade gradientide hinnanguid, kuid piisavalt vĂ€ike, et stohhastiline gradientide laskmine (SGD) saaks teie vĂ”rku korraldada. VĂ€iksemad partii suurused viivad kiirele konvergentsile, tĂ€nu lĂ€rmakusele Ă”ppimisprotsessis ja hiljem â optimeerimise raskustele. TĂ€psemalt on see kirjeldatud .
Ăppimiskiirus â liiga madal toob kaasa aeglase konvergentsi vĂ”i riski kinni jÀÀda kohalikesse miinimumidesse. Samal ajal liiga kĂ”rge Ă”ppimiskiirus pĂ”hjustab optimeerimise hajumist, sest riskite 'hĂŒppata' sĂŒgavale, kuid kitsale kadentsifunktsiooni ossale. Proovige kasutada planeeritud kiirus, et seda vĂ€hendada neurovĂ”rgu Ă”ppimise kĂ€igus. CS231n kursuses .
Gradientide kĂ€rpimineâ â gradientide kĂ€rpimine tagasiulatuva leviku ajal maksimaalse vÀÀrtuse vĂ”i piiri normaali jĂ€rgi. See on kasulik probleemide lahendamiseks, mis on seotud lĂ”hkevate gradientidega, millega vĂ”ite kokku puutuda kolmandas punktis.
Partii normaliseerimine â kasutatakse iga kihi sisendite normaliseerimiseks, mis aitab lahendada sisemise kovariatiivse nihke probleemi. Kui kasutate Dropouti ja Batch Normat koos, .
Stohhastiline gradientide langetamine (SGD) â on mitmeid SGD variante, mis kasutavad impulssi, kohandatud Ă”ppimise kiirus, ja Nesterovi meetod. Samas ei ole ĂŒhelgi neist selget eelist ei Ă”ppimise efektiivsuse ega ĂŒldistamise osas ().
Regulaarimine â on ĂŒlioluline ĂŒldistatava mudeli ehitamisel, kuna see lisab trahvi mudeli keerukuse vĂ”i ÀÀrmuslike vÀÀrtuste eest. See on viis mudeli dispersiooni vĂ€hendamiseks, ilma et see oluliselt suurendaks selle nihket. Rohkem .
Kuna kĂ”ik ise hinnata, peate regulatsiooni vĂ€lja lĂŒlitama ja kontrollima kaotuse gradienti ise.
Tilkus â on veel ĂŒks meetod teie vĂ”rgu korraldamiseks ĂŒlekoormuse vĂ€ltimiseks. Koolitamise ajal toimub tilkus ainult neuroni aktiivsuse sĂ€ilitamise kaudu mingi tĂ”enĂ€osusega p (hĂŒperparameeter) vĂ”i seadistades selle nulliks vastupidiselt. SeetĂ”ttu peab vĂ”rk kasutama iga koolituspartii jaoks erinevat alamkogumit parameetritest, mis vĂ€hendab teatud parameetrite muutusi, mis muutuvad domineerivaks.
Oluline: kui kasutate nii tilku kui ka partii normaliseerimist, olge ettevaatlik nende toimingute jÀrjekorra vÔi isegi koos kasutamise osas. KÔik see on endiselt aktiivses arutelus ja tÀiendas. Siin on kaks olulist arutelu selle teema kohta ja .
Töökontroll
RÀÀgime tööprotsesside ja katsete dokumenteerimisest. Kui mitte midagi ei dokumenteerita, vÔib ununeda, milline Ôppimiskiirus vÔi klasside kaalud on kasutusel. TÀnu kontrollile saab mugavalt vaadata ja taastada varasemaid katseid. See aitab vÀhendada korduvate katsete arvu.
Kahjuks vĂ”ib kĂ€sitsi dokumenteerimine suure töömahu korral olla keeruline ĂŒlesanne. Siin tulevad appi sellised tööriistad nagu Comet.ml, mis aitavad automaatselt logida andmehulkade, koodimuudatuste, katsete ajalugu ja tootemudeleid, sealhulgas olulisi andmeid teie mudeli kohta (hĂŒperparameetrid, mudeli jĂ”udluse nĂ€itajad ja keskkonna andmed).
NeuraalvÔrk vÔib olla vÀga tundlik vÀikeste muudatuste suhtes, mis vÔib viia mudeli jÔudluse languseni. Töö jÀlgimine ja dokumenteerimine on esimene samm, mida tuleks astuda keskkonna standardiseerimiseks ja modelleerimiseks.

Loodan, et see postitus saab olema lÀhtepunkt, kust alustada oma neuraalvÔrgu hÀÀlestamist.
Skillbox soovitab:
- Kaks aastat praktilist kursust .
- Veebikursus .
- Praktiline aastakursus .
Allikas: habr.com
