Töötame nÀrvivÔrkudega: tÔrkeotsingu kontrollnimekiri

Töötame nÀrvivÔrkudega: tÔrkeotsingu kontrollnimekiri

MasinĂ”ppe tarkvara kood on sageli keeruline ja ĂŒsna segane. Veaparandamine on ressursimahukas ĂŒlesanne. Isegi lihtsaimad otsese ĂŒhendusega nĂ€rvivĂ”rgud nĂ”uavad tĂ”sist lĂ€henemist vĂ”rguehitusele, kaalude initsialiseerimisele ja vĂ”rgu optimeerimisele. VĂ€ike viga vĂ”ib pĂ”hjustada ebameeldivaid probleeme.

See artikkel kÀsitleb teie nÀrvivÔrkude tÔrkeotsimisalgoritmi.

Skillbox soovitab: Praktiline kursus Python-arendaja algusest peale.

Tuletame meelde: kĂ”igile «Habra» lugejatele — 10 000 rubla soodustus, kui registreerite end Skillboxi mis tahes kursusele promokoodi «Habr» abil.

Algoritm koosneb viiest etapist:

  • lihtne algus;
  • kahjude kinnitamine;
  • vaheide ja ĂŒhenduste kontrollimine;
  • parameetrite diagnoosimine;
  • töö jĂ€lgimine.

Kui midagi tundub teile huvitavam kui muu, vĂ”ite kohe nendele osadele ĂŒle minna.

Lihtne algus

Kompleksse arhitektuuri, regulatsioonide ja Ôpikiirusete plaanijaga nÀrvivÔrgu tÔrkeotsimine on keerulisem kui tavalise. Siinkohal oleme natuke kavalad, kuna see punkt on tÔrkeotsimisega kaudselt seotud, kuid see on ikkagi oluline soovitus.

Lihtne algus seisneb lihtsustatud mudeli loomises ja selle Ă”petamises ĂŒhes andmekogumis (punktis).

Esiteks loome lihtsustatud mudeli

Kiireks tutvustamiseks loome vĂ€ikese vĂ”rgu ĂŒhe peidetud kihiga ja kontrollime, et kĂ”ik töötab korralikult. SeejĂ€rel tĂ€iustame mudelit jĂ€rk-jĂ€rgult, kontrollides iga uue elemendi (tĂ€iendava kihi, parameetri jne) struktuuri ning liikume edasi.

Treena mudelit ĂŒhes andmekogumis (punktis)

Kiireks toimivuse kontrollimiseks vĂ”ite kasutada ĂŒhe vĂ”i kahe andmepunkti treenimiseks, et kinnitada, kas sĂŒsteem töötab Ă”igesti. TehisnĂ€rvivĂ”rk peaks nĂ€itama 100% tĂ€psust treeningul ja testimisel. Kui see nii ei ole, siis on mudel liiga vĂ€ike vĂ”i teil on juba bugi.

Isegi kui kĂ”ik on hĂ€sti, valmistage mudel ette ĂŒhe vĂ”i mitme epohhi lĂ€bimiseks, enne kui edasi liigute.

Kao hindamine

Kao hindamine on peamine viis mudeli toimivuse tĂ€psustamiseks. Peate veenduma, et kadu vastab ĂŒlesandele ja kaohinnangud on Ă”igel skaalal. Kui kasutate rohkem kui ĂŒhte kaotuse tĂŒĂŒpi, siis veenduge, et need oleksid kĂ”ik samas suurusjĂ€rgus ja Ă”igesti skaleeritud.

Oluline on olla tĂ€helepanelik algsete kaotuste suhtes. Kontrollige, kui lĂ€hedal on tegelik tulemus oodatule, kui mudel alustas juhuslikult. V Andrei Karpatise töös on ette nĂ€htud jĂ€rgmist: «Veenduge, et saate tulemuse, mida eeldatakse, kui alustate vĂ€ikese arvu parameetritega. On parem kohe kontrollida andmete kadu (seades regulatsioonitaseme nulli). NĂ€iteks CIFAR-10 jaoks Softmax klassifikaatoriga ootame, et algsed kaotused oleksid 2.302, kuna oodatud difuusne tĂ”enĂ€osus on 0,1 iga klassi kohta (kuna klasside arv on 10), ning Softmaxi kadu on korrektse klassi negatiivne logaritmiline tĂ”enĂ€osus, nagu –ln (0.1) = 2.302».

