Schafft mat neurale Netzwierker: Checklëscht fir Debugging

Schafft mat neurale Netzwierker: Checklëscht fir Debugging

De Code vu Maschinnléiere Software Produkter ass dacks komplex an zimlech konfus. D'Detektioun an d'Eliminatioun vu Bugs dran ass eng Ressourceintensiv Aufgab. Och déi einfachsten feedforward neural Netzwierker erfuerdert eng sérieux Approche fir d'Netzwierkarchitektur, d'Initialiséierung vu Gewiichter an d'Netzoptimiséierung. E klenge Feeler kann zu onsympathesche Problemer féieren.

Dësen Artikel handelt iwwer en Algorithmus fir Är neural Netzwierker ze Debuggéieren.

Skillbox recommandéiert: Praktesch Cours Python Entwéckler vun Null.

Mir erënneren Iech: fir all Habr Lieser - eng Remise vun 10 Rubel wann Dir Iech an all Skillbox Cours aschreift mat dem Habr Promo Code.

Den Algorithmus besteet aus fënnef Etappen:

  • einfach ufänken;
  • Bestätegung vun Verloschter;
  • Zwëschenresultater a Verbindungen iwwerpréiwen;
  • Parameter Diagnostik;
  • Kontroll vun Aarbecht.

Wann eppes fir Iech méi interessant schéngt wéi de Rescht, kënnt Dir direkt op dës Rubriken sprangen.

Einfach ufänken

En neuralt Netzwierk mat enger komplexer Architektur, Regulariséierung, an engem Léierrate Scheduler ass méi schwéier ze debuggen wéi e regelméissegen. Mir sinn e bësse komplizéiert hei, well de Punkt selwer ass indirekt mat Debugging verbonnen, awer dëst ass nach ëmmer eng wichteg Empfehlung.

En einfache Start ass e vereinfachte Modell ze kreéieren an en op engem Set (Punkt) vun Daten ze trainéieren.

Als éischt kreéiere mir e vereinfachte Modell

Fir séier unzefänken, kreéiere mir e klengt Netzwierk mat enger eenzeger verstoppter Schicht a kontrolléieren ob alles richteg funktionnéiert. Da komplizéiere mir de Modell lues a lues, kontrolléiert all neien Aspekt vu senger Struktur (zousätzlech Schicht, Parameter, etc.), a fuere weider.

Mir trainéieren de Modell op engem eenzege Set (Punkt) vun Daten

Als séier Sanitéitskontroll fir Äre Projet kënnt Dir een oder zwee Datepunkte fir Training benotzen fir ze bestätegen ob de System richteg funktionnéiert. Den neurale Netzwierk muss 100% Genauegkeet beim Training an Test weisen. Wann dat net de Fall ass, dann ass entweder de Modell ze kleng oder Dir hutt schonn e Feeler.

Och wann alles gutt ass, bereet de Modell op eng oder méi Epochen vir, ier Dir weider geet.

Verloscht Bewäertung

Verloscht Schätzung ass den Haapt Wee fir d'Leeschtung vum Modell ze raffinéieren. Dir musst sécher sinn datt de Verloscht dem Problem entspriechend ass an datt d'Verloschtfunktiounen op der korrekter Skala bewäert ginn. Wann Dir méi wéi ee Verloscht Typ benotzt, sécherstellen, datt se all vun der selwechter Uerdnung sinn a richteg skaléiert.

Et ass wichteg opmierksam op initial Verloschter ze sinn. Préift wéi no dat aktuellt Resultat zum erwaartene Resultat ass, wann de Modell mat enger zoufälleger Schätzung ugefaang huet. IN Dem Andrey Karpathy seng Aarbecht proposéiert déi folgend:: "Vergewëssert Iech datt Dir d'Resultat kritt wat Dir erwaart wann Dir mat enger klenger Zuel vu Parameteren ufänkt. Et ass besser direkt den Dateverloscht z'iwwerpréiwen (mat dem Grad vun der Regulariséierung op Null gesat). Zum Beispill, fir CIFAR-10 mat engem Softmax Klassifizéierer, erwaarden mir datt den initialen Verloscht 2.302 ass, well déi erwaart diffus Probabilitéit 0,1 fir all Klass ass (well et 10 Klassen sinn) an de Softmax Verloscht ass déi negativ Log Probabilitéit vun der korrekter Klass. als − ln (0.1) = 2.302."

