Pagtrabaho sa mga neural network: checklist alang sa pag-debug

Pagtrabaho sa mga neural network: checklist alang sa pag-debug

Ang code sa mga produkto sa software sa pagkat-on sa makina sagad komplikado ug medyo makalibog. Ang pag-ila ug pagwagtang sa mga bug sa sulod niini usa ka buluhaton nga adunay daghang kapanguhaan. Bisan ang pinakasimple feedforward nga neural network nanginahanglan usa ka seryoso nga pamaagi sa arkitektura sa network, pagsugod sa mga gibug-aton, ug pag-optimize sa network. Ang gamay nga sayop mahimong mosangpot sa dili maayo nga mga problema.

Kini nga artikulo bahin sa usa ka algorithm sa pag-debug sa imong mga neural network.

Girekomenda sa Skillbox: Praktikal nga kurso Python developer gikan sa scratch.

Gipahinumduman namon ikaw: alang sa tanan nga mga magbabasa sa "Habr" - usa ka diskwento sa 10 nga mga rubles kung nagpalista sa bisan unsang kurso sa Skillbox gamit ang code sa promosyon nga "Habr".

Ang algorithm naglangkob sa lima ka yugto:

  • sayon ​​nga pagsugod;
  • kumpirmasyon sa pagkawala;
  • pagsusi sa mga intermediate nga resulta ug koneksyon;
  • mga diagnostic sa parameter;
  • kontrol sa trabaho.

Kung adunay usa ka butang nga daw mas makapaikag kanimo kaysa sa uban, mahimo ka dayon nga molaktaw sa kini nga mga seksyon.

Sayon nga pagsugod

Ang neural network nga adunay komplikado nga arkitektura, regularisasyon, ug usa ka iskedyul sa rate sa pagkat-on mas lisud nga i-debug kaysa usa ka regular. Medyo malisud kami dinhi, tungod kay ang punto mismo dili direkta nga may kalabutan sa pag-debug, apan kini usa ka hinungdanon nga rekomendasyon.

Ang usa ka yano nga pagsugod mao ang paghimo og usa ka gipasimple nga modelo ug pagbansay niini sa usa ka set (punto) sa datos.

Una naghimo kami usa ka gipasimple nga modelo

Aron makasugod dayon, maghimo kami usa ka gamay nga network nga adunay usa ka tinago nga layer ug susihon kung ang tanan molihok sa husto. Dayon anam-anam natong gikomplikado ang modelo, gisusi ang matag bag-ong aspeto sa istruktura niini (dugang nga layer, parameter, ug uban pa), ug nagpadayon.

Gibansay namo ang modelo sa usa ka set (punto) sa datos

Ingon usa ka dali nga pagsusi sa kahimsog alang sa imong proyekto, mahimo nimong gamiton ang usa o duha nga mga punto sa datos sa pagbansay aron makumpirma kung ang sistema nagtrabaho sa husto. Ang neural network kinahanglan magpakita sa 100% nga katukma sa pagbansay ug pagsulay. Kung dili kini mao ang kaso, nan ang modelo gamay ra kaayo o ikaw adunay bug.

Bisan kung maayo ang tanan, andama ang modelo alang sa usa o daghang mga panahon sa dili pa magpadayon.

Pagtimbang-timbang sa pagkawala

Ang pagbana-bana sa pagkawala mao ang nag-unang paagi sa pagpino sa pasundayag sa modelo. Kinahanglan nimo nga masiguro nga ang pagkawala angay sa problema ug nga ang mga gimbuhaton sa pagkawala gi-rate sa husto nga sukod. Kung mogamit ka og labaw sa usa ka matang sa pagkawala, siguroa nga pareho silang tanan sa pagkasunod-sunod ug husto ang pag-scale.

Importante nga magmatinagdanon sa unang mga kapildihan. Susiha kung unsa ka duol ang aktwal nga resulta sa gipaabot nga resulta kung ang modelo nagsugod sa usa ka random nga pagtag-an. SA Ang trabaho ni Andrey Karpathy nagsugyot sa mosunod:: "Siguruha nga makuha nimo ang resulta nga imong gipaabut kung magsugod ka sa gamay nga gidaghanon sa mga parameter. Mas maayo nga susihon dayon ang pagkawala sa datos (nga ang lebel sa regularisasyon gitakda sa zero). Pananglitan, alang sa CIFAR-10 nga adunay usa ka Softmax classifier, atong gilauman nga ang inisyal nga pagkawala mao ang 2.302 tungod kay ang gipaabot nga diffuse nga kalagmitan mao ang 0,1 alang sa matag klase (tungod kay adunay 10 ka klase) ug ang Softmax nga pagkawala mao ang negatibo nga log posibilidad sa husto nga klase. ingon βˆ’ ln (0.1) = 2.302.”

