Guess who's back'propagate. - Zəncir qaydası və geriyə yayılma.

Salamlar, keçən yazıda maşın öyrənmənin təməlini təşkil edən xəta funksiyalarından və ən önəmli alqoritmlərdən olan nöqtəvi meyilli azalma haqqında danışmışdıq. Bu dəfə istəyirəm, keçən dəfə qeyd etdiklərimin süni neyron şəbəkələrdə necə istifadə edildiyi haqqında danışım. Belə ki, bu yazı nöqtəvi meyilli azalmanın neyron şəbəkədə tətbiqi olan geriyə yayılma və onun həlli üçün istifadə edəcəyimiz riyazi metod olan zəncir qaydası ilə bağlıdır.

Gəlin ilk olaraq neyron şəbəkə arxitekturasını və irəliyə ötürmə qaydasını yada salaq.

Qeyd: Bu yazıda xəta funksiyası (), və son qat () qarışmasın deyə, xəta funksiyasını ilə əvəz edəcəm.

\begin{eqnarray} z^{(l)} = w^{(l)} x^{(l-1)} + b^{(l)} \tag{1}\end{eqnarray}

\begin{eqnarray} x^{(l)} = \sigma(z^{(l)}) \tag{2}\end{eqnarray}

İndi isə xəta funksiyası və stoxastik nöqtəvi meyilli azalmanı xatırlayaq.

\begin{eqnarray} C = \frac{1}{2}{(Y - f)} ^ 2 \tag{3}\end{eqnarray}

Süni neyron şəbəkədə riyazi modelin çıxış dəyəri şəbəkənin çıxış dəyərinə bərabərdir. Ona görə də Bər. 3-dəki funksiyası - ə bərabər olacaqdır. Bu vəziyyətdə Bər. 3-ü belə yaza bilərik:

\begin{eqnarray} C = \frac{1}{2}{(Y - x^{(L)})} ^ 2 \tag{4}\end{eqnarray}

Bu xəta funksiyasına uyğun nöqtəvi meyilli azalma isə ağırlıq və sürüşmə əmsalının hər bir iterasiyada dəyişməsindən ibarətdir.

\begin{eqnarray} w^{(t+1)} = w^{(t)} - \beta_1\frac{\partial C}{\partial w^{(t)}} \tag{5}\end{eqnarray}

\begin{eqnarray} b^{(t+1)} = b^{(t)} - \beta_2\frac{\partial }{\partial b^{(t)}} \tag{6}\end{eqnarray}

Bər. 4-də gördüyümüz kimi biz xəta dəyərini hesablayarkən şəbəkənin çıxış dəyəri olan - in verilən toplusundakı cavab ilə kvadratik fərqini hesablayırıq. -dən(Bər 2.), isə öz növbəsində ağırlıq və sürüşmə dəyərlərindən(Bər 1.) asılıdır. Yəni -dən asılıdır. Ancaq burda önəmli bir sual yaranır, xətanı azaltmaq üçün Bər 5. və Bər 6. yalnızca - ə tətbiq etməliyik?

Belə olduğu halda şəbəkənin gizli qatlarına uyğun ağırlıq və sürüşmə əmsallarını yox saymış olacağıq. Ancaq Bər 1.-də də gördüyümüz kimi hər qatın dəyəri özündən əvvəlki qatın dəyərindən də asılıdır, yəni ağırlıqlarda və sürüşmədə uyğun dəyişiklik edilməsə, çıxış qatının dəyəri tam optimal olmayacaq. Problem ondadır ki, biz xəta dəyərinin yalnızca çıxış qatında hesablaya bilirik. Bəs onda biz gizli qatlardakı parametrlərində nəyə uyğun dəyişliklər edəcəyik? Başqa bir sözlə desək, nöqtəvi meyilli azalmanı gizli qatları necə tətbiq etmək olar?

Şəbəkədə hər qat özündən bir əvvəlki qatdan asılı olduğundan, çıxış qatınının dəyərini təyin oblastı giriş qatı olan mürəkkəb qeyri-xətti funksiya hesab edə bilərik. Yəni şəbəkənin əsas irəliyə ötürmə prinsipini açılmış şəkildə belə yaza bilərik.

Çıxış dəyərinin mürəkkəb funksiya olması bizə hər bir qat üçün nöqtəvi meyili hesablayarkən çox kömək olacaq. Belə ki, biz differensialları hesablayarkən mürəkkəb funksiyaya tətbiq olunan ən önəmli qaydalardan olan zəncir qaydasından istifadə edəcəyik. Bu qayda ilə, yəqin ki, oxuyucularımızın əksəriyyəti tanışdır, ancaq, gəlin, qısaca xatırlayaq.

Zəncir Qaydası

İxtiyari , funksiyasıları üçün, qaydasını qəbul edək. Məqsədimiz -in parametrinə uyğun törəməsini hesablamaqdır. Gəlin,
- i , - i isə ilə işarə edək. Bu halda zəncir qaydası aşağıdakı kimidir:

