Gawe sareng jaringan saraf: Daptar pariksa pikeun debugging

Gawe sareng jaringan saraf: Daptar pariksa pikeun debugging

Kode produk perangkat lunak mesin diajar sering rumit sareng rada ngabingungkeun. Ngadeteksi sareng ngaleungitkeun bug di dinya mangrupikeun tugas anu intensif sumberdaya. Malah nu pangbasajanna jaringan saraf feedforward merlukeun pendekatan serius kana arsitektur jaringan, initialization tina beurat, sarta optimasi jaringan. Kasalahan leutik tiasa nyababkeun masalah anu teu pikaresepeun.

Tulisan ieu ngeunaan algoritma pikeun nga-debug jaringan saraf anjeun.

Skillbox nyarankeun: Kursus praktis pamekar Python ti scratch.

Kami ngingetan: pikeun sakabéh pamiarsa "Habr" - diskon 10 rubles nalika enrolling dina sagala Tangtu Skillbox ngagunakeun "Habr" kode promosi.

Algoritma diwangun ku lima tahap:

  • mimiti gampang;
  • konfirmasi karugian;
  • mariksa hasil panengah sareng sambungan;
  • diagnostik parameter;
  • kontrol gawé.

Upami aya anu langkung narik ka anjeun tibatan anu sanés, anjeun tiasa langsung ngalangkungan bagian ieu.

Mimitian gampang

Jaringan saraf sareng arsitéktur anu kompleks, teraturisasi, sareng panjadwal laju diajar langkung sesah di-debug tibatan anu biasa. Urang keur rada tricky dieu, saprak titik sorangan henteu langsung patali debugging, tapi ieu masih mangrupa rekomendasi penting.

A mimiti basajan nyaéta nyieun model saderhana tur ngalatih eta dina hiji set (titik) data.

Kahiji urang nyieun model saderhana

Pikeun ngamimitian gancang, urang nyieun jaringan leutik ku lapisan disumputkeun tunggal jeung pariksa yen sagalana jalan leres. Teras we laun ngahesekeun model, mariksa unggal aspék anyar struktur na (lapisan tambahan, parameter, jsb), sarta ngaléngkah.

Urang ngalatih modél dina set tunggal (titik) data

Salaku pamariksaan sanity gancang pikeun proyék anjeun, anjeun tiasa nganggo hiji atanapi dua titik data latihan pikeun ngonfirmasi naha sistemna jalan leres. Jaringan saraf kedah nunjukkeun akurasi 100% dina latihan sareng uji. Upami ieu sanés masalahna, maka modélna alit teuing atanapi anjeun parantos gaduh bug.

Sanaos sadayana saé, nyiapkeun modél pikeun hiji atanapi langkung jaman sateuacan ngaléngkah.

assessment leungitna

Estimasi leungitna mangrupakeun cara utama pikeun nyaring kinerja model urang. Anjeun kudu mastikeun yén leungitna téh luyu jeung masalah jeung yén fungsi leungitna dipeunteun dina skala bener. Lamun make leuwih ti hiji tipe leungitna, pastikeun aranjeunna sadayana dina urutan sarua jeung diskalakeun bener.

Kadé janten attentive kana karugian awal. Pariksa sabaraha deukeut hasil sabenerna jeung hasil ekspektasi lamun model dimimitian ku tatarucingan acak. DI Karya Andrey Karpathy nunjukkeun ieu:: "Pastikeun anjeun nampi hasil anu anjeun ngarepkeun nalika anjeun ngamimitian ku sajumlah parameter. Éta leuwih alus pikeun geuwat pariksa leungitna data (kalawan darajat regularization disetel ka nol). Contona, pikeun CIFAR-10 kalawan classifier Softmax, urang ngaharepkeun karugian awal 2.302 sabab probability diffuse ekspektasi nyaeta 0,1 pikeun tiap kelas (saprak aya 10 kelas) jeung leungitna Softmax nyaeta log likelihood négatip tina kelas bener. sakumaha − ln (0.1) = 2.302.”

