
Kodi i produkteve software për mësim të makinerive shpesh është kompleks dhe mjaft i ngatërruar. Zbulimi dhe eliminimi i defekteve në të është një detyrë e shtrenjë për burime. Edhe më e thjeshta kërkojnë një qasje serioze ndaj arkitekturës rrjetore, inicializimit të peshave dhe optimizimit të rrjetit. Një gabim i vogël mund të sjellë probleme të pakëndshme.
Ky artikull i kushtohet algoritmit për debugging të rrjetave tuaja neuronale.
Skillbox rekomandon: Kurs praktik .
KujtojmĂ«: pĂ«r tĂ« gjithĂ« lexuesit e «Habra» â zbritje prej 10,000 rublesh pĂ«r regjistrimin nĂ« çdo kurs Skillbox me kodin promovues «Habr».
Algoritmi përbëhet nga pesë faza:
- fillimi i thjeshtë;
- konfirmimi i humbjeve;
- kontrollimi i rezultateve ndërmjetëse dhe lidhjeve;
- diagnoza e parametrave;
- kontrollimi i funksionimit.
Nëse diçka ju duket më interesante se sa e tjerash, mund të kaloni menjëherë në këto seksione.
Fillimi i thjeshtë
Debugger një rrjet nervor me arkitekturë të ndërlikuar, regularizim dhe planifikues të shpejtësisë së mësimit është më e vështirë se sa një e zakonshme. Këtu po manipulojmë, pasi pika vetë për debugging ka një lidhje indirekte, por kjo është një rekomandim i rëndësishëm.
Fillimi i thjeshtë përfshin krijimin e një modeli të thjeshtuar dhe mësimin e tij mbi një grup (pikë) të dhënash.
Së pari krijojmë një model të thjeshtuar
Për fillim të shpejtë krijojmë një rrjet të vogël me një shtresë të fshehtë dhe e kontrollojmë që gjithçka të funksionojë në mënyrë korrekte. Pastaj gradualisht e komplikohemi modelin, duke kontrolluar çdo aspekt të ri të strukturës së tij (shtresës shtesë, parametrave etj.), dhe vazhdojmë më tutje.
Mësojmë modelin mbi një grup të vetëm (pikë) të dhënash
Si një kontroll të shpejtë të funksionalitetit të projektit tuaj, mund të përdorni një ose dy pika të dhënash për të mësuar, për të konfirmuar nëse sistemi funksionon siç duhet. Rrjeti nervor duhet të tregojë 100% saktësi në mësim dhe verifikim. Nëse kjo nuk ndodh, atëherë ose modeli është shumë i vogël, ose keni një defekt.
Edhe nëse gjithçka është mirë, përgatitni modelin për të kaluar një ose disa epokë para se të shkoni më tej.
Vlerësimi i humbjeve
Vlerësimi i humbjeve është mënyra kryesore për të saktësuar performancën e modelit. Ju duhet të siguroheni se humbja i përmbahet detyrës, dhe funksionet e humbjes vlerësohen sipas një shkalle korrekt. Nëse përdorni më shumë se një lloj humbjeje, atëherë sigurohuni që të gjitha ato të jenë të një rendi dhe të skaluara siç duhet.
ĂshtĂ« e rĂ«ndĂ«sishme tĂ« jeni tĂ« kujdesshĂ«m pĂ«r humbjet fillestare. Kontrolloni sa afĂ«r Ă«shtĂ« rezultati real me atĂ« tĂ« pritur, nĂ«se modeli ka filluar nga njĂ« supozim tĂ« rastĂ«sishĂ«m. NĂ« : «Sigurohuni qĂ« po merrni rezultatin qĂ« pritet kur filloni tĂ« punoni me njĂ« numĂ«r tĂ« vogĂ«l parametrash. ĂshtĂ« mĂ« mirĂ« tĂ« kontrolloni menjĂ«herĂ« humbjen e tĂ« dhĂ«nave (me vendosjen e gradĂ«s sĂ« rregullimit nĂ« zero). PĂ«r shembull, pĂ«r CIFAR-10 me klasifikuesin Softmax ne presim qĂ« humbjet fillestare tĂ« jenĂ« 2.302, sepse probabiliteti i pĂ«rhapur i pritur Ă«shtĂ« 0,1 pĂ«r çdo klasĂ« (duke pasur parasysh se ekzistojnĂ« 10 klasa), dhe humbja Softmax Ă«shtĂ« probabiliteti negativ logaritmik i klasĂ«s sĂ« saktĂ« si âln (0.1) = 2.302».
PĂ«r njĂ« shembull binar, thjesht bĂ«het llogaritja e ngjashme pĂ«r secilĂ«n nga klasat. Ja, pĂ«r shembull, tĂ« dhĂ«nat: 20% 0âs dhe 80% 1âs. Humba e pritur fillestare do tĂ« jetĂ« deri nĂ« â0,2ln (0,5) â0,8ln (0,5) = 0,693147. NĂ«se rezultati Ă«shtĂ« mĂ« i madh se 1, kjo mund tĂ« tregojĂ« se pesha e rrjetit nervor nuk Ă«shtĂ« balancuar siç duhet ose tĂ« dhĂ«nat nuk janĂ« normalizuar.
Kontrolloni rezultatet ndërmjetëse dhe lidhjet
Për të debuguar rrjetin nervor është e nevojshme të kuptohet dinamika e proceseve brenda rrjetit dhe roli i shtresave të intermediara, pasi ato janë të lidhura. Ja disa gabime tipike me të cilat mund të përballeni:
- shprehje të gabuara për përditësimet e gradienteve;
- përditësimet e peshave nuk aplikohen;
- gradiente që shuhen ose shpërthejnë (exploding gradients).
Nëse vlerat e gradientit janë zero, kjo do të thotë se shpejtësia e të mësuarit në optimizues është shumë e ulët, ose keni hasur në një shprehje të gabuar për përditësimin e gradientit.
Për më tepër, është e nevojshme të monitoroni vlerat e funksioneve të aktivizimit, peshave dhe përditësimeve të çdo shtrese. Për shembull, madhësia e përditësimeve të parametrave (peshave dhe zhvendosjeve) .
Ekziston njĂ« fenomen qĂ« quhet âDying ReLUâ ose , kur neuronet ReLU do tĂ« japin zero pas studimit tĂ« njĂ« vlerĂ« tĂ« madhe negative (bias) pĂ«r peshat e tij. KĂ«to neurone nuk aktivizohen mĂ« kurrĂ« nĂ« asnjĂ« vend tĂ« tĂ« dhĂ«nave.
Mund të përdorni kontrollin e gradientit për të zbuluar këto gabime duke aproksimuar gradientin me një qasje numerike. Nëse është afër gradientëve të llogaritur, atëherë përhapja e prapme është realizuar siç duhet. Për të krijuar një kontroll të gradientit, shikoni këto burime të shkëlqyera nga CS231 dhe , si dhe nga Andrew Ng për këtë temë.
shpjegon tre metoda kryesore të vizualizimit të rrjetit nervor:
- ParaprirĂ«sit â metoda tĂ« thjeshta qĂ« na tregojnĂ« strukturĂ«n e pĂ«rgjithshme tĂ« modelit tĂ« mĂ«suar. KĂ«to pĂ«rfshijnĂ« daljet e formave apo filtrave tĂ« shtresave individuale tĂ« rrjetit nervor dhe parametrat nĂ« çdo shtresĂ«.
- Të bazuara në aktivizim. Ato dekriptojnë aktivizimet e neuronëve individualë ose grupeve të neuronëve për të kuptuar funksionet e tyre.
- Të bazuara në gradientë. Këto metoda kanë tendencë të manipulojnë gradientët që formohen nga kalimi përpara dhe mbrapa gjatë trajnimit të modelit (duke përfshirë hartat e rëndësisë dhe hartat e aktivizimit të klasës).
Ekzistojnë disa mjete të dobishme për vizualizimin e aktivizimeve dhe lidhjeve të shtresave të veçanta, siç janë dhe .