İndi isə qayıdaq əsas problemə - nöqtəvi meyillərin hesablanmasına. Bizim məqsədimiz hər bir qat üçün nöqtəvi meyillər - - i hesablamaqdır. İlk addım olaraq bu hesablamaları asanlaşdırmaq üçün əlavə bir parametrdən - -dan istifadə edəcəyik.

\begin{eqnarray} \delta^l = \frac{\partial C}{\partial z^l}, \forall l \in [1, L] \tag{9}\end{eqnarray}

Yuxarıda vurğuladığım kimi nöqtəvi meyil üçün gərəkli olan xəta funskiyasının dəyəri çıxış qatının dəyərindən asılıdır. Buna görə də, ilk olaraq bu qata uyğun meylin hesablamasından başlayırıq. Mən buradakı hesablamalar zamanı nəticələrin həll yolunu da izah edəcəyəm, əgər “riyaziyyatı boş ver, mənə cavabı ver” deyirsinizsə, hər bərabərliyin son nəticəsinə baxmağınız kifayətdir.

İlk olaraq çıxış qatında başlayırıq.

\begin{eqnarray} \delta^L &= \frac{\partial C}{\partial z^L_j}
\tag{9}\end{eqnarray}

Növbəti addım kimi bu bərabərliyə zəncir qaydasını tətbiq edirik.

\begin{eqnarray} \delta^L &= \frac{\partial C}{\partial x^L} \frac{\partial x^L}{\partial z^L} \tag{11}\end{eqnarray}

bərabərliyini xatırlasaq, yuxarıdakı bərabərliyin ikinci hissəsini kimi yaza bilərik.

\begin{eqnarray} \delta^L = \frac{\partial C}{\partial x^L} \sigma’(z^L_j) \tag{12}\end{eqnarray}

Diqqət etsək, görə bilərik ki, bərabərliyin birinci hissəsi isə Bər 4. - ün differensialıdır. Buna görə ifadəni belə yaza bilərik.

\begin{eqnarray} \delta^L = (x^L-y) \sigma’(z^L). \tag{13}\end{eqnarray}

şəbəkənin çıxış itkisi(ing. output error) adlanır. Növbəti addımlarda məqsədimiz bu itkinin gizli qatlara yayılmasını təmin etməkdir. Ümumi ideya bundan ibarətdir ki, hər bir qatdakı itkini ondan əvvəlki qatdakı itkini hesablamaq üçün istifadə edəcəyik. Bu rekursiv məntiq səbəbi ilə istifadə etdiyimiz bu alqoritm itkinin geriyə yayılması adlanır. Hər qatda hesablayacağımız bu itkinin köməkliyi ilə ümumi xətanın hər qatdakı ağırlıq və sürüşməyə nəzərən olan meyilli azalmasını tapa biləcəyik. Beləliklə, bu bizə hər qatdakı ağırlıq və sürüşməni yeniləməyə və optimal həlli tapmağa imkan verəcək.

Növbəti addımda isə ixtiyari gizli qat üçün itki - - in hesablanmasına baxaq.

\begin{eqnarray} \delta^l &= \frac{\partial C}{\partial z^l_j}
\tag{14}\end{eqnarray}

Çıxış qatından fərqli olaraq gizli qat bir neyron yox, bir neçə neyrondan ibarət ola bilər. qatındakı hər bir neyronu tam əlaqələnmiş(ing. fully connected) neyron şəbəkədə qatındakı bütün neyronlarla bağlanmışdır. Buna görə də Bər. 13-ü zəncir qaydasından istifadə edərək, hər bir üçün belə yaza bilərik.

İfadənin ikinci hissəsini hesablamaq üçün qatı üçün irəliyə ötürmə qaydasından istifadə edə bilərik.

Buna uyğun differensialı həll edə bilərik:

Hər bir şeyi birləşdirdikdə, Bər 13-ü belə yaza bilərik

Bu bərabərliyi vektor formasında belə də yaza bilərik

Burada elementvari və ya Hadamart hasilini ifadə edir.

Artıq bildiyimiz üçün onlardan istifadə edərək həll edə bilərik.

Qeyd: Arada bəzi sadə törəmə əməliyyatlarını sizin incələməyiniz üçün qəsdən buraxdım.

Yekun olaraq bütün geriyə yayılma alqoritminin elementlərini birlikdə yazaq:

  1. İrəliyə ötürmə: Hər bir üçün - i hesablamaq.
  2. Çıxış itkisi: - i hesablamaq.
  3. İtkini geriyə yayma: Hər bir üçün - i hesablamaq
  4. Nöqtəvi meyilləri hesablama: Xəta funksiyasının ağırlıq və sürüşməyə əsasən nöqtəvi meyillərini hesablamaq.
February 21, 2019, Mammad Hajili