Pikeun conto binér, itungan anu sami ngan ukur dilakukeun pikeun unggal kelas. Ieu, contona, data: 20% 0 sareng 80% 1. Karugian awal ekspektasi bakal nepi ka -0,2ln (0,5) -0,8ln (0,5) = 0,693147. Upami hasilna langkung ageung tibatan 1, éta tiasa nunjukkeun yén beurat jaringan saraf henteu saimbang leres atanapi data henteu dinormalisasi.

Mariksa hasil panengah sareng sambungan

Pikeun debug jaringan saraf, perlu ngartos dinamika prosés dina jaringan sareng peran lapisan perantara individu nalika aranjeunna disambungkeun. Ieu mangrupikeun kasalahan umum anu anjeun tiasa mendakan:

  • éksprési lepat pikeun apdet gradle;
  • apdet beurat teu dilarapkeun;
  • gradients exploding.

Upami nilai gradién nol, ieu hartosna tingkat diajar dina optimizer lambat teuing, atanapi anjeun mendakan ekspresi anu salah pikeun ngamutahirkeun gradién.

Salaku tambahan, perlu pikeun ngawas nilai-nilai fungsi aktivasina, beurat sareng apdet unggal lapisan. Salaku conto, gedéna apdet parameter (beurat sareng bias) kudu 1-e3.

Aya fenomena disebut "Dying ReLU" atawa "masalah gradién leungit", Nalika neuron ReLU bakal kaluaran nol saatos diajar nilai bias négatip anu ageung pikeun beuratna. Neuron ieu henteu pernah dipecat deui iraha waé dina data.

Anjeun tiasa nganggo mariksa gradién pikeun ngaidentipikasi kasalahan ieu ku cara ngadeukeutan gradién nganggo pendekatan numerik. Upami éta caket kana gradién anu diitung, maka backpropagation dilaksanakeun leres. Pikeun nyieun cek gradién, pariksa kaluar ieu sumberdaya hébat ti CS231 di dieu и di dieusarta ogé kalawan palajaran Andrew Nga dina topik ieu.

Faizan Syekh nunjukkeun tilu métode utama pikeun visualisasi jaringan saraf:

  • Preliminaries mangrupakeun métode basajan nu némbongkeun urang struktur umum model dilatih. Ieu kalebet kaluaran bentuk atanapi saringan tina lapisan individu jaringan saraf sareng parameter dina unggal lapisan.
  • Aktipkeun dumasar. Di antarana, urang decipher aktivasina neuron individu atawa grup neuron ngartos fungsi maranéhanana.
  • Dumasar gradién. Métode ieu condong ngamanipulasi gradién anu dibentuk tina pas maju sareng mundur tina latihan modél (kalebet peta saliency sareng peta aktivasina kelas).

Aya sababaraha parabot mangpaat pikeun visualizing nu aktivasina sarta sambungan lapisan individu, f.eks. ConX и Tensorboard.

Gawe sareng jaringan saraf: Daptar pariksa pikeun debugging

Diagnostik parameter

Jaringan saraf ngagaduhan seueur parameter anu saling berinteraksi, anu ngahesekeun optimasi. Sabenerna, bagian ieu mangrupa subjék panalungtikan aktif ku spesialis, jadi saran handap kudu dianggap ukur nasehat, dimimitian titik ti mana pikeun ngawangun.

Ukuran pakét (ukuran bets) - Upami anjeun hoyong ukuran bets jadi cukup badag pikeun meunangkeun perkiraan gradién kasalahan akurat, tapi cukup leutik pikeun turunan gradient stokastik (SGD) pikeun regularize jaringan Anjeun. Ukuran bets leutik bakal ngakibatkeun konvergénsi gancang alatan noise salila prosés latihan jeung saterusna ka kasusah optimasi. Ieu dijelaskeun dina leuwih jéntré di dieu.

