Neyron şəbəkələri ilə işləmək: sazlama üçün yoxlama siyahısı

Neyron şəbəkələri ilə işləmək: sazlama üçün yoxlama siyahısı

Maşın öyrənmə proqram məhsullarının kodu çox vaxt mürəkkəb və olduqca qarışıqdır. Ondakı səhvləri aşkar etmək və aradan qaldırmaq resurs tələb edən bir işdir. Hətta ən sadə İrəli ötürülən neyron şəbəkələri şəbəkə arxitekturasına ciddi yanaşma, çəkilərin işə salınması və şəbəkənin optimallaşdırılması tələb olunur. Kiçik bir səhv xoşagəlməz problemlərə səbəb ola bilər.

Bu məqalə neyron şəbəkələrinizin sazlanması alqoritmi haqqındadır.

Skillbox tövsiyə edir: Praktik kurs Sıfırdan Python tərtibatçısı.

Xatırladırıq: "Habr" ın bütün oxucuları üçün - "Habr" promosyon kodundan istifadə edərək hər hansı bir Skillbox kursuna yazılarkən 10 000 rubl endirim.

Alqoritm beş mərhələdən ibarətdir:

  • asan başlanğıc;
  • itkilərin təsdiqi;
  • aralıq nəticələrin və əlaqələrin yoxlanılması;
  • parametr diaqnostikası;
  • işə nəzarət.

Əgər bir şey sizə digərlərindən daha maraqlı görünürsə, dərhal bu bölmələrə keçə bilərsiniz.

Asan başlanğıc

Mürəkkəb arxitekturaya, nizamlanmaya və öyrənmə sürəti planlayıcısına malik olan neyron şəbəkəsinin sazlanması adi şəbəkədən daha çətindir. Burada bir az çətinləşirik, çünki nöqtənin özü dolayı yolla sazlama ilə bağlıdır, lakin bu hələ də vacib tövsiyədir.

Sadə bir başlanğıc, sadələşdirilmiş bir model yaratmaq və onu bir verilənlər toplusuna (nöqtəsinə) öyrətməkdir.

Əvvəlcə sadələşdirilmiş bir model yaradırıq

Tez başlamaq üçün biz bir gizli təbəqə ilə kiçik bir şəbəkə yaradırıq və hər şeyin düzgün işlədiyini yoxlayırıq. Sonra biz modeli tədricən mürəkkəbləşdiririk, onun strukturunun hər bir yeni aspektini (əlavə təbəqə, parametr və s.) yoxlayır və davam edirik.

Modeli bir verilənlər toplusu (nöqtəsi) üzərində öyrədirik

Layihəniz üçün sürətli bir ağlı başında olma yoxlaması olaraq, sistemin düzgün işlədiyini təsdiqləmək üçün təlim üçün bir və ya iki məlumat nöqtəsindən istifadə edə bilərsiniz. Neyron şəbəkə təlim və sınaqda 100% dəqiqlik göstərməlidir. Əgər belə deyilsə, ya model çox kiçikdir, ya da artıq səhviniz var.

Hər şey qaydasında olsa belə, davam etməzdən əvvəl modeli bir və ya daha çox dövr üçün hazırlayın.

Zərərlərin qiymətləndirilməsi

Zərərlərin qiymətləndirilməsi modelin performansını aydınlaşdırmağın əsas yoludur. Siz zərərin problemə uyğun olmasını və itki funksiyalarının düzgün miqyasda qiymətləndirilməsini təmin etməlisiniz. Birdən çox itki növündən istifadə edirsinizsə, onların hamısının eyni qaydada və düzgün ölçüdə olduğundan əmin olun.

İlkin itkilərə diqqətli olmaq vacibdir. Model təsadüfi təxminlə başlayıbsa, faktiki nəticənin gözlənilən nəticəyə nə qədər yaxın olduğunu yoxlayın. IN Andrey Karpatinin işi aşağıdakıları təklif edir:: “Az sayda parametrlə başladığınız zaman gözlədiyiniz nəticəni əldə etdiyinizə əmin olun. Məlumat itkisini dərhal yoxlamaq daha yaxşıdır (reqalizasiya dərəcəsi sıfıra təyin edilməklə). Məsələn, Softmax klassifikatoru olan CIFAR-10 üçün biz ilkin itkinin 2.302 olmasını gözləyirik, çünki gözlənilən yayılma ehtimalı hər bir sinif üçün 0,1-dir (çünki 10 sinif var) və Softmax itkisi düzgün sinfin mənfi log ehtimalıdır. kimi − ln (0.1) = 2.302.”

