Sare neuronalekin lan egitea: arazketarako kontrol-zerrenda

Sare neuronalekin lan egitea: arazketarako kontrol-zerrenda

Ikaskuntza automatikoko software produktuen kodea konplexua eta nahiko nahasia izan ohi da. Bertan dauden akatsak detektatzea eta ezabatzea baliabide askoko zeregina da. Baita sinpleena ere feedforward sare neuronalak sare-arkitekturaren, pisuen hasierakoaren eta sarearen optimizazioaren ikuspegi serio bat behar da. Akats txiki batek arazo desatseginak sor ditzake.

Artikulu hau zure sare neuronalak arazketarako algoritmo bati buruzkoa da.

Skillbox-ek gomendatzen du: Ikastaro praktikoa Python garatzailea hutsetik.

Gogoratzen dugu: "Habr" irakurle guztientzat - 10 errubloko deskontua "Habr" promozio-kodea erabiliz Skillbox-eko edozein ikastarotan izena ematean.

Algoritmoak bost fase ditu:

  • hasiera erraza;
  • galeren berrespena;
  • tarteko emaitzak eta konexioak egiaztatzea;
  • parametroen diagnostikoa;
  • lanaren kontrola.

Zerbait gainerakoa baino interesgarriagoa iruditzen bazaizu, berehala joan zaitezke atal hauetara.

Hasiera erraza

Arkitektura konplexua, erregularizazioa eta ikaskuntza-tasa programatzailea dituen neurona-sare bat ohiko bat baino zailagoa da arazketa. Apur bat delikatuak ari gara hemen, puntua bera zeharka arazketarekin lotuta baitago, baina gomendio garrantzitsua da oraindik.

Hasiera sinple bat eredu sinplifikatu bat sortzea eta datu multzo (puntu) batean trebatzea da.

Lehenik eta behin, eredu sinplifikatu bat sortuko dugu

Azkar hasteko, sare txiki bat sortzen dugu ezkutuko geruza bakar batekin eta dena ondo funtzionatzen duela egiaztatzen dugu. Gero, pixkanaka eredua zailtzen dugu, bere egituraren alderdi berri bakoitza egiaztatuz (geruza gehigarria, parametroa, etab.), eta aurrera egiten dugu.

Eredua datu multzo (puntu) bakar batean entrenatzen dugu

Zure proiektuaren zentzuzko egiaztapen azkar gisa, datu-puntu bat edo bi erabil ditzakezu prestakuntzarako, sistema behar bezala funtzionatzen ari den baieztatzeko. Sare neuronalak %100eko zehaztasuna erakutsi behar du entrenamenduetan eta probetan. Hori horrela ez bada, eredua txikiegia da edo dagoeneko akats bat duzu.

Dena ondo egon arren, prestatu eredua aro baterako edo gehiagorako, aurrera jarraitu aurretik.

Galeren balorazioa

Galera kalkulatzea da ereduaren errendimendua hobetzeko modu nagusia. Ziurtatu behar duzu galera arazorako egokia dela eta galera-funtzioak eskala egokian baloratzen direla. Galera mota bat baino gehiago erabiltzen badituzu, ziurtatu guztiak ordena berekoak direla eta behar bezala eskalatuta daudela.

Garrantzitsua da hasierako galerekin adi egotea. Egiaztatu benetako emaitza espero den emaitzatik zenbateraino hurbil dagoen eredua ausazko asmakizun batekin hasten bada. IN Andrey Karpathyren lanak honako hau iradokitzen du:: β€œZiurtatu espero duzun emaitza lortzen duzula parametro kopuru txiki batekin hasten zarenean. Hobe da datu-galera berehala egiaztatzea (erregularizazio-maila zeroan ezarrita). Esate baterako, CIFAR-10 Softmax sailkatzaile batekin, hasierako galera 2.302koa izatea espero dugu, espero den probabilitate hedatua 0,1 delako klase bakoitzeko (10 klase daudenez) eta Softmax galera klase zuzenaren log probabilitate negatiboa delako. gisa βˆ’ ln (0.1) = 2.302.”

