
Kodi i produkteve të programimit për të mësuar automatikisht shpesh është i ndërlikuar dhe mjaft konfuz. Identifikimi dhe eliminimi i defekteve në të është një detyrë që kërkon shumë resurse. Edhe rrjetet më të thjeshta kërkojnë një qasje serioze ndaj arkitekturës rrjetore, inicializimit të peshave, optimizimit të rrjetit. Një gabim i vogël mund të çojë në probleme të pakëndshme.
Ky artikull është përkushtuar algoritmit për debuggimin e rrjeteve tuaja neurale.
Skillbox rekomandon: Kurs praktik .
KujtojmĂ«: pĂ«r tĂ« gjithĂ« lexuesit e "Habra" â zbritje prej 10,000 rublej pĂ«r regjistrimin nĂ« çdo kurs Skillbox me kodin promocional "Habr".
Algoritmi përbëhet nga pesë faza:
- start i thjeshtë;
- konfirmimi i humbjeve;
- kontrollimi i rezultateve ndërmjet dhe lidhjeve;
- diagnostikimi i parametrave;
- kontrollimi i funksionimit.
Nëse diçka duket më interesante se pjesa tjetër, mund të kaloni menjëherë në këto seksione.
Start i thjeshtë
Debugging një rrjet neurali me arkitekturë të ndërlikuar, rregullimin dhe planifikuesin e shpejtësisë së mësimit është më i vështirë se sa një i zakonshëm. Po luajmë pak me këtë, pasi pika e debuggimit ka një lidhje indirekte me këtë, por është gjithsesi një rekomandim i rëndësishëm.
Starti i thjeshtë përfshin krijimin e një modeli të thjeshtuar dhe mësimin e tij në një set të vetëm (pikë) të dhënash.
Së pari krijojmë një model të thjeshtuar
Për një start të shpejtë krijojmë një rrjet të vogël me një shtresë të vetme të fshehur dhe kontrollojmë që gjithçka të funksionojë siç duhet. Pastaj e komplikohemi gradualisht modelin, duke kontrolluar çdo aspekt të ri të strukturës së saj (shtresë shtesë, parametrash etj.), dhe lëvizim përpara.
Mësojmë modelin në një set të vetëm (pikë) të dhënash
Si një kontroll i shpejtë për funksionimin e projektit tuaj mund të përdorni një ose dy pika të dhënash për t'u siguruar se sistemi funksionon si duhet. Rrjeti neural duhet të tregojë 100% saktësi në të mësuar dhe verifikim. Nëse kështu nuk është, modeli është shumë i vogël ose keni një defekt.
Edhe nëse gjithçka është në rregull, përgatitni modelin për një ose disa epoka para se të vazhdoni më tutje.
Vlerësimi i humbjeve
Vlerësimi i humbjeve është mënyra kryesore për të përmirësuar performancën e modelit. Duhet të siguroheni se humbja korrespondon me detyrën dhe funksionet e humbjeve janë vlerësuar në një shkallë të saktë. Nëse përdorni më shumë se një tip humbjeje, kontrolloni që të gjitha të jenë të një rendi dhe të skalitura siç duhet.
ĂshtĂ« e rĂ«ndĂ«sishme tĂ« jeni tĂ« kujdesshĂ«m ndaj humbjeve fillestare. Kontrolloni sa afĂ«r Ă«shtĂ« rezultati real me atĂ« qĂ« pritej, nĂ«se modeli ka nisur nga njĂ« supozim tĂ« rastĂ«sishĂ«m. NĂ« : "Sigurohuni qĂ« po merrni rezultatin qĂ« pritet kur filloni punĂ«n me njĂ« numĂ«r tĂ« vogĂ«l parametrash. MĂ« mirĂ« tĂ« kontrolloni menjĂ«herĂ« humbjen e tĂ« dhĂ«nave (duke vendosur shkallĂ«n e 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 parashikuar Ă«shtĂ« 0,1 pĂ«r çdo klasĂ« (pasi ekzistojnĂ« 10 klasĂ«), dhe humbja Softmax Ă«shtĂ« probabiliteti negativ logarithmik i klasĂ«s sĂ« saktĂ« si -ln (0.1) = 2.302".
PĂ«r njĂ« shembull binar bĂ«het njĂ« llogaritje e ngjashme pĂ«r secilĂ«n nga klasat. Ja, pĂ«r shembull, tĂ« dhĂ«nat: 20% 0âs dhe 80% 1âs. Humba fillestare e pritur do tĂ« ishte 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 peshat e rrjetit neural nuk janĂ« balancuar siç duhet ose tĂ« dhĂ«nat nuk janĂ« normalizuar.
Kontrollojmë rezultatet ndërmjet dhe lidhjet
Për të debuggur rrjetin neural, është e nevojshme të kuptoni dinamikën e proceseve brenda rrjetit dhe rolin e shtresave të veçanta ndërmjet, pasi ato janë të lidhura. Këtu janë disa gabime tipike me të cilat mund të përballeni:
- shprehje të gabuara për përditësimet e gradientit;
- përditësimet e peshave nuk aplikohen;
- gradientet që zhduken ose shpërthejnë (exploding gradients).
Nëse vlerat e gradientit janë zero, kjo tregon se shpejtësia e mësimit në optimizues është shumë e ulët, ose se po hasni një shprehje të gabuar për përditësimin e gradientit.
Përveç kësaj, është e nevojshme të monitoroni vlerat e funksioneve të aktivizimit, peshave dhe përditësimeve të çdo shtrese. Për shembull, sasia e përditësimeve të parametrave (peshave dhe dispensiveve) .
Ekziston njĂ« fenomen qĂ« quhet âDying ReLUâ ose , kur neuronĂ«t ReLU do tĂ« japin zero pas mĂ«simit tĂ« njĂ« vlera tĂ« madhe negative (bias) pĂ«r peshat e tij. KĂ«ta neurone nuk aktivizohen mĂ« kurrĂ« nĂ« asnjĂ« nga tĂ« dhĂ«nat.
Ju 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 mbrapsht është realizuar si duhet. Për të krijuar një verifikim të gradientit, shikoni këto burime të shkëlqyera nga CS231 dhe , si dhe e Andrew Ng për këtë temë.
tregon tre mënyrat kryesore të vizualizimit të rrjeteve neurale:
- ParaprakĂ«t â metoda tĂ« thjeshta qĂ« na tregojnĂ« strukturĂ«n e pĂ«rgjithshme tĂ« modelit tĂ« trajnuar. Ato pĂ«rfshijnĂ« nxjerrjen e formave ose filtrave tĂ« shtresave individuale tĂ« rrjetit neural dhe parametrave nĂ« secilĂ«n shtresĂ«.
- Të bazuara në aktivizim. Ato dekodojnë 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ë krijohen 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 individuale, siç janë dhe .