Fir dat binärt Beispill gëtt eng ähnlech Berechnung einfach fir jiddereng vun de Klassen gemaach. Hei sinn zum Beispill d'Donnéeën: 20% 0'en an 80% 1'en. Den erwaarten initialen Verloscht wäert bis -0,2ln (0,5) -0,8ln (0,5) = 0,693147 sinn. Wann d'Resultat méi wéi 1 ass, kann et uginn datt d'neural Netzwierkgewiicht net richteg ausgeglach sinn oder d'Donnéeën net normaliséiert sinn.

Iwwerpréift Tëscheresultater a Verbindungen

Fir en neuralt Netzwierk ze debuggen, ass et néideg d'Dynamik vu Prozesser am Netz ze verstoen an d'Roll vun eenzelne Zwëschenschichten wéi se verbonne sinn. Hei sinn déi allgemeng Feeler déi Dir kënnt stousse:

  • falsch Ausdréck fir Gradle Updates;
  • Gewiicht Aktualiséierungen sinn net applizéiert;
  • explodéierend Gradienten.

Wann d'Gradientewäerter null sinn, heescht dat datt d'Léierrate am Optimizer ze lues ass, oder datt Dir e falschen Ausdrock begéint fir de Gradient ze aktualiséieren.

Zousätzlech ass et néideg d'Wäerter vun den Aktivéierungsfunktiounen, Gewiichter an Updates vun all Schichten ze iwwerwaachen. Zum Beispill, d'Gréisst vun de Parameterupdates (Gewiichter a Biases) soll 1-e3 sinn.

Et gëtt e Phänomen genannt "Dying ReLU" oder "Verschwannen Gradient Problem", wann d'ReLU Neuronen Null ausginn nodeems se e groussen negativen Biaswäert fir seng Gewiichter geléiert hunn. Dës Neuronen ginn ni méi zu all Moment an den Donnéeën ofgeschoss.

Dir kënnt Gradientkontrolle benotze fir dës Feeler z'identifizéieren andeems Dir de Gradient mat enger numerescher Approche approximéiert. Wann et no bei de berechent Gradienten ass, da gouf d'Réckpropagatioun korrekt ëmgesat. Fir e Gradientcheck ze kreéieren, kuckt dës super Ressourcen aus CS231 hei и heian och mat Lektioun Andrew Nga iwwer dëst Thema.

Faizan Sheikh weist dräi Haaptmethoden un fir en neuralt Netzwierk ze visualiséieren:

  • Virleefeg sinn einfach Methoden, déi eis d'allgemeng Struktur vun der trainéiert Modell weisen. Dëst beinhalt d'Ausgab vu Formen oder Filtere vun den eenzelne Schichten vum neurale Netzwierk an d'Parameteren an all Schicht.
  • Aktivéierung baséiert. An hinnen entschlëssele mir d'Aktivatioune vun eenzelne Neuronen oder Gruppen vun Neuronen fir hir Funktiounen ze verstoen.
  • Baséiert op Gradienten. Dës Methoden tendéieren Gradienten ze manipuléieren, déi aus de Forward an Backward Passë vum Model Training geformt ginn (inklusiv Saliency Kaarten a Klass Aktivéierungskaarten).

Et gi verschidde nëtzlech Tools fir d'Aktivéierungen an d'Verbindunge vun eenzel Schichten ze visualiséieren, z.B. ConX и Tensorboard.

Schafft mat neurale Netzwierker: Checklëscht fir Debugging

Parameter Diagnostik

Neural Netzwierker hu vill Parameteren déi matenee interagéieren, wat d'Optimisatioun komplizéiert. Eigentlech ass dës Sektioun d'Thema vun der aktiver Fuerschung vu Spezialisten, sou datt d'Suggestiounen hei drënner sollten nëmmen als Berodung considéréiert ginn, Ausgangspunkte fir ze bauen.

Package Gréisst (Batchgréisst) - Wann Dir wëllt datt d'Batchgréisst grouss genuch ass fir genee Feelergradient Schätzungen ze kréien, awer kleng genuch fir stochastesch Gradient Ofstamung (SGD) fir Äert Netzwierk ze reguléieren. Kleng Batchgréissten féieren zu enger schneller Konvergenz wéinst Geräischer während dem Trainingsprozess an duerno zu Optimisatiounsschwieregkeeten. Dëst gëtt méi detailléiert beschriwwen hei.

