Nggarap jaringan syaraf: daftar priksa kanggo debugging

Nggarap jaringan syaraf: daftar priksa kanggo debugging

Kode produk piranti lunak machine learning asring rumit lan cukup mbingungake. Ndeteksi lan ngilangi kewan omo minangka tugas sing mbutuhake sumber daya. Malah sing paling prasaja jaringan saraf feedforward mbutuhake pendekatan serius kanggo arsitektur jaringan, wiwitan bobot, lan optimalisasi jaringan. Kesalahan cilik bisa nyebabake masalah sing ora nyenengake.

Artikel iki babagan algoritma kanggo debugging jaringan saraf sampeyan.

Skillbox nyaranake: Kursus praktis pangembang Python saka ngeruk.

Kita ngelingake: kanggo kabeh sing maca "Habr" - diskon 10 rubel nalika ndhaptar kursus Skillbox nggunakake kode promosi "Habr".

Algoritma kasusun saka limang tahap:

  • wiwitan gampang;
  • konfirmasi mundhut;
  • mriksa asil penengah lan sambungan;
  • diagnostik parameter;
  • kontrol karya.

Yen ana sing katon luwih menarik tinimbang liyane, sampeyan bisa langsung pindhah menyang bagean kasebut.

wiwitan gampang

Jaringan saraf kanthi arsitektur kompleks, regularisasi, lan panjadwal tingkat sinau luwih angel didebug tinimbang sing biasa. Kita dadi rada angel ing kene, amarga titik kasebut ora langsung ana gandhengane karo debugging, nanging iki isih dadi rekomendasi penting.

Wiwitan sing prasaja yaiku nggawe model sing disederhanakake lan nglatih ing siji set (titik) data.

Pisanan kita nggawe model sing disederhanakake

Kanggo miwiti kanthi cepet, kita nggawe jaringan cilik kanthi lapisan sing didhelikake siji lan priksa manawa kabeh bisa digunakake kanthi bener. Banjur kita mboko sithik rumit model, mriksa saben aspek anyar saka struktur (lapisan tambahan, parameter, etc.), Lan nerusake.

Kita nglatih model ing siji set (titik) data

Minangka mriksa sanity cepet kanggo proyek sampeyan, sampeyan bisa nggunakake siji utawa rong titik data kanggo latihan kanggo konfirmasi apa sistem bisa digunakake kanthi bener. Jaringan saraf kudu nuduhake akurasi 100% ing latihan lan tes. Yen ora, model kasebut cilik banget utawa sampeyan wis duwe bug.

Sanajan kabeh apik, nyiyapake model kanggo siji utawa luwih jaman sadurunge nerusake.

Assessment mundhut

Estimasi mundhut minangka cara utama kanggo nyaring kinerja model. Sampeyan kudu mesthekake yen mundhut cocok kanggo masalah lan fungsi mundhut dirating ing ukuran sing bener. Yen sampeyan nggunakake luwih saka siji jinis mundhut, priksa manawa kabeh padha urutan lan scaled bener.

Penting kanggo menehi perhatian marang kerugian awal. Priksa sepira cedhake asil nyata karo asil samesthine yen model diwiwiti kanthi guess acak. ING Karya Andrey Karpathy nyaranake ing ngisor iki:: "Priksa manawa sampeyan entuk asil sing dikarepake nalika sampeyan miwiti kanthi sawetara paramΓ¨ter. Iku luwih apik kanggo langsung mriksa mundhut data (kanthi tingkat regularization disetel kanggo nul). Contone, kanggo CIFAR-10 karo klasifikasi Softmax, kita ngarepake mundhut dhisikan 2.302 amarga probabilitas kasebar samesthine 0,1 kanggo saben kelas (amarga ana 10 kelas) lan mundhut Softmax iku kamungkinan log negatif saka kelas bener. minangka βˆ’ ln (0.1) = 2.302.”

Kanggo conto binar, pitungan sing padha mung digawe kanggo saben kelas. Ing kene, contone, data: 20% 0 lan 80% 1. Mundhut wiwitan samesthine bakal nganti -0,2ln (0,5) -0,8ln (0,5) = 0,693147. Yen asil luwih saka 1, bisa uga nuduhake yen bobot jaringan saraf ora seimbang utawa data ora normal.

Priksa asil penengah lan sambungan

Kanggo debug jaringan saraf, perlu kanggo mangerteni dinamika proses ing jaringan lan peran lapisan penengah individu nalika disambungake. Mangkene kesalahan umum sing bisa sampeyan temoni:

  • ekspresi sing salah kanggo nganyari gradle;
  • nganyari bobot ora ditrapake;
  • gradien njeblug.

Yen nilai gradien nol, iki tegese tingkat sinau ing optimizer alon banget, utawa sampeyan nemoni ekspresi sing salah kanggo nganyari gradien.

Kajaba iku, perlu kanggo ngawasi nilai-nilai fungsi aktivasi, bobot lan nganyari saben lapisan. Contone, gedhene nganyari parameter (bobot lan bias) kudu 1-e3.

Ana kedadean disebut "Dying ReLU" utawa "masalah gradien ilang", nalika neuron ReLU bakal ngasilake nol sawise sinau nilai bias negatif sing gedhe kanggo bobote. Neuron iki ora tau dipecat maneh ing sembarang titik ing data.

Sampeyan bisa nggunakake mriksa gradien kanggo ngenali kesalahan kasebut kanthi ngira-ngira kecerunan nggunakake pendekatan numerik. Yen cedhak karo gradien sing diitung, mula backpropagation ditindakake kanthi bener. Kanggo nggawe mriksa gradien, mriksa metu iki sumber daya gedhe saka CS231 kene ΠΈ kenelan uga karo wulangan Andrew Nga ing topik iki.

