Darbs ar neironu tīkliem: kontrolsaraksts atkļūdoŔanai

Darbs ar neironu tīkliem: kontrolsaraksts atkļūdoŔanai

MaŔīnmācÄ«Å”anās programmatÅ«ras produktu kods bieži ir sarežģīts un diezgan mulsinoÅ”s. Kļūdu noteikÅ”ana un novērÅ”ana tajā ir resursietilpÄ«gs uzdevums. Pat visvienkārŔākā uz priekÅ”u vērstie neironu tÄ«kli nepiecieÅ”ama nopietna pieeja tÄ«kla arhitektÅ«rai, atsvaru inicializācijai un tÄ«kla optimizācijai. Neliela kļūda var radÄ«t nepatÄ«kamas problēmas.

Šis raksts ir par neironu tīklu atkļūdoŔanas algoritmu.

Skillbox iesaka: Praktiskais kurss Python izstrādātājs no nulles.

Atgādinām: visiem "Habr" lasītājiem - atlaide 10 000 rubļu, reģistrējoties jebkurā Skillbox kursā, izmantojot "Habr" reklāmas kodu.

Algoritms sastāv no pieciem posmiem:

  • viegls sākums;
  • zaudējumu apstiprināŔana;
  • starprezultātu un savienojumu pārbaude;
  • parametru diagnostika;
  • darba kontrole.

Ja kaut kas jums Ŕķiet interesantāks par pārējo, varat nekavējoties pāriet uz Ŕīm sadaļām.

Viegls sākums

Neironu tÄ«klu ar sarežģītu arhitektÅ«ru, regularizāciju un mācÄ«Å”anās ātruma plānotāju ir grÅ«tāk atkļūdot nekā parasto. Å eit mēs esam nedaudz viltÄ«gi, jo pats punkts ir netieÅ”i saistÄ«ts ar atkļūdoÅ”anu, taču tas joprojām ir svarÄ«gs ieteikums.

VienkārŔs sākums ir izveidot vienkārŔotu modeli un apmācīt to uz vienu datu kopu (punktu).

Vispirms izveidojam vienkārŔotu modeli

Lai ātri sāktu darbu, mēs izveidojam nelielu tīklu ar vienu slēptu slāni un pārbaudām, vai viss darbojas pareizi. Tad mēs pakāpeniski sarežģījam modeli, pārbaudot katru jaunu tā struktūras aspektu (papildu slāni, parametru utt.), un turpinām.

Mēs apmācām modeli uz vienu datu kopu (punktu).

Lai ātri pārbaudītu sava projekta saprātu, apmācībai varat izmantot vienu vai divus datu punktus, lai pārliecinātos, vai sistēma darbojas pareizi. Neironu tīklam apmācībā un pārbaudēs jāuzrāda 100% precizitāte. Ja tas tā nav, vai nu modelis ir pārāk mazs, vai arī jums jau ir kļūda.

Pat ja viss ir kārtībā, pirms turpināt, sagatavojiet modeli vienam vai vairākiem laikmetiem.

Zaudējumu novērtējums

Zaudējumu aplēse ir galvenais veids, kā uzlabot modeļa veiktspēju. Jums ir jāpārliecinās, ka zaudējumi ir atbilstoÅ”i problēmai un ka zaudējumu funkcijas ir novērtētas pareizajā skalā. Ja izmantojat vairāk nekā vienu zaudējumu veidu, pārliecinieties, vai tie visi ir vienā secÄ«bā un pareizi mērogoti.

Ir svarÄ«gi pievērst uzmanÄ«bu sākotnējiem zaudējumiem. Pārbaudiet, cik tuvu faktiskais rezultāts ir sagaidāmajam rezultātam, ja modelis tika sākts ar nejauÅ”u minējumu. IN Andreja Karpatija darbs liecina:: ā€œPārliecinieties, ka saņemat gaidÄ«to rezultātu, kad sākat ar nelielu parametru skaitu. Labāk ir nekavējoties pārbaudÄ«t datu zudumu (ar regulācijas pakāpi, kas iestatÄ«ta uz nulli). Piemēram, CIFAR-10 ar Softmax klasifikatoru mēs sagaidām, ka sākotnējie zaudējumi bÅ«s 2.302, jo paredzamā difÅ«zā varbÅ«tÄ«ba ir 0,1 katrai klasei (jo ir 10 klases), un Softmax zudums ir pareizās klases negatÄ«vā log iespējamÄ«ba. kā āˆ’ ln (0.1) = 2.302.