Alang sa binary nga pananglitan, usa ka susama nga kalkulasyon ang gihimo alang sa matag usa sa mga klase. Dinhi, pananglitan, ang datos: 20% 0's ug 80% 1's. Ang gipaabot nga pasiunang kapildihan moabot sa –0,2ln (0,5) –0,8ln (0,5) = 0,693147. Kung ang resulta labaw pa sa 1, kini mahimong magpakita nga ang mga gibug-aton sa neural network dili husto nga balanse o ang datos dili normal.

Pagsusi sa mga intermediate nga resulta ug koneksyon

Aron ma-debug ang usa ka neural network, gikinahanglan nga masabtan ang mga dinamika sa mga proseso sulod sa network ug ang papel sa indibidwal nga intermediate layers samtang sila konektado. Ania ang kasagarang mga sayop nga imong masugatan:

  • sayop nga mga ekspresyon para sa gradle updates;
  • Ang mga pag-update sa gibug-aton wala magamit;
  • nagbuto nga mga gradient.

Kung ang mga kantidad sa gradient zero, kini nagpasabut nga ang rate sa pagkat-on sa optimizer hinay kaayo, o nga nakasugat ka usa ka dili husto nga ekspresyon alang sa pag-update sa gradient.

Dugang pa, kinahanglan nga bantayan ang mga kantidad sa mga gimbuhaton sa pagpaaktibo, gibug-aton ug pag-update sa matag usa sa mga layer. Pananglitan, ang kadako sa mga pag-update sa parameter (mga gibug-aton ug mga bias) kinahanglan nga 1-e3.

Adunay usa ka panghitabo nga gitawag nga "Dying ReLU" o "problema sa pagkawala sa gradient", sa diha nga ang ReLU neurons magpagawas ug zero human makakat-on sa dako nga negatibong bias nga bili alang sa mga gibug-aton niini. Kini nga mga neuron dili na gipabuto pag-usab sa bisan unsang punto sa datos.

Mahimo nimong gamiton ang gradient checking aron mailhan kini nga mga sayup pinaagi sa pagbanabana sa gradient gamit ang numerical approach. Kung kini duol sa gikalkula nga mga gradient, nan ang backpropagation gipatuman sa husto. Aron makahimo og gradient check, tan-awa kining nindot nga mga kapanguhaan gikan sa CS231 dinhi ΠΈ dinhiug uban usab leksyon Andrew Nga sa kini nga hilisgutan.

Faizan Sheikh nagpakita sa tulo ka nag-unang mga pamaagi sa paghanduraw sa usa ka neural network:

  • Ang mga pasiuna mao ang yano nga mga pamaagi nga nagpakita kanato sa kinatibuk-ang istruktura sa gibansay nga modelo. Naglakip kini sa output sa mga porma o mga filter sa indibidwal nga mga layer sa neural network ug ang mga parameter sulod sa matag layer.
  • Gibase sa pagpaaktibo. Diha kanila, atong gihubad ang mga pagpaaktibo sa indibidwal nga mga neuron o mga grupo sa mga neuron aron masabtan ang ilang mga gimbuhaton.
  • Base sa gradients. Kini nga mga pamaagi lagmit nga magmaniobra sa mga gradient nga naporma gikan sa unahan ug paatras nga mga agianan sa pagbansay sa modelo (lakip ang mga mapa sa saliency ug mga mapa sa pagpaaktibo sa klase).

Adunay ubay-ubay nga mapuslanon nga mga himan alang sa paghanduraw sa mga pagpaaktibo ug koneksyon sa indibidwal nga mga lut-od, pananglitan. ConX ΠΈ Tensorboard.

Pagtrabaho sa mga neural network: checklist alang sa pag-debug

Mga diagnostic sa parameter

Ang mga neural network adunay daghang mga parameter nga nakig-uban sa usag usa, nga nagpakomplikado sa pag-optimize. Sa tinuud, kini nga seksyon mao ang hilisgutan sa aktibo nga panukiduki sa mga espesyalista, mao nga ang mga sugyot sa ubos kinahanglan nga isipon lamang nga tambag, mga punto sa pagsugod kung diin magtukod.

Gidak-on sa pakete (gidak-on sa batch) - Kung gusto nimo nga ang gidak-on sa batch igo nga kadako aron makakuha og tukma nga mga pagbanabana sa gradient sa sayup, apan igo nga gamay alang sa stochastic gradient descent (SGD) aron ma-regularize ang imong network. Ang gagmay nga mga gidak-on sa batch mosangput sa paspas nga panagsama tungod sa kasaba sa panahon sa proseso sa pagbansay ug pagkahuman sa mga kalisud sa pag-optimize. Kini gihulagway sa mas detalyado dinhi.