Faizan Syekh nuduhake telung cara utama kanggo nggambarake jaringan saraf:

  • Preliminaries minangka cara prasaja sing nuduhake struktur umum model sing dilatih. Iki kalebu output saka wangun utawa saringan saka lapisan individu saka jaringan syaraf lan paramΓ¨ter ing saben lapisan.
  • Aktifake adhedhasar. Ing kana, kita nemtokake aktivasi neuron individu utawa klompok neuron kanggo ngerti fungsine.
  • Adhedhasar gradients. Cara kasebut cenderung ngapusi gradien sing dibentuk saka latihan model maju lan mundur (kalebu peta saliency lan peta aktivasi kelas).

Ana sawetara pribadi migunani kanggo visualizing aktifitas lan sambungan saka lapisan individu, f.eks. ConX ΠΈ Tensorboard.

Nggarap jaringan syaraf: daftar priksa kanggo debugging

Parameter diagnostik

Jaringan saraf duwe akeh parameter sing saling sesambungan, sing nggawe optimasi rumit. Bener, bagean iki minangka subyek riset aktif dening spesialis, mula saran ing ngisor iki kudu dianggep mung minangka saran, titik wiwitan kanggo mbangun.

Ukuran paket (ukuran batch) - Yen sampeyan pengin ukuran batch cukup gedhe kanggo entuk perkiraan gradien kesalahan sing akurat, nanging cukup cilik kanggo keturunan stochastic gradient (SGD) kanggo ngatur jaringan sampeyan. Ukuran batch cilik bakal nyebabake konvergensi kanthi cepet amarga gangguan sajrone proses latihan lan banjur dadi kesulitan optimasi. Iki diterangake kanthi luwih rinci kene.

Tingkat sinau - banget kurang bakal mimpin kanggo konvergensi alon utawa risiko macet ing minimal lokal. Ing wektu sing padha, tingkat sinau sing dhuwur bakal nyebabake divergensi optimasi amarga sampeyan duwe risiko mlumpat liwat bagean sing jero nanging sempit saka fungsi mundhut. Coba gunakake jadwal kacepetan kanggo nyuda nalika nglatih jaringan saraf. Nganyari karo CS231n ana bagean gedhe darmabakti kanggo masalah iki.

Kliping gradienβ€Š - trimming gradients parameter sak backpropagation ing Nilai maksimum utawa norma marginal. Migunani kanggo ngatasi masalah gradien sing bisa njeblug ing titik telu.

Normalisasi batch - digunakake kanggo normalake data input saben lapisan, sing ngidini kita ngatasi masalah shift kovariat internal. Yen sampeyan nggunakake Dropout lan Batch Norma bebarengan, priksa artikel iki.

Penurunan gradien stokastik (SGD) - ana sawetara jinis SGD sing nggunakake momentum, tingkat sinau adaptif lan metode Nesterov. Nanging, ora ana sing duwe kauntungan sing jelas babagan efisiensi sinau lan generalisasi (rincian kene).

Regularisasi - iku wigati kanggo mbangun model generalizable, awit iku nambah paukuman kanggo kerumitan model utawa nilai parameter nemen. Iki minangka cara kanggo nyuda varian model tanpa nambah bias kanthi signifikan. More informasi rinci - kene.

Kanggo ngevaluasi kabeh dhewe, sampeyan kudu mateni regularisasi lan mriksa gradien mundhut data dhewe.

Mudhun minangka cara liya kanggo nyepetake jaringan kanggo nyegah kemacetan. Sajrone latihan, dropout ditindakake mung kanthi njaga aktivitas neuron kanthi kemungkinan p (hyperparameter) tartamtu utawa nyetel menyang nol ing kasus ngelawan. Akibaté, jaringan kudu nggunakake subset paramèter sing beda kanggo saben kumpulan latihan, sing nyuda owah-owahan ing parameter tartamtu sing dadi dominan.

Penting: Yen sampeyan nggunakake loro dropout lan normalisasi kumpulan, ati-ati babagan urutan operasi kasebut utawa malah digunakake bebarengan. Kabeh iki isih aktif dibahas lan ditambah. Ing ngisor iki ana rong diskusi penting babagan topik iki ing Stackoverflow ΠΈ Arxiv.

Kontrol karya

Iki babagan dokumentasi alur kerja lan eksperimen. Yen sampeyan ora nyathet apa wae, sampeyan bisa uga lali, contone, apa tingkat sinau utawa bobot kelas sing digunakake. Thanks kanggo kontrol, sampeyan bisa kanthi gampang ndeleng lan ngasilake eksperimen sadurunge. Iki ngidini sampeyan nyuda jumlah eksperimen duplikat.

Nanging, dokumentasi manual bisa dadi tugas sing angel ing kasus volume kerja sing akeh. Iki ngendi piranti kaya Comet.ml teka kanggo mbantu sampeyan kanthi otomatis nyathet set data, owah-owahan kode, riwayat eksperimen, lan model produksi, kalebu informasi penting babagan model sampeyan (hiperparameter, metrik kinerja model, lan informasi lingkungan).

Jaringan saraf bisa banget sensitif marang owah-owahan cilik, lan iki bakal nyebabake penurunan kinerja model. Nelusuri lan ndokumentasikake karya sampeyan minangka langkah pertama sing bisa ditindakake kanggo nggawe standar lingkungan lan model.

Nggarap jaringan syaraf: daftar priksa kanggo debugging

Muga-muga kiriman iki bisa dadi titik wiwitan kanggo miwiti debugging jaringan saraf.

Skillbox nyaranake:

Source: www.habr.com

Add a comment