Binaarse nĂ€ite korral teostatakse sarnane arvutus iga klassi kohta. NĂ€iteks on andmed: 20% 0’s ja 80% 1’s. Oodatav algne kadu on kuni –0,2ln (0,5) –0,8ln (0,5) = 0,693147. Kui tulemus on ĂŒle 1, vĂ”ib see viidata sellele, et nĂ€rvivĂ”rgu kaalukesed ei ole korralikult tasakaalustatud vĂ”i andmed ei ole normaliseeritud.

Kontrollime vahepealseid tulemusi ja ĂŒhendusi

NeurovĂ”rkude tĂ”rkeotsinguks on oluline mĂ”ista protsesside dĂŒnaamikat vĂ”rgu sees ja ĂŒksikute vahekihtide rolli, kuna need on omavahel seotud. Allpool on tĂŒĂŒpilised vead, millega vĂ”ite kokku puutuda:

  • vale vĂ€ljendid gradientide uuendamiseks;
  • kaaluuuendusi ei rakendata;
  • kadumas vĂ”i plahvatavad gradientid (exploding gradients).

Kui gradientide vÀÀrtused on null, tÀhendab see, et Ôppimiskiirus optimeerijas on liiga madal, vÔi et olete kokku puutunud vale vÀljendiga gradientide uuendamiseks.

Lisaks on oluline jÀlgida aktiveerimisfunktsioonide, kaalude ja iga kihi uuenduste vÀÀrtusi. NÀiteks, parametrimÀÀrade (kaalude ja tÔukude) uuenduste suurus peaks olema 1-e3..

Eksisteerib nĂ€htus, mida kutsutakse 'Dying ReLU' vĂ”i «kaduma kippuva gradientide probleemiks», kui ReLU neuronid annavad pĂ€rast suurt negatiivset vÀÀrtust (bias) oma kaalude kohta nulli. Need neuronid ei aktiveeru enam kunagi ĂŒheski andmekohas.

Saate gradientide kontrolli kasutada nende vigade tuvastamiseks, hinnates gradienti numbrilise lÀhenemise abil. Kui see on lÀhedane arvutatud gradientidele, siis on tagasikandmine Ôigesti teostatud. Gradientide kontrollimise loomiseks vaadake neid suurepÀraseid ressursse CS231-st. siit ja siit, ning Ôppetundi Andrew Nga kohta selle teema osas.

Faizan Sheikh toob esile kolm peamist meetodit nÀrvivÔrgu visualiseerimiseks:

  • EelvĂ€ljad — lihtsad meetodid, mis nĂ€itavad meile koolitatud mudeli ĂŒldstruktuuri. Need hĂ”lmavad individuaalsete kihtide neuronite vĂ”i filtrite vĂ€ljundite ja iga kihi parameetrite kuvamist.
  • Aktiveerimise alusel. Nendes tĂ”lgime individuaalsete neuronite vĂ”i neuronigruppide aktiveerimisi, et mĂ”ista nende funktsioone.
  • Gradientide alusel. Need meetodid kipuvad manipuleerima gradientidega, mis tekivad mudeli koolitamise kĂ€igus (sealhulgas tĂ€henduskaardid ja klassi aktiveerimise kaardid).

On mitmeid kasulikke tööriistu, mis visualiseerivad kihtide aktiveerimisi ja ĂŒhendusi, nĂ€iteks ConX ja Tensorboard.

Töötame nÀrvivÔrkudega: tÔrkeotsingu kontrollnimekiri

Parameetrite diagnoosimine

Neuraalsetel vÔrkudel on palju parameetreid, mis omavahel suhtlevad, mis muudab optimeerimise keeruliseks. See jaotis on aktiivsete teadusuuringute objektiks, seega tuleks allpool esitatud soovitusi kÀsitleda vaid nÔuannete ja alguspunktidena, millest alustada.

Paketi suurus (partii suurus) — peaks olema piisavalt suur, et saada tĂ€psed gradientvea hinnangud, kuid piisavalt vĂ€ike, et stohhastiline gradientne langetamine (SGD) suudaks teie vĂ”rku jĂ€rjekorda seada. VĂ€ikesed partii suurused toovad kaasa kiire konvergentsi treeningprotsessi mĂŒra tĂ”ttu ja hiljem — optimeerimise raskusi. TĂ€iendavat teavet leiate siit siit.

