Guess who's back'propagate. - Süni neyron şəbəkə və irəliyə ötürmə alqoritmi.

Salamlar, bu yazı Derintelligence-də yazacağımız ilk seriyanın ilk yazısıdır. Bu seriyamız dərin öyrənmənin əsas elementi olan süni neyron şəbəkələr haqqında olacaq. Bu yazı seriyasına başlamağımızın əsas səbəbi texniki resursların artdığı son illərdə sürətlə inkişaf edən maşın/dərin öyrənmə sahəsində Azərbaycanın geri qaldığını düşünməyimiz və bu sahə ilə maraqlanan tələbələr, mühəndislər və araşdırmacıların lazımlı məlumatları yalnızca türk, rus, ingilis dili kimi fərqli dillərdə olan mənbələrdən tapa bilməsidir.

Deməli, keçək mətləbə. Bugün süni neyron şəbəkənin strukturuna giriş edəcəyik. Əgər ümumi neyron anlayışına və aktivasiya funksiyaları haqda ümumi anlayışınız varsa, SNŞ-lərin sadə quruluşu sizin üçün çətin olmayacaq. (bundan sonra süni neyron şəbəkələri SNŞ’lə ifadə edəcəyik). Belə ki, mən bu yazıda verəcəyim arxitekturada aktivasiya funksiyasını siqmoid funksiya olaraq qəbul edirəm. Gəlin sadə neyronun siqmoidlə aktivasiyanı xatırlayaq.

\begin{eqnarray} z = w \cdot x + b \tag{1}\end{eqnarray}

\begin{eqnarray} \sigma(z) = \frac{1}{1+e^{-z}} \tag{2}\end{eqnarray}

Bər. (1)’də siqmoid neyronun giriş dəyərlərini, girişə uyğun ağırlıqları, isə sürüşmə dəyərini ifadə edir. Bər. (2) isə siqmoid aktivasiya funksiyasıdır və onunla neyronun çıxış dəyərini hesablayırıq.

Bizim əsas məqsədimiz bu və ya oxşar(digər aktivasiya funksiyaları istifadə edilən) dizaynda olan neyronlardan birlikdə bir şəbəkə qurmaqdır və məsələ şəbəkədirsə, hətta bəzi hallarda bir neçə qat neyronlar toplusu istifadə etmək lazım ola bilər. Belə ki, bioloji neyron şəbəkənin strukturu əsasında süni neyronların bir-birilərinə riyazi və məntiqi qanunauyğunluqla əlaqələnərək əmələ gətirdiyi riyazi model süni neyron şəbəkə adlanır.

Ən sadə SNŞ-ə eyni giriş dəyərləri olan bir neçə perseptronu misal gətirə bilərik. Bu şəbəkənin girişi eynən perseptronda olduğu kimi , çıxışı isə yalnız bir dəyər yox, bir neçə perseptronun yekun dəyərləridir - . Belə ki, daha mürəkkəb modellər elə bu sadə modelin üzərində qurulur və əksər hallarda elə bu mürəkkəb modellərdən istifadə olunur.

Şəbəkədə hər bir hesablama mərhələsi qat(ingilis dilli ədəbiyyatlarda layer, türk dilli ədəbiyyatlarda katman) adlanır. Şəbəkənin giriş dəyərləri birlikdə giriş qatı, çıxışı isə çıxış qatı adlanır. Bura qədər hələ ki, bildiyimiz terminlər və dəyərlərlə qarşılaşdıq. Ancaq bizə gizli qalan bir xarakteristikanı hələ vurğulamadım; şəbəkələrdə giriş qatı və çıxış arasında olan hesablama mərhələləri gizli qatlar (ing. hidden layers) adlanır. Bir neçə gizli qatı olan neyron şəbəkə isə çoxqatlı SNŞ adlanır.

Əlavə məlumat: SNŞ-də gizli qatın istifadə edilməsinin riyazi səbəbinə daha ətraflı girmək istəmirəm. Səbəbi bu mövzunun bizim danışdığımız konteksdən bir qədər uzaq olmasıdır. Ancaq bunu qeyd etmək istəyirəm ki, nisbətən sadə (1 və ya 2 gizli qatlı) şəbəkə belə istənilən sərhədlənmiş təyin oblastı olan silsiləvi funksiyanı təxmin edə bilər. Əgər riyazi analiz hissəsi sizə çox maraqlıdırsa, bu linkdəki yazı yaxşı giriş ola bilər.