Léieren Taux - ze niddreg féiert zu luesen Konvergenz oder de Risiko fir an de lokale Minima festzehalen. Zur selwechter Zäit wäert eng héich Léierquote Optimisatiounsdivergenz verursaachen, well Dir riskéiert duerch déi déif, awer schmuel Deel vun der Verloschtfunktioun ze sprangen. Probéiert d'Geschwindegkeetsplang ze benotzen fir et ze reduzéieren beim Training vum neurale Netzwierk. Aktuell mat CS231n et gëtt eng grouss Sektioun fir dëse Problem gewidmet.

Gradient ausschneiden  - Trimmen vun Parametergradienten wärend der Réckpropagatioun um maximale Wäert oder marginale Norm. Nëtzlech fir all explodéierend Gradienten ze léisen déi Dir am Punkt dräi begéine kënnt.

Batch Normaliséierung - benotzt fir d'Inputdaten vun all Layer ze normaliséieren, wat eis erlaabt de Problem vun der interner Kovariatverschiebung ze léisen. Wann Dir Dropout a Batch Norma zesumme benotzt, kuckt dësen Artikel.

Stochastic Gradient Descent (SGD) - et gi verschidde Varietéiten vu SGD déi Dynamik, adaptiven Léierraten an d'Nesterov Method benotzen. Wéi och ëmmer, kee vun hinnen huet e klore Virdeel a punkto Léiereffizienz an Generaliséierung (Detailer hei).

Reguléierung - ass entscheedend fir e generaliséierbare Modell ze bauen, well et eng Strof fir Modellkomplexitéit oder extrem Parameterwäerter bäidréit. Dëst ass e Wee fir Modellvarianz ze reduzéieren ouni seng Bias wesentlech ze erhéijen. Méi detailléiert Informatiounen - hei.

Fir alles selwer ze evaluéieren, musst Dir d'Regulariséierung auszeschalten an den Dateverloschtgradient selwer kontrolléieren.

Ausgefall ass eng aner Method fir Äert Netzwierk ze streamlinéieren fir Stau ze vermeiden. Wärend der Ausbildung gëtt d'Ofdreiwung nëmme gemaach andeems d'Aktivitéit vum Neuron mat enger gewësser Wahrscheinlechkeet p (Hyperparameter) behalen oder se op Null am Géigendeel Fall setzen. Als Resultat muss d'Netzwierk eng aner Subset vu Parameteren fir all Trainingsbatch benotzen, wat d'Verännerunge vu bestëmmte Parameteren reduzéiert déi dominant ginn.

Wichteg: Wann Dir souwuel Ausfall wéi och Batch Normaliséierung benotzt, passt virsiichteg op d'Uerdnung vun dësen Operatiounen oder benotzt se souguer zesummen. Dat alles gëtt nach aktiv diskutéiert an ergänzt. Hei sinn zwou wichteg Diskussiounen iwwer dëst Thema op Stackoverflow и archiv.

Kontroll vun Aarbecht

Et geet drëms Workflows an Experimenter ze dokumentéieren. Wann Dir näischt dokumentéiert, kënnt Dir zum Beispill vergiessen, wéi eng Léierrate oder Klassegewichte benotzt ginn. Duerch d'Kontroll kënnt Dir ganz einfach virdrun Experimenter iwwerpréiwen a reproduzéieren. Dëst erlaabt Iech d'Zuel vun duplizéiert Experimenter ze reduzéieren.

Wéi och ëmmer, manuell Dokumentatioun kann eng schwiereg Aufgab ginn am Fall vun engem grousse Volumen vun der Aarbecht. Dëst ass wou Tools wéi Comet.ml erakommen fir Iech ze hëllefen automatesch Datesätz, Code Ännerungen, experimentell Geschicht a Produktiounsmodeller ze protokolléieren, inklusiv Schlësselinformatioun iwwer Äre Modell (Hyperparameter, Modellleistungsmetriken, an Ëmweltinformatioun).

En neuralt Netzwierk ka ganz empfindlech op kleng Ännerungen sinn, an dëst féiert zu engem Réckgang vun der Modellleistung. Tracking an Dokumentatioun vun Ärer Aarbecht ass den éischte Schrëtt deen Dir maache kënnt fir Äert Ëmfeld a Modeller ze standardiséieren.

Schafft mat neurale Netzwierker: Checklëscht fir Debugging

Ech hoffen dëse Post kann e Startpunkt sinn fir Iech fir Äert neuralt Netzwierk ze Debuggen.

Skillbox recommandéiert:

Source: will.com

Setzt e Commentaire