Binārajā piemērā lÄ«dzÄ«gs aprēķins tiek vienkārÅ”i veikts katrai no klasēm. Å eit, piemēram, ir dati: 20% 0 un 80% 1. Paredzamie sākotnējie zaudējumi bÅ«s lÄ«dz ā€“0,2ln (0,5) ā€“0,8ln (0,5) = 0,693147. Ja rezultāts ir lielāks par 1, tas var norādÄ«t, ka neironu tÄ«kla svari nav pareizi lÄ«dzsvaroti vai dati nav normalizēti.

Starprezultātu un savienojumu pārbaude

Lai atkļūdotu neironu tÄ«klu, ir jāsaprot tÄ«klā notiekoÅ”o procesu dinamika un atseviŔķu starpslāņu loma, kad tie ir savienoti. Tālāk ir norādÄ«tas izplatÄ«tākās kļūdas, ar kurām jÅ«s varat saskarties.

  • nepareizas izteiksmes gradle atjauninājumiem;
  • svara atjauninājumi netiek piemēroti;
  • sprādzienbÄ«stami gradienti.

Ja gradienta vērtÄ«bas ir nulle, tas nozÄ«mē, ka optimizētājā mācÄ«Å”anās ātrums ir pārāk lēns vai arÄ« jÅ«s saskaraties ar nepareizu gradienta atjaunināŔanas izteiksmi.

Turklāt ir jāuzrauga katra slāņa aktivizācijas funkciju vērtības, svars un atjauninājumi. Piemēram, parametru atjauninājumu apjoms (svērumi un novirzes) jābūt 1-e3.

Pastāv parādÄ«ba, ko sauc par ā€œDying ReLUā€ vai "pazÅ«doÅ”a gradienta problēma", kad ReLU neironi izdos nulli pēc tam, kad bÅ«s uzzinājuÅ”i lielu negatÄ«vu nobÄ«des vērtÄ«bu tā svariem. Å ie neironi nekad vairs netiek izÅ”auti nevienā datu punktā.

Varat izmantot gradienta pārbaudi, lai identificētu Ŕīs kļūdas, tuvinot gradientu, izmantojot skaitlisku pieeju. Ja tas ir tuvu aprēķinātajiem gradientiem, tad atpakaļpavairoÅ”ana tika ieviesta pareizi. Lai izveidotu gradienta pārbaudi, skatiet Å”os lieliskos CS231 resursus Å”eit Šø Å”eitKā arÄ« nodarbÄ«ba EndrjÅ« Nga par Å”o tēmu.

Faizan Ŕeihs norāda trīs galvenās neironu tīkla vizualizācijas metodes:

  • SagatavoÅ”anās ir vienkārÅ”as metodes, kas parāda apmācÄ«tā modeļa vispārējo struktÅ«ru. Tie ietver atseviŔķu neironu tÄ«kla slāņu formu vai filtru izvadi un katra slāņa parametrus.
  • Pamatojas uz aktivizāciju. Tajos mēs atÅ”ifrējam atseviŔķu neironu vai neironu grupu aktivācijas, lai izprastu to funkcijas.
  • Pamatojoties uz gradientiem. Å Ä«s metodes mēdz manipulēt ar gradientiem, kas tiek veidoti no modeļa apmācÄ«bas uz priekÅ”u un atpakaļ ejām (tostarp pamanāmÄ«bas kartes un klaÅ”u aktivizācijas kartes).

Ir vairāki noderÄ«gi rÄ«ki atseviŔķu slāņu aktivizāciju un savienojumu vizualizÄ“Å”anai, piem. ConX Šø Tensorboard.

Darbs ar neironu tīkliem: kontrolsaraksts atkļūdoŔanai

Parametru diagnostika

Neironu tÄ«kliem ir daudz parametru, kas mijiedarbojas viens ar otru, kas sarežģī optimizāciju. Faktiski Ŕī sadaļa ir speciālistu aktÄ«vas izpētes priekÅ”mets, tāpēc tālāk sniegtie ieteikumi ir uzskatāmi tikai par padomiem, izejas punktiem, no kuriem veidot.

Iepakojuma izmērs (partijas lielums) ā€” ja vēlaties, lai partijas lielums bÅ«tu pietiekami liels, lai iegÅ«tu precÄ«zus kļūdu gradienta aprēķinus, bet pietiekami mazs, lai stohastiskā gradienta nolaiÅ”anās (SGD) varētu normalizēt jÅ«su tÄ«klu. Nelieli partiju izmēri izraisÄ«s strauju konverÄ£enci apmācÄ«bas procesa trokŔņa dēļ un pēc tam optimizācijas grÅ«tÄ«bās. Tas ir aprakstÄ«ts sÄ«kāk Å”eit.