İkili nümunə üçün oxşar hesablama sadəcə siniflərin hər biri üçün aparılır. Burada, məsələn, məlumatlar: 20% 0 və 80% 1. Gözlənilən ilkin zərər –0,2ln (0,5) –0,8ln (0,5) = 0,693147-ə qədər olacaq. Nəticə 1-dən böyükdürsə, bu, neyron şəbəkə çəkilərinin düzgün balanslaşdırılmadığını və ya məlumatların normallaşdırılmadığını göstərə bilər.

Aralıq nəticələrin və əlaqələrin yoxlanılması

Neyroşəbəkəni debug etmək üçün şəbəkə daxilində proseslərin dinamikasını və ayrı-ayrı ara təbəqələrin qoşulduqda rolunu başa düşmək lazımdır. Qarşılaşa biləcəyiniz ümumi səhvlər bunlardır:

  • gradle yeniləmələri üçün səhv ifadələr;
  • çəki yeniləmələri tətbiq edilmir;
  • partlayan gradientlər.

Qradient dəyərləri sıfırdırsa, bu, optimallaşdırıcıda öyrənmə sürətinin çox yavaş olduğunu və ya gradienti yeniləmək üçün səhv ifadə ilə qarşılaşdığınızı bildirir.

Bundan əlavə, aktivləşdirmə funksiyalarının dəyərlərini, hər bir təbəqənin çəkilərini və yeniləmələrini izləmək lazımdır. Məsələn, parametr yeniləmələrinin böyüklüyü (çəkilər və qərəzlər) 1-e3 olmalıdır.

“Dying ReLU” adlı bir fenomen var və ya "qradiyent problemi", ReLU neyronları çəkiləri üçün böyük bir mənfi qərəz dəyəri öyrəndikdən sonra sıfır çıxdıqda. Bu neyronlar məlumatların heç bir nöqtəsində bir daha işə salınmır.

Rəqəmsal yanaşmadan istifadə edərək gradienti təxmini etməklə bu səhvləri müəyyən etmək üçün qradiyent yoxlamasından istifadə edə bilərsiniz. Hesablanmış gradientlərə yaxındırsa, geri yayılma düzgün həyata keçirilib. Qradiyent yoxlanışı yaratmaq üçün CS231-dən bu böyük resursları yoxlayın burada и buradaEləcə də dərs Bu mövzuda Andrew Nga.

Faizan Şeyx neyron şəbəkəsini vizuallaşdırmaq üçün üç əsas metodu göstərir:

  • İlkin üsullar bizə öyrədilmiş modelin ümumi strukturunu göstərən sadə üsullardır. Bunlara neyron şəbəkəsinin ayrı-ayrı təbəqələrinin forma və ya filtrlərinin çıxışı və hər bir təbəqə daxilindəki parametrlər daxildir.
  • Aktivləşdirmə əsasında. Onlarda biz onların funksiyalarını başa düşmək üçün fərdi neyronların və ya neyron qruplarının aktivasiyalarını deşifrə edirik.
  • Qradientlərə əsaslanır. Bu üsullar, model təliminin irəli və geri keçidlərindən (o cümlədən, səciyyəvilik xəritələri və sinif aktivləşdirmə xəritələri) formalaşan gradientləri manipulyasiya etməyə meyllidir.

Fərdi təbəqələrin aktivləşdirilməsini və əlaqələrini vizuallaşdırmaq üçün bir neçə faydalı alət var, məsələn. ConX и Tensorboard.

Neyron şəbəkələri ilə işləmək: sazlama üçün yoxlama siyahısı

Parametr diaqnostikası

Neyron şəbəkələrinin bir-biri ilə qarşılıqlı əlaqədə olan çoxlu parametrləri var ki, bu da optimallaşdırmanı çətinləşdirir. Əslində, bu bölmə mütəxəssislər tərəfindən aktiv araşdırma mövzusudur, buna görə də aşağıda göstərilən təkliflər yalnız məsləhət, qurulacaq başlanğıc nöqtələri kimi qəbul edilməlidir.

Paket ölçüsü (batch ölçüsü) - Əgər siz yığın ölçüsünün səhv qradientin dəqiq təxminlərini əldə etmək üçün kifayət qədər böyük, lakin şəbəkənizi nizama salmaq üçün stoxastik gradient eniş (SGD) üçün kifayət qədər kiçik olmasını istəyirsinizsə. Kiçik partiya ölçüləri təlim prosesi zamanı səs-küy səbəbindən sürətli yaxınlaşmaya və sonradan optimallaşdırma çətinliklərinə səbəb olacaqdır. Bu daha ətraflı təsvir edilmişdir burada.