Laju diajar - teuing low bakal ngakibatkeun konvergénsi ngalambatkeun atawa résiko nyangkut dina minimum lokal. Dina waktos anu sami, tingkat diajar anu luhur bakal nyababkeun divergénsi optimasi sabab anjeun résiko ngaluncat kana bagian anu jero tapi sempit tina fungsi leungitna. Coba nganggo scheduling speed pikeun ngurangan eta bari ngalatih jaringan saraf. Up to date sareng CS231n aya bagian badag dedicated ka masalah ieu.

Guntingan gradién  - motong gradién parameter salila backpropagation dina nilai maksimum atawa norma marginal. Mangpaat pikeun ngungkulan sagala gradients exploding Anjeun bisa sapatemon dina titik tilu.

Normalisasi angkatan - dipaké pikeun normalize data input unggal lapisan, nu solves masalah shift kovariat internal. Upami anjeun nganggo Dropout sareng Batch Norma babarengan, parios tulisan ieu.

turunan gradién stokastik (SGD) - aya sababaraha variétas SGD anu ngagunakeun moméntum, laju learning adaptif jeung métode Nesterov. Sanajan kitu, taya sahijieun boga kaunggulan jelas dina hal efisiensi diajar boh generalisasi (rinci dieu).

Regularisasi - penting pisan pikeun ngawangun modél anu tiasa digeneralisasi, sabab éta nambihan hukuman pikeun pajeulitna modél atanapi nilai parameter ekstrim. Ieu mangrupikeun cara pikeun ngirangan varian modél tanpa sacara signifikan ningkatkeun biasna. Tambih deui inpo wincik - dieu.

Pikeun meunteun sadayana nyalira, anjeun kedah nganonaktipkeun regularisasi sareng pariksa gradién leungitna data nyalira.

Muterkeun nyaeta cara sejen pikeun streamlining jaringan Anjeun pikeun nyegah kamacetan. Salila latihan, dropout dilumangsungkeun ukur ku ngajaga aktivitas neuron kalawan probabiliti tangtu p (hyperparameter) atawa netepkeun ka enol dina kasus sabalikna. Hasilna, jaringan kudu ngagunakeun sawaréh béda tina parameter pikeun tiap bets latihan, nu ngurangan parobahan parameter tangtu nu jadi dominan.

Penting: Upami anjeun nganggo dropout sareng normalisasi bets, ati-ati ngeunaan urutan operasi ieu atanapi nganggo aranjeunna babarengan. Sadaya ieu masih aktip dibahas sareng ditambahan. Ieu dua diskusi penting dina topik ieu dina Stackoverflow и arsip.

Kontrol gawé

Éta ngeunaan ngadokumentasikeun alur kerja sareng ékspérimén. Upami anjeun henteu ngadokumentasikeun naon waé, anjeun tiasa hilap, contona, tingkat diajar atanapi beurat kelas anu dianggo. Hatur nuhun kana kontrol, anjeun tiasa kalayan gampang ningali sareng baranahan percobaan saméméhna. Ieu ngidinan Anjeun pikeun ngurangan jumlah duplikat percobaan.

Nanging, dokuméntasi manual tiasa janten tugas anu sesah upami seueur padamelan anu ageung. Ieu tempat parabot kawas Comet.ml datang pikeun mantuan Anjeun otomatis log datasets, parobahan kode, sajarah eksperimen, jeung model produksi, kaasup informasi konci ngeunaan model anjeun (hyperparameters, metrics kinerja model, jeung informasi lingkungan).

Jaringan saraf tiasa sénsitip pisan kana parobahan leutik, sareng ieu bakal nyababkeun panurunan dina pagelaran modél. Nyukcruk sareng ngadokumentasikeun padamelan anjeun mangrupikeun léngkah munggaran anu anjeun tiasa lakukeun pikeun ngabakukeun lingkungan sareng modél anjeun.

Gawe sareng jaringan saraf: Daptar pariksa pikeun debugging

Abdi ngarepkeun tulisan ieu tiasa janten titik awal pikeun anjeun ngamimitian debugging jaringan saraf anjeun.

Skillbox nyarankeun:

sumber: www.habr.com

Tambahkeun komentar