MācÄ«bu lÄ«menis - pārāk zems radÄ«s lēnu konverÄ£enci vai risku iestrēgt vietējos minimumos. Tajā paŔā laikā augsts mācÄ«Å”anās ātrums izraisÄ«s optimizācijas novirzes, jo jÅ«s riskējat izlēkt cauri dziļajai, bet Å”aurai zaudējuma funkcijas daļai. Mēģiniet izmantot ātruma plānoÅ”anu, lai to samazinātu, apmācot neironu tÄ«klu. Atjaunināts ar CS231n Å”ai problēmai ir veltÄ«ta liela sadaļa.

Gradienta izgrieÅ”anaā€Š ā€” parametru gradientu apgrieÅ”ana atpakaļpavairoÅ”anas laikā pie maksimālās vērtÄ«bas vai robežnormas. NoderÄ«ga, lai novērstu jebkādus sprāgstoÅ”us gradientus, ar kuriem jÅ«s varat saskarties treÅ”ajā punktā.

Partijas normalizācija - izmanto, lai normalizētu katra slāņa ievades datus, kas ļauj atrisināt iekŔējās kovariācijas nobÄ«des problēmu. Ja izmantojat Dropout un Batch Norma kopā, iepazÄ«stieties ar Å”o rakstu.

Stohastiskā gradienta nolaiÅ”anās (SGD) ā€” ir vairākas SGD Ŕķirnes, kas izmanto impulsu, adaptÄ«vos mācÄ«Å”anās ātrumus un Nesterova metodi. Tomēr nevienam no tiem nav skaidru priekÅ”rocÄ«bu gan mācÄ«bu efektivitātes, gan vispārināŔanas ziņā (sÄ«kāka informācija Å”eit).

Regularizācija - ir ļoti svarÄ«gi, lai izveidotu vispārināmu modeli, jo tas pievieno sodu par modeļa sarežģītÄ«bu vai ekstremālām parametru vērtÄ«bām. Tas ir veids, kā samazināt modeļa dispersiju, bÅ«tiski nepalielinot tā novirzi. Vairāk sÄ«kāka informācija - Å”eit.

Lai pats novērtētu visu, jums ir jāatspējo legalizācija un paÅ”am jāpārbauda datu zuduma gradients.

Izstājos ir vēl viena tÄ«kla racionalizācijas metode, lai novērstu sastrēgumus. ApmācÄ«bas laikā atbirums tiek veikts, tikai saglabājot neirona aktivitāti ar noteiktu varbÅ«tÄ«bu p (hiperparametrs) vai pretējā gadÄ«jumā iestatot to uz nulli. Rezultātā tÄ«klam katrai apmācÄ«bas partijai ir jāizmanto atŔķirÄ«ga parametru apakÅ”kopa, kas samazina noteiktu parametru izmaiņas, kas kļūst par dominējoŔām.

SvarÄ«gi! Ja izmantojat gan atlaiÅ”anas, gan pakeÅ”u normalizāciju, esiet piesardzÄ«gs attiecÄ«bā uz Å”o darbÄ«bu secÄ«bu vai pat to izmantoÅ”anu kopā. Tas viss joprojām tiek aktÄ«vi apspriests un papildināts. Å eit ir divas svarÄ«gas diskusijas par Å”o tēmu vietnē Stackoverflow Šø arhÄ«vs.

Darba kontrole

Tas ir par darbplÅ«smu un eksperimentu dokumentÄ“Å”anu. Ja neko nedokumentējat, varat aizmirst, piemēram, kāds mācÄ«Å”anās ātrums vai klases svari tiek izmantoti. Pateicoties kontrolei, varat viegli skatÄ«t un reproducēt iepriekŔējos eksperimentus. Tas ļauj samazināt eksperimentu dublikātu skaitu.

Tomēr liela darba apjoma gadÄ«jumā manuāla dokumentÄ“Å”ana var kļūt par sarežģītu uzdevumu. Å eit tiek izmantoti tādi rÄ«ki kā Comet.ml, kas palÄ«dz automātiski reÄ£istrēt datu kopas, koda izmaiņas, eksperimentālo vēsturi un ražoÅ”anas modeļus, tostarp galveno informāciju par modeli (hiperparametri, modeļa veiktspējas rādÄ«tāji un vides informācija).

Neironu tÄ«kls var bÅ«t ļoti jutÄ«gs pret nelielām izmaiņām, un tas novedÄ«s pie modeļa veiktspējas krituma. Darba izsekoÅ”ana un dokumentÄ“Å”ana ir pirmais solis, ko varat spert, lai standartizētu savu vidi un modelÄ“Å”anu.

Darbs ar neironu tīkliem: kontrolsaraksts atkļūdoŔanai

Es ceru, ka Ŕī ziņa var bÅ«t sākumpunkts, lai sāktu neironu tÄ«kla atkļūdoÅ”anu.

Skillbox iesaka:

Avots: www.habr.com

Pievieno komentāru