Öyrənmə dərəcəsi - çox aşağı konvergensiyanın yavaş olmasına və ya yerli minimumlarda ilişib qalma riskinə səbəb olacaq. Eyni zamanda, yüksək öyrənmə dərəcəsi optimallaşdırma fərqinə səbəb olacaq, çünki siz itki funksiyasının dərin, lakin dar hissəsindən keçmək riskiniz var. Neyroşəbəkəni məşq edərkən sürəti azaltmaq üçün sürət planlamasından istifadə etməyə çalışın. CS231n ilə bu günə qədər bu problemə həsr olunmuş böyük bir bölmə var.

Qradient kəsmə  — maksimum qiymətdə və ya marjinal normada geri yayılma zamanı parametr qradiyentlərinin kəsilməsi. Üçüncü bənddə rastlaşa biləcəyiniz hər hansı partlayan qradiyentləri aradan qaldırmaq üçün faydalıdır.

Dəstənin normallaşdırılması - hər bir təbəqənin giriş məlumatlarını normallaşdırmaq üçün istifadə olunur ki, bu da bizə daxili kovariativ sürüşmə problemini həll etməyə imkan verir. Əgər Dropout və Batch Norma-dan birlikdə istifadə edirsinizsə, bu məqaləyə baxın.

Stokastik gradient eniş (SGD) — impuls, adaptiv öyrənmə dərəcələri və Nesterov metodundan istifadə edən SGD-nin bir neçə növü var. Lakin onların heç birinin həm öyrənmə səmərəliliyi, həm də ümumiləşdirmə baxımından aydın üstünlüyü yoxdur (təfərrüatları burada).

Regularizasiya - ümumiləşdirilə bilən model yaratmaq üçün çox vacibdir, çünki o, model mürəkkəbliyi və ya həddindən artıq parametr dəyərlərinə görə cərimə əlavə edir. Bu, model dəyişikliyini əhəmiyyətli dərəcədə artırmadan azaltmağın bir yoludur. Daha çox ətraflı məlumat - burada.

Hər şeyi özünüz qiymətləndirmək üçün tənzimləməni söndürməli və məlumat itkisi gradientini özünüz yoxlamalısınız.

İşdən çıxmaq tıxacın qarşısını almaq üçün şəbəkənizi sadələşdirməyin başqa bir üsuludur. Təlim zamanı neyronun fəaliyyətini müəyyən bir ehtimal p (hiperparametr) ilə saxlamaq və ya əks halda onu sıfıra qoymaqla yalnız neyronun fəaliyyətini dayandırmaqla həyata keçirilir. Nəticə etibarı ilə, şəbəkə hər bir təlim partiyası üçün fərqli parametrlər alt dəstindən istifadə etməlidir ki, bu da dominant hala gələn müəyyən parametrlərdə dəyişiklikləri azaldır.

Əhəmiyyətli: Əgər siz həm buraxılış, həm də toplu normallaşdırmadan istifadə edirsinizsə, bu əməliyyatların ardıcıllığı və ya hətta onları birlikdə istifadə edərkən diqqətli olun. Bütün bunlar hələ də fəal şəkildə müzakirə olunur və əlavə olunur. Bu mövzuda iki mühüm müzakirə var Stackoverflow-da и arxiv.

İşə nəzarət

Söhbət iş axınının və təcrübələrin sənədləşdirilməsindən gedir. Heç bir şeyi sənədləşdirməsəniz, məsələn, hansı öyrənmə dərəcəsi və ya sinif çəkilərinin istifadə edildiyini unuda bilərsiniz. Nəzarət sayəsində siz əvvəlki təcrübələrə asanlıqla baxa və təkrar edə bilərsiniz. Bu, təkrar təcrübələrin sayını azaltmağa imkan verir.

Bununla birlikdə, böyük həcmli iş zamanı əl ilə sənədləşdirmə çətin bir işə çevrilə bilər. Comet.ml kimi alətlər modeliniz haqqında əsas məlumatlar (hiperparametrlər, model performans göstəriciləri və ətraf mühit haqqında məlumat) daxil olmaqla verilənlər dəstlərini, kod dəyişikliklərini, eksperimental tarixçəni və istehsal modellərini avtomatik daxil etməyə kömək etmək üçün buradan gəlir.

Neyroşəbəkə kiçik dəyişikliklərə çox həssas ola bilər və bu, model performansının aşağı düşməsinə səbəb olacaq. İşinizi izləmək və sənədləşdirmək ətraf mühitinizi və modelləşdirmənizi standartlaşdırmaq üçün atacağınız ilk addımdır.

Neyron şəbəkələri ilə işləmək: sazlama üçün yoxlama siyahısı

Ümid edirəm ki, bu yazı neyron şəbəkənizi sazlamağa başlamaq üçün başlanğıc nöqtəsi ola bilər.

Skillbox tövsiyə edir:

Mənbə: www.habr.com

Добавить комментарий