Diagnostikimi i parametrave
Rrjetet neurale kanë shumë parametra që ndërveprojnë me njëri-tjetrin, gjë që e komplikon optimizimin. Në thelb, ky seksion është një temë e kërkimeve aktive nga specialistët, prandaj rekomandimet më poshtë duhet të merren vetëm si këshilla, pika fillestare nga të cilat mund të niseni.
MadhĂ«sia e paketĂ«s (batch size) â nĂ«se Ă«shtĂ« e nevojshme qĂ« madhĂ«sia e paketĂ«s tĂ« jetĂ« mjaft e madhe pĂ«r tĂ« marrĂ« vlerĂ«sime tĂ« sakta tĂ« gradienteve tĂ« gabimeve, por mjaft e vogĂ«l qĂ« shkalla e gradientit stokastik (SGD) tĂ« mund tĂ« rregullojĂ« rrjetin tuaj. MadhĂ«sitĂ« e vogla tĂ« paketave do tĂ« çojnĂ« nĂ« konvergjencĂ« tĂ« shpejtĂ« pĂ«r shkak tĂ« zhurmĂ«s nĂ« procesin e trajnimit dhe mĂ« vonĂ« â nĂ« vĂ«shtirĂ«si nĂ« optimizim. MĂ« shumĂ« nĂ« lidhje me kĂ«tĂ« Ă«shtĂ« e pĂ«rshkruar .
ShpejtĂ«sia e tĂ« mĂ«suarit â shumĂ« e ulĂ«t do tĂ« çojĂ« nĂ« konvergjencĂ« tĂ« ngadalshme ose rrezikun pĂ«r t'u mbetur nĂ« minimumet lokale. NĂ« tĂ« njĂ«jtĂ«n kohĂ«, njĂ« shpejtĂ«si e lartĂ« e tĂ« mĂ«suarit do tĂ« shkaktojĂ« shpĂ«rthim tĂ« optimizimit, pasi rrezikoni "tĂ« hidheni" 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 gjatĂ« procesit tĂ« trajnimit tĂ« rrjetit neural. NĂ« kursin CS231n .
Prerja e gradientĂ«veâ â prerja e gradientĂ«ve tĂ« parametrave gjatĂ« pĂ«rhapjes mbrapsht nĂ« vlerĂ«n maksimale ose normĂ«n kufitare. E dobishme pĂ«r tĂ« zgjidhur problemet me çdo gradiente qĂ« shpĂ«rthejnĂ«, me tĂ« cilat mund tĂ« pĂ«rballeni nĂ« pikĂ«n e tretĂ«.
Normalizimi i grupit â pĂ«rdoret pĂ«r normalizimin e tĂ« dhĂ«nave hyrĂ«se tĂ« secilĂ«s shtresĂ«, duke ndihmuar nĂ« zgjidhjen e problemit tĂ« zhvendosjes sĂ« brendshme tĂ« kovariateve. NĂ«se pĂ«rdorni Dropout dhe Batch Normalization sĂ« bashku, .
Shkalla e gradientit stokastik (SGD) â ekzistojnĂ« disa variante tĂ« SGD qĂ« pĂ«rdorin impuls, shpejtĂ«si tĂ« adapTuar tĂ« tĂ« mĂ«suarit dhe metodĂ«n e Nesterovit. MegjithatĂ«, asnjĂ«ra prej tyre nuk ka njĂ« avantazh tĂ« qartĂ« as nĂ« efikasitetin e trajnimit dhe as nĂ« pĂ«rgjithshmĂ«rinĂ« ().
Regjistrimi â Ă«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 vlerat ekstreme tĂ« parametrave. Ky Ă«shtĂ« njĂ« mĂ«nyrĂ« pĂ«r tĂ« ulur variancĂ«n e modelit pa rritur ndjeshĂ«m parametra tĂ« tij. MĂ« shumĂ« .
Për të vlerësuar vetë gjithçka, është e nevojshme të çaktivizoni regularizimin dhe të kontrolloni gradientin e humbjes të dhënave vetë.
Dropout â njĂ« tjetĂ«r metodĂ« pĂ«r rregullimin e rrjetit tuaj pĂ«r tĂ« parandaluar mbingarkesĂ«n. GjatĂ« trajnimit, dropout kryhet vetĂ«m duke mbajtur aktiv njĂ« neuron me njĂ« probabilitet tĂ« caktuar p (hiperparametĂ«r) ose duke e vendosur ato 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Ă«sues, duke reduktuar variacionet e parametrave tĂ« caktuar qĂ« bĂ«hen dominues.
ĂshtĂ« e rĂ«ndĂ«sishme: nĂ«se pĂ«rdorni si dropout ashtu edhe normalizimin e grupit, bĂ«ni kujdes me rendin e kĂ«tyre operacioneve ose madje me pĂ«rdorimin e tyre tĂ« pĂ«rbashkĂ«t. TĂ« gjitha kĂ«to ende diskutohen dhe plotĂ«sohen. Ja dy diskutime tĂ« rĂ«ndĂ«sishme nĂ« lidhje me kĂ«tĂ« dhe .
Kontrolli i punës
Këtu bëhet fjalë për dokumentimin e proceseve të punës dhe eksperimenteve. Nëse nuk dokumentoni asgjë, mund të harroni, për shembull, cila është shpejtësia e të mësuarit ose pesha e klasave. Falë kontrollit, mund të shikoni dhe riprodhoni eksperimente të mëparshme pa probleme. Kjo ndihmon në reduktimin e eksperimenteve të përsëritura.
E vërtetë, dokumentimi manual mund të bëhet një detyrë e komplikuar në rast se ka një volum të madh pune. Këtu ndihmojnë mjete si Comet.ml, të cilat ndihmojnë në regjistrimin automatik të grupeve të të dhënave, ndryshimeve në kod, historisë së eksperimenteve dhe modeleve prodhuese, duke përfshirë informacione kyçe rreth modelit tuaj (hiperparametrat, treguesit e performancës së modelit dhe informacionin mbi ambientin).
Rrjeti nervor mund të jetë tepër i ndjeshëm ndaj ndryshimeve të vogla, dhe kjo do të çojë në rënie të performancës së modelit. Ndjekja dhe dokumentimi i punës janë hapat e parë që duhen ndërmarrë për të standardizuar ambientin dhe modelimin.

Shpresoj që ky post të jetë një pikënisje nga e cila do të filloni debugimin e rrjetit tuaj nervor.
Skillbox rekomandon:
- Kurs praktik dyvjeçar .
- Kurs online .
- Kurs praktik njëvjeçar .
Burimi: habr.com