Adibide bitarrari dagokionez, antzeko kalkulu bat egiten da klase bakoitzeko. Hona, adibidez, datuak: % 20 0 eta % 80 1. Espero den hasierako galera –0,2ln (0,5) –0,8ln (0,5) = 0,693147 artekoa izango da. Emaitza 1 baino handiagoa bada, sare neuronalaren pisuak behar bezala orekatuta edo datuak normalizatuta ez daudela adieraz dezake.

Tarteko emaitzak eta konexioak egiaztatzea

Neurona-sare bat arazketa egiteko, beharrezkoa da sare barruko prozesuen dinamika eta banakako tarteko geruzek konektatzen diren heinean duten eginkizuna ulertzea. Hona hemen aurki ditzakezun errore arruntak:

  • gradle eguneratzeetarako adierazpen okerrak;
  • pisuaren eguneraketak ez dira aplikatzen;
  • lehertzen ari diren gradienteak.

Gradienteen balioak zero badira, horrek esan nahi du optimizatzaileko ikaskuntza-tasa motelegia dela edo gradientea eguneratzeko adierazpen oker bat aurkitzen ari zarela.

Horrez gain, geruza bakoitzaren aktibazio-funtzioen, pisuen eta eguneraketen balioak kontrolatu behar dira. Adibidez, parametroen eguneraketen magnitudea (pisuak eta alborapenak) 1-e3 izan behar du.

Bada β€œDying ReLU” izeneko fenomeno bat edo "desagertzen den gradientearen arazoa", ReLU neuronek zero aterako dutenean bere pisuetarako alborapen negatibo handi bat ikasi ondoren. Neurona hauek ez dira inoiz gehiago jaurtitzen datuen edozein unetan.

Gradientearen egiaztapena erabil dezakezu errore hauek identifikatzeko, gradientea hurbilduz zenbakizko ikuspegia erabiliz. Kalkulatutako gradienteetatik gertu badago, atzera-hedapena behar bezala inplementatu da. Gradientearen egiaztapena sortzeko, begiratu CS231-ko baliabide bikain hauek Hemen ΠΈ HemenBaita ikasgaia Andrew Nga gai honi buruz.

Faizan Sheikh Neurona-sare bat ikusteko hiru metodo nagusi adierazten ditu:

  • Aurretiazkoak metodo sinpleak dira, trebatutako ereduaren egitura orokorra erakusten digutenak. Horien artean, sare neuronaleko geruza indibidualen forma edo iragazkien irteera eta geruza bakoitzaren parametroak daude.
  • Aktibazioan oinarrituta. Horietan, neurona indibidualen edo neurona taldeen aktibazioa deszifratzen dugu haien funtzioak ulertzeko.
  • Gradienteetan oinarrituta. Metodo hauek ereduen prestakuntzaren aurrerantzean eta atzerantzean sortzen diren gradienteak manipulatu ohi dituzte (garbitasun mapak eta klase aktibazio mapak barne).

Hainbat tresna erabilgarriak daude geruzen indibidualen aktibazio eta konexioak ikusteko, adibidez. ConX ΠΈ Tensortaula.

Sare neuronalekin lan egitea: arazketarako kontrol-zerrenda

Parametroen diagnostikoa

Sare neuronalek elkarri eragiten dioten parametro asko dituzte, eta horrek optimizazioa zailtzen du. Egia esan, atal hau espezialisten ikerketa aktiboaren gaia da, beraz, beheko iradokizunak aholku gisa soilik hartu behar dira, abiapuntuetatik abiatuta.

Paketearen tamaina (lotearen tamaina) - lotearen tamaina nahikoa handia izan nahi baduzu errore-gradienteen estimazio zehatzak lortzeko, baina nahikoa txikia izan dadila gradiente estokastikoen jaitsiera (SGD) zure sarea erregularizatzeko. Lote txikiek konbergentzia azkarra ekarriko dute entrenamendu-prozesuan zarata dela eta eta, ondoren, optimizazio-zailtasunak. Hau zehatzago deskribatzen da Hemen.