Aşağıda gördüyünüz neyron şəbəkə(şəkil EPFL universitetin “Machine Learning” kursunun materiallarından götürülmüşdür.) hər biri K ölçüdə olan L ədəd gizli qat, D ölçülü giriş qatdan və çıxış qatdan ibarətdir. Şəkildə də gördüyünüz kimi hər hesablama mərhələsinin girişi bir əvvəlki qatın çıxışıdır(və ya şəbəkənin girişidir). Geriyə doğru döngü olmadığından və hər addım irəliyə olduğundan belə modellər ingilis dilli ədəbiyyatlarda feedforward, türk dilli ədəbiyyatlarda ileri beslemeli şəbəkə olaraq qeyd edilir. Azərbaycan dilində bununla bağlı xüsusi bir mənbə tapa bilmədiyimdən və türk dilində də tərcümə zamanı ingilis dilli terminin hərfi mənası işlədiyindən mən də onu *irəli qidalı* şəbəkə adlandırmağa qərar verdim.(qəribə səslənir, bilirəm, əgər sizin də bir təklifiniz varsa, bizə yazsanız sevinərik.). Bu yazını paylaşdıqdan sonra bu mövzu ilə bağlı bir neçə rəy aldım, “irəli qıdalı” biraz qəribə səsləndiyindən və hər bir qat öz dəyərini növbəti qata giriş olaraq ötürdüyündən tərcüməni “irəliyə ötürmə”-yə dəyişməyə qərara aldım.

Deməli, bu irəliyə ötürməli şəbəkədə gizli qat -dəki (hansı ki, ) hər bir neyron özündən bir əvvəlki qatdakı bütün neyronlarla əlaqəlidir. Gəlin, qatındakı neyronundan qatındakı neyronuna olan əlaqənin ağırlığını ilə işarə edək. Bu halda qatındakı neyronunun dəyəri olan -ni aşağıdakı bərabərliklə ifadə edə bilərik.

\begin{eqnarray} x_j^{(l)} = \phi(\sum_i w_{i, j}^{(l)} x_i^{(l-1)} + b_j^{(l)}) \tag{3}\end{eqnarray}

Yuxarıda da qeyd etdiyim kimi mən bu yazıda aktivasiya funksiyası() üçün siqmoid funksiya istifadə edəcəm. Ona görə Bər. 3-də funksiyanı siqmoidlə əvəz edək, qatındakı bütün neyronların dəyərini isə, vektor formasında bir daha yazaq.

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

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

Neyron şəbəkənin yekun çıxış dəyərini almaq üçün isə şəkildən də gördüyümüz kimi son gizli qatın dəyərindən istifadə edirik.

\begin{eqnarray} y = \sigma(z^{(L)}) \tag{6}\end{eqnarray}

Beləliklə biz irəliyə ötürmə alqoritmini bitirdik. Sadə dillə bir daha üzərindən keçsək, deyə bilərik ki, bu alqoritmlə giriş qatından başlayaraq hər dəfə bir sonrakı gizli qatı aktivləşdirib, sonda da çıxış dəyərini hesablıyırıq. İndi burada sual yaranır ki, bütün bu şəbəkənin əsas məqsədi olan təxmin etmə nə qədər dəqiqdir, yaratdığımız model təxmin etmək istədiyimiz dəyərə hansı dərəcədə yaxındır. Biz nəticədə, əlbəttə, təxminimizi minimum zərərlə etmək istəyirik. Bu nöqtədə bizə maşın öyrənmə alqoritmləri lazım olacaq. Ancaq bu mövzuya bu yazıda girmək istəmirəm, ona görə də, gəlin burda yavaş-yavaş yekunlaşdıraq. Gələn yazıda artıq maşın öyrənmə alqoritmlərinə, itirmə funksiyalarına giriş edəcəyik. Növbəti yazılarda isə, onların irəliyə ötürməli şəbəkələrə necə uyğunlaşdıra biləcəyimizdən danışacağıq. Mən gələn yazıları yazdığım müddətdə siz xətti cəbr və riyazi analiz kimi mövzulara baxsanız əla olar, çünki, maşın öyrənmə alqoritmlərində riyazi düşüncə önəmlidir. Buraya qədər səbr edib oxuduğunuz üçün təşəkkürlər!

February 14, 2019, Mammad Hajili