Rate sa pagkat-on - ubos ra kaayo motultol sa hinay nga convergence o risgo nga ma-stuck sa local minima. Sa parehas nga oras, ang taas nga rate sa pagkat-on hinungdan sa pagkalainlain sa pag-optimize tungod kay peligro ka nga molukso sa lawom apan pig-ot nga bahin sa function sa pagkawala. Sulayi ang paggamit sa speed scheduling aron makunhuran kini samtang nagbansay sa neural network. Hangtod karon sa CS231n adunay usa ka dako nga seksyon nga gipahinungod niini nga problema.

Pagputol sa gradientβ€Š - Pagputol sa mga gradient sa parameter sa panahon sa backpropagation sa labing taas nga kantidad o marginal norm. Mapuslanon alang sa pag-troubleshoot sa bisan unsang nagbuto nga mga gradient nga mahimo nimong masugatan sa tulo nga punto.

Pag-normalize sa batch - gigamit sa pag-normalize sa input data sa matag layer, nga nagtugot kanato sa pagsulbad sa problema sa internal nga covariate pagbalhin. Kung gigamit nimo ang Dropout ug Batch Norma nga magkauban, susiha kini nga artikulo.

Stochastic gradient descent (SGD) - adunay daghang mga lahi sa SGD nga naggamit sa momentum, adaptive learning rates ug ang Nesterov nga pamaagi. Bisan pa, walay usa kanila ang adunay klaro nga bentaha sa mga termino sa kahusayan sa pagkat-on ug pag-generalization (mga detalye dinhi).

Regularisasyon - hinungdanon alang sa paghimo sa usa ka kinatibuk-an nga modelo, tungod kay kini nagdugang usa ka silot alang sa pagkakomplikado sa modelo o grabe nga mga kantidad sa parameter. Kini usa ka paagi aron makunhuran ang kalainan sa modelo nga dili madugangan ang pagpihig niini. Dugang pa detalyado nga impormasyon - dinhi.

Aron masusi ang tanan sa imong kaugalingon, kinahanglan nimo nga i-disable ang regularization ug susihon ang data loss gradient sa imong kaugalingon.

Nag-drop out maoy laing paagi sa pagpahapsay sa imong network aron malikayan ang paghuot. Atol sa pagbansay, ang pag-drop out gihimo lamang pinaagi sa pagpadayon sa kalihokan sa neuron nga adunay usa ka piho nga posibilidad nga p (hyperparameter) o itakda kini sa zero sa kaatbang nga kaso. Ingon usa ka sangputanan, ang network kinahanglan mogamit usa ka lahi nga subset sa mga parameter alang sa matag batch sa pagbansay, nga makapakunhod sa mga pagbag-o sa pipila nga mga parameter nga mahimong dominante.

Importante: Kung gigamit nimo ang dropout ug batch normalization, pag-amping sa han-ay niini nga mga operasyon o bisan sa paggamit niini nga magkauban. Kining tanan aktibo pa nga gihisgutan ug gidugangan. Ania ang duha ka importante nga mga diskusyon bahin niini nga hilisgutan sa Stackoverflow ΠΈ archive.

Pagkontrol sa trabaho

Mahitungod kini sa pagdokumento sa mga workflow ug mga eksperimento. Kung wala ka magdokumento sa bisan unsang butang, mahimo nimong makalimtan, pananglitan, kung unsang rate sa pagkat-on o gibug-aton sa klase ang gigamit. Salamat sa pagkontrol, dali nimo matan-aw ug makopya ang mga nangaging mga eksperimento. Kini nagtugot kanimo sa pagpakunhod sa gidaghanon sa mga duplicate nga mga eksperimento.

Bisan pa, ang manwal nga dokumentasyon mahimong usa ka lisud nga buluhaton sa kaso sa usa ka dako nga gidaghanon sa trabaho. Dinhi diin ang mga himan sama sa Comet.ml moabut aron matabangan ka nga awtomatiko nga mag-log sa mga dataset, pagbag-o sa code, kasaysayan sa eksperimento, ug mga modelo sa produksiyon, lakip ang hinungdanon nga kasayuran bahin sa imong modelo (mga hyperparameter, sukatan sa pasundayag sa modelo, ug kasayuran sa kinaiyahan).

Ang usa ka neural network mahimong sensitibo kaayo sa gagmay nga mga pagbag-o, ug kini mosangput sa usa ka pagkunhod sa pasundayag sa modelo. Ang pagsubay ug pagdokumento sa imong trabaho mao ang unang lakang nga imong mahimo aron ma-standardize ang imong palibot ug pagmodelo.

Pagtrabaho sa mga neural network: checklist alang sa pag-debug

Nanghinaut ko nga kini nga post mahimong usa ka punto sa pagsugod alang kanimo sa pagsugod sa pag-debug sa imong neural network.

Girekomenda sa Skillbox:

Source: www.habr.com

Idugang sa usa ka comment