Ikaskuntza-tasa - baxuak konbergentzia motela edo tokiko minimoetan trabatzeko arriskua ekarriko du. Aldi berean, ikaskuntza-tasa altu batek optimizazio-dibergentzia eragingo du, galera-funtzioaren zati sakon baina estutik jauzi egiteko arriskua duzulako. Saiatu abiadura-programazioa erabiltzen hura murrizteko, sare neuronalak entrenatzen dituzun bitartean. CS231n eguneratua arazo honi eskainitako atal handi bat dago.

Gradientearen mozketaβ€Š β€” Atzeko hedapenean parametro-gradienteak moztea balio maximoan edo arau marjinalean. Hirugarren puntuan aurki ditzakezun gradiente lehergarri guztiak konpontzeko baliagarria.

Loteen normalizazioa - Geruza bakoitzaren sarrerako datuak normalizatzeko erabiltzen da, eta horrek barneko aldagaien desplazamenduaren arazoa konpontzeko aukera ematen digu. Dropout eta Batch Norma batera erabiltzen ari bazara, begiratu artikulu hau.

Gradiente estokastikoa jaitsiera (SGD) - Momentua, ikaskuntza-tasa moldagarriak eta Nesterov metodoa erabiltzen dituzten SGD barietate batzuk daude. Hala ere, horietako inork ez du abantaila argirik ikaskuntza-eraginkortasunari eta orokortzeari dagokionez (xehetasunak hemen).

Erregularizazioa - funtsezkoa da eredu orokorgarri bat eraikitzeko, ereduaren konplexutasunari edo muturreko parametroen balioei zigorra gehitzen dielako. Hau ereduaren bariantza murrizteko modu bat da, bere alborapena nabarmen handitu gabe. Gehiago informazio zehatza - hemen.

Guztia zuk zeuk ebaluatzeko, erregularizazioa desgaitu eta datu-galeren gradientea zuk zeuk egiaztatu behar duzu.

Jaitsiera zure sarea arintzeko beste metodo bat da pilaketak saihesteko. Entrenamenduan zehar, uztea neuronaren jarduera p probabilitate jakin batekin (hiperparametroa) mantenduz edo kontrako kasuan zerora ezarriz soilik egiten da. Ondorioz, sareak parametro-multzo ezberdin bat erabili behar du prestakuntza-lote bakoitzeko, eta horrek nagusi bihurtzen diren parametro jakin batzuetan aldaketak murrizten ditu.

Garrantzitsua: Uztea eta loteen normalizazioa erabiltzen baduzu, kontuz ibili eragiketa hauen ordenarekin edo baita elkarrekin erabiltzea ere. Hori guztia oraindik aktiboki eztabaidatzen eta osatzen da. Hona hemen gai honi buruzko bi eztabaida garrantzitsu Stackoverflow-en ΠΈ artxiboa.

Lanaren kontrola

Lan-fluxuak eta esperimentuak dokumentatzea da. Ez baduzu ezer dokumentatzen, agian ahaztu dezakezu, adibidez, zer ikaskuntza-tasa edo klaseko pisuak erabiltzen diren. Kontrolari esker, erraz ikusi eta erreproduzi ditzakezu aurreko esperimentuak. Horrek esperimentu bikoiztuen kopurua murrizteko aukera ematen du.

Hala ere, eskuzko dokumentazioa lan zaila bihur daiteke lan bolumen handi baten kasuan. Hor sartzen dira Comet.ml bezalako tresnak automatikoki erregistratzen laguntzeko datu-multzoak, kode-aldaketak, historia esperimentala eta ekoizpen-ereduak, zure ereduari buruzko funtsezko informazioa barne (hiperparametroak, ereduaren errendimendu-neurriak eta ingurumen-informazioa).

Neurona-sare bat aldaketa txikien aurrean oso sentikorra izan daiteke, eta horrek ereduaren errendimenduaren jaitsiera ekarriko du. Zure lanaren jarraipena eta dokumentazioa zure ingurunea eta modelizazioa estandarizatzeko eman dezakezun lehen urratsa da.

Sare neuronalekin lan egitea: arazketarako kontrol-zerrenda

Espero dut mezu hau zure neurona-sarea arazketan hasteko abiapuntu bat izan daitekeela.

Skillbox-ek gomendatzen du:

Iturria: www.habr.com

Gehitu iruzkin berria