Diagnostika e parametrave
Rrjetet nervore kanë një shumëllojshmëri parametrash që ndërveprojnë me njëra-tjetrën, duke e komplikuar optimizimin. Në thelb, ky seksion është objekt i kërkimeve aktive të specialistëve, prandaj propozimet më poshtë duhet të merren vetëm si këshilla, pika fillestare për t'u nisur.
MadhĂ«sia e grupit (batch size) â nĂ«se Ă«shtĂ« e nevojshme, qĂ« madhĂ«sia e grupit tĂ« jetĂ« e mjaftueshme pĂ«r tĂ« marrĂ« vlerĂ«sime tĂ« sakta tĂ« gradientit tĂ« gabimit, por e vogĂ«l mjaftueshĂ«m qĂ« rĂ«nia stohastike e gradientit (SGD) tĂ« mund tĂ« rendisĂ« rrjetin tuaj. MadhĂ«sitĂ« e vogla tĂ« grupeve do tĂ« çojnĂ« nĂ« njĂ« konvergjencĂ« mĂ« tĂ« shpejtĂ« pĂ«r shkak tĂ« zhurmĂ«s gjatĂ« procesit tĂ« mĂ«simit dhe mĂ« pas â nĂ« vĂ«shtirĂ«si nĂ« optimizim. MĂ« shumĂ« pĂ«r kĂ«tĂ« Ă«shtĂ« pĂ«rshkruar .
ShpejtĂ«sia e mĂ«simit â shumĂ« e ulĂ«t do tĂ« çojĂ« nĂ« konvergjencĂ« tĂ« ngadalshme ose rrezikun pĂ«r tĂ« ngecur nĂ« minimumet lokale. NĂ« tĂ« njĂ«jtĂ«n kohĂ«, njĂ« shpejtĂ«si e lartĂ« mĂ«simi do tĂ« shkaktojĂ« divergjencĂ« tĂ« optimizimit, pasi rrezikoni tĂ« "kalloni" pĂ«rmes njĂ« pjese tĂ« thellĂ«, por tĂ« ngushtĂ« tĂ« funksionit tĂ« humbjes. Provoni tĂ« pĂ«rdorni planifikimin e shpejtĂ«sisĂ« pĂ«r ta ulur atĂ« gjatĂ« procesit tĂ« mĂ«simit tĂ« rrjetit nervor. .
Klipimi i gradienteveâ â Ă«shtĂ« prerja e gradienteve tĂ« parametrave gjatĂ« pĂ«rhapjes prapa sipas vlerĂ«s maksimale ose normĂ«s kufitare. ĂshtĂ« e dobishme pĂ«r tĂ« zgjidhur problemet me çdo gradiant qĂ« mund tĂ« shpĂ«rthejĂ«, me tĂ« cilin mund tĂ« pĂ«rballeni nĂ« pikĂ«n tre.
Normalizimi nĂ« grup â pĂ«rdoret pĂ«r tĂ« normalizuar tĂ« dhĂ«nat hyrĂ«se tĂ« çdo shtrese, duke ndihmuar nĂ« zgjidhjen e problemeve me zhvendosjen e brendshme tĂ« kovariateve. NĂ«se pĂ«rdorni Dropout dhe Batch Normalization sĂ« bashku, .
NĂ« shkallĂ«n stohastike tĂ« gradienteve (SGD) â ekzistojnĂ« disa variante tĂ« SGD qĂ« pĂ«rdorin impuls, shpejtĂ«si adaptuese tĂ« mĂ«simit dhe metodĂ«n Nesterov. MegjithatĂ«, asnjĂ«ra prej tyre nuk ka njĂ« avantazh tĂ« qartĂ« as pĂ«r sa i pĂ«rket efikasitetit tĂ« mĂ«simit, as pĂ«r sa i pĂ«rket pĂ«rgjithĂ«simit ().
Rregullimi â Ă«shtĂ« thelbĂ«sore pĂ«r ndĂ«rtimin e njĂ« modeli tĂ« pĂ«rgjithshĂ«m, pasi shton njĂ« ndĂ«shkim pĂ«r kompleksitetin e modelit ose pĂ«r vlerat ekstreme tĂ« parametrave. Ky Ă«shtĂ« njĂ« mĂ«nyrĂ« pĂ«r tĂ« ulur variancĂ«n e modelit pa rritur ndjeshĂ«m ndarjen e tij. MĂ« shumĂ« .
Për të vlerësuar gjithçka vetë, duhen çaktivizuar rregullimi dhe duhet të kontrollohet gradienti i humbjes së të dhënave vetë.
RĂ«nia â Ă«shtĂ« njĂ« tjetĂ«r metodĂ« pĂ«r tĂ« rregulluar rrjetin tuaj pĂ«r tĂ« parandaluar mbingarkesĂ«n. GjatĂ« mĂ«simit, rĂ«nia realizohet vetĂ«m duke mbajtur aktivitetin e neuronit me njĂ« probabilitet tĂ« caktuar p (hiper-parametri) ose duke e vendosur atĂ« nĂ« zero nĂ« rastin e kundĂ«rt. Si rezultat, rrjeti duhet tĂ« pĂ«rdorĂ« njĂ« nĂ«ngrup tjetĂ«r parametrash pĂ«r çdo grup mĂ«simor, duke reduktuar ndryshimet e parametrave tĂ« caktuar qĂ« bĂ«hen dominuese.
ĂshtĂ« e rĂ«ndĂ«sishme: nĂ«se pĂ«rdorni si rĂ«nien, ashtu edhe normalizimin nĂ« grup, jini tĂ« kujdesshĂ«m me rendin e kĂ«tyre operacioneve ose madje edhe me pĂ«rdorimin e tyre tĂ« pĂ«rbashkĂ«t. TĂ« gjitha kĂ«to janĂ« ende duke u diskutuar dhe pĂ«rmirĂ«suar. Ja dy diskutime tĂ« rĂ«ndĂ«sishme mbi kĂ«tĂ« temĂ« dhe .
Kontrolli i funksionit
Bëhet fjalë për dokumentimin e proceseve punuese dhe eksperimenteve. Nëse nuk dokumentoni asgjë, mund të harroni, për shembull, cilat janë shpejtësia e nxënies ose pesha e klasave që përdoren. Falë kontrollit, mund të shqyrtoni dhe riprodhoni në mënyrë të lehtë eksperimentet e mëparshme. Kjo ndihmon në reduktimin e numrit të eksperimenteve të dyfishta.
Megjithatë, dokumentimi manual mund të bëhet një detyrë e vështirë në rast të një volumi të madh punësh. Këtu ndihmojnë të tillë si Comet.ml, që ndihmojnë për të loguar automatikisht grumbujt e të dhënave, ndryshimet në kod, historinë e eksperimenteve dhe modelet prodhuese, përfshirë informacionin kyç mbi modelin tuaj (hiperparametrat, treguesit e performancës së modelit dhe informacionin mbi mjedisin).
Një rrjet nervor mund të jetë mjaft i ndjeshëm ndaj ndryshimeve të vogla, dhe kjo do të çojë në rënien e performancës së modelit. Ndjekja dhe dokumentimi i punës është hapi i parë që duhet të ndërmerrni për të standardizuar mjedisin dhe modelimin.

Shpresoj se ky post mund të jetë pika e nisjes nga e cila do të filloni rregullimin e rrjetit tuaj nervor.
Skillbox rekomandon:
- Kursi praktik dyvjeçar .
- Kurs online .
- Kurs praktik njëvjeçar .
Burimi: habr.com