Õppekiirus — liiga madal viib aeglasele konvergentsile vĂ”i riskile jÀÀda kinni kohalikesse miinimumitesse. Samal ajal pĂ”hjustab kĂ”rge Ă”ppekiirus optimeerimise hajumist, kuna te riskite „hĂŒppama” sĂŒgavale, kuid kitsale kaotuse funktsiooni osale. Proovige kasutada kiirusplaneerimist, et Ă”ppimise ajal seda vĂ€hendada. CS231n kursusel on suur osa, mis kĂ€sitleb seda teemat.

Gradientide piiramine  — gradientide piiramine tagasikandmise ajal maksimaalse vÀÀrtuse vĂ”i piirmÀÀra jĂ€rgi. See on kasulik, kui satute kokku plahvatuvate gradientidega, nagu mainitud kolmandas punktis.

Partii normaliseerimine — kasutatakse iga kihi sisendi normaliseerimiseks, mis aitab lahendada sisemist kovariatsioonimuutust. Kui kasutate koos Dropout'i ja Batch Normalization'i, vaadake seda artiklit.

Stohhastiline gradientide langetamine (SGD) — on mitmeid SGD variante, mis kasutavad impulssi, kohandatud Ă”ppimiskiirus ja Nesterovi meetodit. Kuid ĂŒkski neist ei oma selget eeliseid ei Ă”ppimise efektiivsuse ega ĂŒldistamise osas (rohkem teavet siin).

Regulaarimine — on hĂ€davajalik ĂŒldistava mudeli ehitamiseks, kuna see lisab karistuse mudeli keerukuse vĂ”i ÀÀrmuslike parameetrite vÀÀrtuste eest. See on viis vĂ€hendada mudeli dispersiooni ilma selle kaldena oluliselt suurenemist. Üksikasjalikuma teabe saamiseks — vaadake siia.

Kuna ise kĂ”ike hinnata, tuleb regulaarimine vĂ€lja lĂŒlitada ja kontrollida andmete kadumise gradienti ise.

Kukkumine — veel ĂŒks meetod teie vĂ”rgu organiseerimiseks ĂŒlekoormuse vĂ€ltimiseks. Koolituse ajal toimub kukkumine, sĂ€ilitades neuroni aktiivsuse mingi tĂ”enĂ€osusega p (hĂŒperparameeter) vĂ”i seades selle nulliks vastasel juhul. Tulemuseks on, et vĂ”rk peab kasutama iga Ă”ppepartii jaoks teistsugust parameetrite alamkogumit, mis vĂ€hendab teatud parameetrite muutusi, mis vĂ”ivad domineerivaks muutuda.

Oluline: kui kasutate samaaegselt nii kukkumist kui ka partii normaliseerimist, olge ettevaatlik nende toimingute jÀrjekorra vÔi isegi kooskasutamise osas. KÔike seda arutatakse ja tÀiendatakse endiselt aktiivselt. Siin on kaks olulist arutelu selle teema kohta Stackoverflowis ja Arxiv.

Töötamise kontroll

Tegemist on tööprotsesside ja katsete dokumenteerimisega. Kui mitte midagi ei dokumenteerida, vÔib ununeda nÀiteks, milline on kasutatav Ôppimiskiirus vÔi klasside kaalud. Kontrolli abil on vÔimalik probleemideta vaadata ja korrata varasemaid katseid. See vÔimaldab vÀhendada dubleeritud katsete arvu.

TĂ”si, kĂ€sitsi dokumenteerimine vĂ”ib osutuda keeruliseks, kui tööde maht on suur. Siinkohal tulevad appi sellised tööriistad nagu Comet.ml, mis aitavad automaatselt logida andme kogu, koodimuudatused, katsete ajaloo ja tootemudeleid, sealhulgas olulisi andmeid teie mudeli kohta (hĂŒperparameetrid, mudeli jĂ”udluse nĂ€itajad ja keskkonnaandmed).

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, mille tuleks teha keskkonna ja modelleerimise standardiseerimiseks.

Töötame nÀrvivÔrkudega: tÔrkeotsingu kontrollnimekiri

Loodan, et see postitus suudab olla alguspunkt, millest te alustate oma neuraalvÔrgu hÀÀlestust.

Skillbox soovitab:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster