Neyron şəbəkələri sadədən mürəkkəbə. Kompleks haqqında sadə sözlə: neyron şəbəkələri nədir? "Şəkillərin" təsnifatı və tanınması

Yüksək texnologiyanın gülməli tərəfi odur ki, onun minlərlə il yaşı var! Məsələn, hesablama 300 ildən çox əvvəl Nyuton və Leybniz tərəfindən müstəqil olaraq icad edilmişdir. Bir vaxtlar sehr hesab edilən şey indi yaxşı başa düşülür. Və təbii ki, hamımız bilirik ki, həndəsə bir neçə min il əvvəl Evklid tərəfindən icad edilmişdir. İş ondadır ki, bir şeyin "populyar" olması çox vaxt illər tələb edir. Neyron şəbəkələri əla nümunədir. Biz hamımız neyron şəbəkələri və onların vəd etdikləri haqqında eşitmişik, lakin nədənsə onlara əsaslanan adi proqramları görmürük. Bunun səbəbi odur ki, neyroşəbəkələrin əsl mahiyyəti son dərəcə mürəkkəb riyaziyyatdır və onu əhatə edən mürəkkəb teoremləri başa düşmək və sübut etmək lazımdır və bəlkə də fiziologiya və nevrologiyanı deməyək, ehtimallar nəzəriyyəsi və kombinator analizi bilikləri zəruridir. .

Bir şəxs və ya insanlar üçün hər hansı bir texnologiya yaratmaq üçün stimul onun köməyi ilə Killer Proqramının yaradılmasıdır. İndi hamımız DOOM-un necə işlədiyini bilirik, yəni. BSP ağaclarından istifadə. Lakin Con Karmak onları o zaman icad etməmişdi, o, 1960-cı ildə yazdığı məqalədə onlar haqqında oxumuşdu. Bu məqalə BSP texnologiyasının nəzəriyyəsini təsvir edir. Con BSP ağaclarının necə istifadə oluna biləcəyini başa düşərək növbəti addımı atdı və DOOM doğuldu. Mən neyron şəbəkələrinin yaxın bir neçə ildə oxşar intibah yaşayacağından şübhələnirəm. Kompüterlər onları təqlid edəcək qədər sürətlidir, VLSI dizaynerləri onları birbaşa silikonda yaradırlar və bu mövzuda yüzlərlə nəşr olunmuş kitablar var. Neyron şəbəkələri bildiyimiz ən riyazi varlıq olduğundan, onlar heç bir fiziki təsvirə bağlı deyil və biz onları yarada bilərik. proqram təminatı və ya həqiqi silikon modelləri yaradın. Əsas odur ki, neyron şəbəkənin mahiyyəti mücərrəd bir modeldir.

Rəqəmsal hesablamanın məhdudiyyətləri bir çox cəhətdən artıq həyata keçirilib. Əlbəttə ki, biz onları təkmilləşdirəcəyik və daha da sürətli, kiçik və daha ucuz hala gətirəcəyik, lakin rəqəmsal kompüterlər ikili hesablama modelinə əsaslandığı üçün həmişə yalnız rəqəmsal məlumatları qəbul edə biləcəklər. Bununla belə, neyron şəbəkələri müxtəlif hesablama modellərinə əsaslanır. Onlar problemin həllini yolu tapmaq üçün tələb olunmayan yüksək səviyyəli paylanmış, ehtimal modelinə əsaslanır. kompüter proqramı; problemi daha "bioloji" şəkildə həll etməyin mümkün yollarını tapa bilən, müəyyən edən və ya əlaqələndirə bilən hüceyrələr şəbəkəsini modelləşdirir, problemi kiçik parçalara ayırır və nəticələri birlikdə əlavə edir. Bu məqalə neyron şəbəkələrinin texnologiyasına ümumi baxışdır, burada onlar bir neçə səhifədə mümkün qədər ətraflı şəkildə söküləcək.

bioloji analoqlar

Neyron şəbəkələri öz beynimizdən ilhamlanıb. Sözün əsl mənasında - kiminsə beyni kiminsə beynində bir dəfə dedi: "Mənə maraqlıdır necə işləməyim?", Və sonra özünün sadə modelini yaratmağa davam etdi. Qəribə, elə deyilmi? İnsan neyronunun sadələşdirilmiş modelinə əsaslanan standart neyron node modeli əlli ildən çox əvvəl icad edilmişdir. Şəkil 1.0-a nəzər salın. Gördüyünüz kimi, bir neyronun üç əsas hissəsi var, bunlar:

  • Dentrit(lər) (Dendrit) .................... Daxil olan siqnalların toplanmasına cavabdehdir
  • Soma (Soma) ................................ Siqnalların əsas işlənməsi və ümumiləşdirilməsinə cavabdehdir
  • Axon (Axon) ........................... Digər dendritlərə siqnal vermək üçün cavabdehdir.

Orta insan beynində təxminən 100 milyard və ya 10-dan 11-ci gücə qədər olan neyronlar var və onların hər birində dendritlər vasitəsilə 10.000-ə qədər əlaqə var. Siqnallar natrium, kalium və ionlara əsaslanan elektrokimyəvi proseslərdən istifadə etməklə ötürülür. Siqnallar bu ionların yaratdığı potensial fərqi yaratmaqla ötürülür, lakin burada kimya əhəmiyyətsizdir və siqnallar aksondan dendritə gedən sadə elektrik impulsları kimi düşünülə bilər. Bir dendritin xarici aksona bağlanmasına sinaps deyilir və bunlar impulsların ötürülməsinin əsas nöqtələridir.

Beləliklə, bir neyron necə işləyir? Bu sualın sadə cavabı yoxdur, lakin aşağıdakı izahat bizim məqsədlərimiz üçün kifayət edəcəkdir. Dendritlar digər neyronlardan alınan siqnalları toplayır, sonra somalar siqnalların və məlumatların cəmlənməsini və hesablanmasını yerinə yetirir və nəhayət, emalın nəticəsi əsasında aksonlara siqnalın ötürülməsini “deyə” bilirlər. Köçürmə daha çox bir sıra amillərdən asılıdır, lakin biz bu davranışı köçürmə funksiyasının xassələri təmin olunarsa, girişi qəbul edən, onu emal edən və çıxış hazırlayan ötürmə funksiyası kimi modelləşdirə bilərik. Bundan əlavə, real neyronlarda verilənlərin çıxışı qeyri-xətti olur, yəni siqnallar rəqəmsal deyil, analoqdur. Əslində, neyronlar davamlı olaraq siqnalları qəbul edir və ötürür və onların real modeli tezlikdən asılıdır və S-domenində (tezlik domenində) təhlil edilməlidir. Sadə bioloji neyronun real ötürmə funksiyası, əslində, bizim tərəfimizdən modelləşdirilmişdir.

İndi neyronların nə olduğu və əslində nə modelləşdirməyə çalışdığımız barədə bir az fikrimiz var. Gəlin bir anlığa kənara çəkilək və video oyunlarda neyron şəbəkələrdən necə istifadə edə biləcəyimizdən danışaq.

Oyunlar

Neyron şəbəkələr bütün ehtiyaclarımıza cavab kimi görünür. Əgər simvolları və sözləri kiçik oyun beyinlərinə köçürə bilsək, bunun nə qədər gözəl olacağını təsəvvür edin. Neyroşəbəkə modeli bizə neyronların kobud strukturunu verir, lakin ən azı sözün klassik mənasında yüksək səviyyəli intellekt və deduksiya funksionallığı vermir. Neyroşəbəkə texnologiyasını oyun süni intellektinə tətbiq etməyin yollarını tapmaq bir az düşünmək tələb edir, lakin bunu etdikdən sonra siz onu deterministik alqoritmlər, qeyri-səlis məntiq və genetik alqoritmlərlə birlikdə istifadə edərək çox möhkəm və təkmil AI zehniyyətini yarada bilərsiniz. oyunlarınız. Şübhəsiz ki, nəticə yüzlərlə if-else blokları və ya skript skriptləri ilə əldə edə biləcəyiniz hər şeydən daha yaxşı olacaq. Neyron şəbəkələri aşağıdakılar üçün istifadə edilə bilər:

Ətraf mühitin skan edilməsi və tanınmasıneyron şəbəkəsi görmə və ya eşitmə formasında məlumat ala bilir. Bu məlumat daha sonra cavab və ya cavab yaratmaq və ya şəbəkəni öyrətmək üçün istifadə edilə bilər. Bu cavablar real vaxt rejimində göstərilə və cavabları təkmilləşdirmək üçün yenilənə bilər.

Yaddaş- neyron şəbəkəsi oyun personajları üçün yaddaş forması kimi istifadə edilə bilər. Neyron şəbəkələri təcrübədən öyrənə və cavablar və reaksiyalar toplusuna əlavə edə bilər.

davranış nəzarəti- neyron şəbəkənin çıxışı oyun personajının hərəkətlərini idarə etmək üçün istifadə edilə bilər. Girişlər oyun mühərrikinin müxtəlif dəyişənləri ola bilər. Sonra şəbəkə oyun personajının davranışına nəzarət edə biləcək.

Cavab Xəritəçəkmə- neyron şəbəkələri mahiyyət etibarilə bir məkanın digərinə bağlanması olan "assosiasiyalarla" çox yaxşı işləyir. Assosiasiya iki cür olur: girişi özü ilə əlaqələndirən avtomatik assosiasiya və girişi başqa bir şeylə əlaqələndirən hetero-assosiasiya. Cavab bağlaması, obyektin davranışı üzərində dolayı nəzarətin başqa bir təbəqəsi yaratmaq üçün neyron şəbəkələrini arxa və ya çıxış kimi istifadə edir. Tipik olaraq, bir sıra nəzarət dəyişənlərimiz ola bilər, lakin biz şəbəkəni öyrədə biləcəyimiz bir sıra xüsusi birləşmələrə aydın cavablarımız var. Bununla belə, bir neyron şəbəkəsini çıxış kimi istifadə edərək, dəqiq müəyyən edilmişlərimizlə təxminən eyni sahədə olan digər cavabları ala bilərik.

Verilən misallar bir az qeyri-müəyyən görünə bilər, amma elədir. Fakt budur ki, neyron şəbəkələri istədiyimiz kimi istifadə edə biləcəyimiz bir vasitədir. Burada əsas odur ki, onlardan istifadə AI yaratmaq tapşırığını asanlaşdırır və oyunçu personajlarının davranışını daha ağlabatan edir.

Neyron şəbəkələri 101

Bu bölmədə neyron şəbəkələri müzakirə edərkən istifadə olunan əsas terminləri və anlayışları nəzərdən keçirəcəyik. Bu o qədər də sadə deyil, çünki neyron şəbəkələri həqiqətən bir neçə müxtəlif fənlərin məhsuludur və onların hər biri özünəməxsus lüğətə malikdir. Təəssüf ki, neyron şəbəkələri ilə əlaqəli lüğət bütün bu fənlərin lüğətlərinin kəsişməsidir, ona görə də hər şeyi nəzərdən keçirə bilmərik. Həmçinin, neyron şəbəkə nəzəriyyəsi lazımsız olan aparatlarla doludur, bu da bir çox insanın təkəri yenidən ixtira etdiyini bildirir. Bu, bir anda bir neçə neyron şəbəkə arxitekturasının yaradılmasına təsir etdi, hər birinin öz adı var. Adlandırmada batılmamaq üçün ümumi şərtləri və vəziyyətləri təsvir etməyə çalışacağam. Yaxşı, bu məqalədə fərqli adlara sahib olmaq üçün kifayət qədər fərqli olan bəzi şəbəkələrə baxacağıq. Oxuduqca, bütün anlayışları və terminləri dərhal qavraya bilmirsinizsə, çox narahat olmayın, sadəcə oxuyun, sonra məqalənin kontekstində onları bir daha əhatə etməyə çalışacağıq. Gəlin başlayaq...

Neyronun "bioloji" versiyasını gördükdən sonra, mülahizəmizin əsasını qoymaq üçün süni neyronun əsaslarına nəzər salaq. düyü. 2.0 "neyronod" və ya süni neyron üçün qrafik standartdır. Gördüyünüz kimi, onun X1 - Xn və B etiketli bir neçə girişi var. Bu girişlərin onlarla əlaqəli W1-Wn çəkisi və onlara əlavə olunmuş a b var. Bundan əlavə, Y xülasə bağlantısı və bir çıxış y var. Neyrodda y çıxışı ötürmə funksiyasına və ya neyrodun şəbəkəyə daxil edilməsinin funksiyası olan “aktivləşdirməyə” əsaslanır. Daxil olan məlumatlar qonşu qovşaqlara qoşulan X-lərdən və B-lərdən gəlir. İdeya budur ki, B "keçmiş", "yaddaş"dır. Bir neyronodun əsas işi belədir: X-dən gələn giriş onun əlaqəli çəkisi ilə vurulur və cəmlənir. Toplamanın çıxışı Ya aktivləşdirmək üçün girişdir. Aktivləşdirmə daha sonra aktivləşdirmə funksiyasına fa(x) daxil olur və son çıxış y-dir. Hamısı üçün tənlik belədir:

ur. 1.0

n
Ya \u003d B * b + e Xi * wi
i = 1 VƏ

y = fa (Ya)

Fa(x)-ın müxtəlif formaları bir dəqiqədən sonra müzakirə olunacaq.

Davam etməzdən əvvəl giriş Xi, Wi çəkiləri və onların müvafiq sahələri haqqında danışmalıyıq. Əksər hallarda girişlər dəstdə müsbət və mənfi ədədləri ehtiva edir (- ¥, + girişlər = I). Bununla belə, bir çox neyron şəbəkələri sadə iki dəyərli dəyərlərdən (doğru/yanlış kimi) istifadə edir. Belə sadə sxemdən istifadənin səbəbi, nəticədə bütün mürəkkəb verilənlərin təmiz ikili təsvirə çevrilməsidir. Bundan əlavə, bir çox hallarda iki dəyərli təmsillər üçün uyğun olan səsin tanınması kimi kompüter problemlərini həll etməliyik. Bununla belə, o, daşa qoyulmayıb. Hər iki halda, ikivalent sistemdə istifadə olunan dəyərlər ikili sistemdə ilk növbədə 0 və 1, bipolyar sistemdə isə -1 və 1-dir. Hər iki sistem oxşardır, istisna olmaqla, bipolyar təmsil ikili sistemdən riyazi olaraq daha rahatdır. Hər bir girişdə Wi çəkiləri adətən (-Ґ , +Ґ) arasında olur və müsbət və mənfi dəyərlər üçün müvafiq olaraq "həyəcan verici" və ya "qanunverici" adlanır. Həmişə 1.0 ilə çağırılan və b ilə vurulan əlavə B girişi, burada b onun çəkisidir.

Təhlillərimizi davam etdirərək, neyrod üçün Ya aktivasiyasını tapdıqdan sonra aktivləşdirmə funksiyasına tətbiq edilir və nəticəni hesablamaq olar. Fərqli istifadə üçün bir sıra aktivləşdirmə funksiyaları var. Fa(x) əsas aktivləşdirmə funksiyaları:

Hər biri üçün tənliklər olduqca sadədir, lakin hər biri öz modelinə uyğundur və ya öz parametrlər dəsti var.

Giriş siqnalının verilmiş kritikliyinə nail olmaq üçün bir sıra neyron şəbəkələrdə və modellərdə addım-addım (addım) funksiyasından istifadə olunur. q amilinin məqsədi neyronun cavab verməli olduğu giriş siqnalının kritik səviyyəsini modelləşdirməkdir.

Xətti (xətti) aktivləşdirmə funksiyası, neyrodun çıxışının giriş aktivasiyasını mümkün qədər yaxından izləməsini istədiyimiz zaman istifadə olunur. Bənzər bir xüsusiyyət sabit sürətlə hərəkət kimi xətti sistemlər yaratmaq üçün istifadə edilə bilər. Nəhayət, eksponensial funksiya qabaqcıl neyron şəbəkələrinin açarıdır, qeyri-xətti cavablar verə bilən və qeyri-xətti prosesləri modelləşdirə bilən neyron şəbəkələri yaratmağın yeganə yoludur. Eksponensial aktivasiya funksiyası neyron şəbəkələrinin inkişafında çəngəldir, çünki pilləli və xətti funksiyalardan istifadə etməklə biz heç vaxt qeyri-xətti cavab verən neyron şəbəkəsi yarada bilmərik. Bununla belə, bu xüsusi funksiyadan istifadə etməyimiz tələb olunmur. İstənilən şəbəkə xassələrindən asılı olaraq hiperbolik, loqarifmik və transsendental funksiyalardan da istifadə etmək olar. Nəhayət, istəsək bütün bu kimi funksiyalardan istifadə edə bilərik.

Təxmin etdiyiniz kimi, bir neyron çox şey etməyəcək, buna görə də Şəkil 1-də göstərildiyi kimi bir qrup neyron və bir neyrod təbəqəsi yaratmalısınız. 3.0. Şəkil kiçik bir qatlı neyron şəbəkəsini göstərir. Şəkildəki neyron şəbəkəsi. 3.0 bir sıra giriş və çıxış qovşaqlarını ehtiva edir. Konvensiyaya görə, bu, bir qatlı neyron şəbəkəsidir, çünki Şəbəkədəki yeganə təbəqə olmadığı təqdirdə giriş təbəqəsi nəzərə alınmır. Bu zaman giriş təbəqəsi həm də çıxış təbəqəsidir, ona görə də şəbəkə tək qatlıdır. düyü. 4.0 iki qatlı neyron şəbəkəsini göstərir. Qeyd edək ki, giriş təbəqəsi hələ də nəzərə alınmır və daxili təbəqə "gizli" adlanır. Çıxış qatına cavab qatının çıxışı deyilir. Nəzəri olaraq, neyron şəbəkəsində təbəqələrin sayına heç bir məhdudiyyət yoxdur, lakin müxtəlif təbəqələrin əlaqələrini və məqbul təlim metodlarını təsvir etmək çox çətin ola bilər. Ən yaxşı yolçoxqatlı neyron şəbəkəsinin yaradılması - hər bir şəbəkəni bir və ya iki qat edin və sonra onları komponentlər və ya funksional bloklar kimi birləşdirin.

Yaxşı, indi "müvəqqəti" və ya zaman mövzusundan danışaq. Hamımız bilirik ki, beynimiz rəqəmsal kompüterlə müqayisədə olduqca yavaşdır. Əslində, beynimiz millisaniyə miqyasında bir dövrə istehsal edir, rəqəmsal kompüter üçün vaxt isə nanosaniyədə və demək olar ki, artıq subnanosaniyələrlə ölçülür. Bu o deməkdir ki, neyrondan neyrona siqnal yolu müəyyən vaxt aparır. Bu, həm də süni neyronlarda modelləşdirilmişdir ki, biz hesablamaları lay-lay edirik və nəticələri ardıcıl olaraq çıxarırıq. Bu, beynimiz kimi bioloji sistemlərdə mövcud olan vaxt gecikməsini modelləşdirməyə kömək edir.

İlkin müzakirəni demək olar ki, bitirdik, gəlin bəzi yüksək səviyyəli konsepsiyalar haqqında danışaq və sonra bir neçə terminlə bitirək. Verməli olduğunuz sual "neyron şəbəkələrin mənası nədir?" Bu yaxşı sualdır və ona qəti cavab vermək çətindir. Genişləndirilmiş sual - "Neyron şəbəkələri nə etməyə çalışmaq istəyirsiniz?" Əsasən, onlar bir məkanı digərinə münasibətdə əks etdirməyə kömək edən bir texnika nümayiş etdirirlər. Əslində, neyronlar bir növ yaddaşdır. Hər hansı bir yaddaşda olduğu kimi, biz də onları təsvir etmək üçün bəzi uyğun terminlər tətbiq edə bilərik. neyronlarda həm STM (qısamüddətli yaddaş), həm də LTM (uzunmüddətli yaddaş) var. STM neyron şəbəkəsinin yenicə öyrəndiyi bir şeyi yadda saxlamaq qabiliyyətidir, LTM isə neyron şəbəkənin bir müddət əvvəl öyrəndiyi bir şeyi indicə aldığı məlumat əsasında yadda saxlamaq qabiliyyətidir. Bu bizi konsepsiyaya gətirir plastiklik və ya başqa sözlə, neyron şəbəkənin məlumatla və ya öyrənərkən necə davranacağı konsepsiyasına. Neyroşəbəkə daha çox məlumat öyrənə və əvvəllər öyrənilmiş məlumatları düzgün şəkildə "yadda saxlamağa" davam edə bilərmi? Əgər belədirsə, onda neyron şəbəkələri qeyri-sabit olur, çünki onlar sonda o qədər çox məlumat ehtiva edəcəklər ki, məlumatlar sonsuz şəkildə kəsişəcək və bir-birini üst-üstə düşəcək. Bu, bizi başqa bir tələbə - sabitliyə gətirir. Nəticə odur ki, biz neyron şəbəkənin yaxşı LTM, yaxşı STM, çevik və sabit olmasını istəyirik. Təbii ki, bəzi neyron şəbəkələri yaddaşın analoqu deyil, onlar əsasən funksional xəritələşdirməyə yönəlib və bu anlayışlar onlara aid deyil, amma siz əsas ideyanı əldə edirsiniz. Yaddaşla əlaqəli yuxarıda göstərilən anlayışlar haqqında bildiyimizə görə, indi bu xüsusiyyətləri qiymətləndirməyə və anlamağa kömək edəcək bir neçə riyazi faktorun nəzərdən keçirilməsini tamamlayaq.

Neyroşəbəkələrin əsas tətbiqlərindən biri natamam və ya qeyri-səlis giriş məlumatlarını emal edə və nəticəni qaytara bilən yaddaş mexanizminin yaradılmasıdır. Nəticə girişin özü (assosiasiya) və ya girişdən tamamilə fərqli cavab (hetero-assosiasiya) ola bilər. M-ölçülü və qeyri-xətti məlumat yükləməsində N ölçülü fəzanın üst-üstə düşməsi də mümkündür. Bu o deməkdir ki, neyron şəbəkəsi bir növ hiperməkan yaddaş vahididir, çünki o, giriş N-elementini çıxış M-elementinə birləşdirə bilər, burada M N-ə bərabər ola bilər və ya olmaya bilər.

Neyroşəbəkələrin mahiyyətcə etdiyi şey, N-ölçülü məkanı giriş məlumatlarını unikal şəkildə çıxış məlumatlarına uyğunlaşdıran və ya daxilolma məlumatlarını təsnif edən bölgələrə bölməkdir. müxtəlif siniflər. Sonra, daxil olan verilənlər toplusunun (gəlin onu S deyək) dəyərləri (vektorları) artdıqca, məntiqi olaraq belə nəticə çıxır ki, neyron şəbəkələr üçün məlumatı ayırmaq daha çətin olacaq. Və neyron şəbəkələri məlumatla doldurulduğundan, "yadda saxlanmalı" olan giriş dəyərləri üst-üstə düşəcək, çünki giriş məkanı sonsuz sayda ölçülərdə bütün ayrılmış məlumatları ehtiva edə bilməz. Bu üst-üstə düşmə o deməkdir ki, bəzi girişlər ola biləcək qədər güclü deyil. Bir sıra hallarda problem olmasa da, yaddaş neyron şəbəkələrinin modelləşdirilməsi zamanı narahatlıq doğurur; konsepti təsvir etmək üçün tutaq ki, biz giriş vektorlarının N-dəstini bəzi çıxışlar dəstinə bağlamağa çalışırıq. Çıxış dəsti S çıxış dəsti kimi düzgün işləmək üçün problem yaratmır.

Əgər giriş çoxluğu S ciddi şəkildə binardırsa, onda biz 1101010 ... 10110 formasının ardıcıllığını nəzərdən keçirək. Tutaq ki, bizim giriş məlumatlarımızın hər birində cəmi 3 bit var, ona görə də bütün giriş fəzası vektorlardan ibarətdir:

v0 = (0,0,0), v1 = (0,0,1), v2 = (0,1,0), v3 = (0,1,1), v4 = (1,0,0), v5 = (1,0,1), v6 = (1,1,0),

Daha dəqiqlik üçün bu vektor dəstinin əsası:

v = (1,0,0) * b2 + (0,1,0) * b1 + (0,0,1) * b0, burada bi 0 və ya 1 dəyərlərini qəbul edə bilər.

Məsələn, B2=1, B1=0 və B0=1 olduğunu fərz etsək, aşağıdakı vektoru alırıq:

v = (1.0.0) * 1 + (0.1.0) * 0 + (0.0.1) * 1 = (1.0.0) + (0.0.0) + (0 ,0,1) = (1,0) ,1) mümkün giriş massivimizin V-ləridir

Baza kosmosda vektorlar massivini təsvir edən xüsusi cəmlənmiş vektordur. Beləliklə, V fəzamızda olan bütün vektorları təsvir edir. Ümumiyyətlə, uzun izahatlara getmədən, giriş massivindəki vektorlar nə qədər ortoqonal olsalar, neyron şəbəkədə bir o qədər yaxşı yayılacaq və bir o qədər yaxşı adlandırıla bilər. Ortoqonallıq dedikdə vektorların müstəqilliyi başa düşülür, başqa sözlə desək, iki vektor ortoqonaldırsa, onların nöqtə hasili sıfırdır, onların bir-birinə proyeksiyası sıfırdır və onları bir-birinə nisbətən təsvir etmək olmaz. v massivində çoxlu ortoqonal vektorlar var, lakin onlar kiçik qruplarda olur, məsələn, V0 bütün vektorlara ortoqonaldır, ona görə də biz həmişə onu daxil edə bilərik. Lakin V1-i S massivinə daxil etsək, onda yalnız V2 və V4 vektorları onunla ortoqonallığı qoruyacaq:

v0 = (0,0,0), v1 = (0,0,1), v2= (0,1,0), v4 = (1,0,0)

Niyə? Çünki 0...3-dən bütün i,j üçün Vi - Vj sıfıra bərabərdir. Başqa sözlə, bütün vektor cütlərinin nöqtə hasili 0-dır, ona görə də onların hamısı ortoqonal olmalıdır. Beləliklə, bu massiv neyron şəbəkə giriş massivi kimi çox yaxşıdır. Bununla belə, massiv:

v6 = (1,1,0), v7 = (1,1,1)

potensial olaraq pis, çünki v6-v7 girişləri sıfır deyil, binar sistemdə 1-dir. Növbəti sual bu ortoqonallığı ölçə bilərikmi? Cavab bəli. İkili vektor sistemində Hamminq məsafəsi adlanan ölçü var. İkili vektorlar arasında N ölçülü məsafəni ölçmək üçün istifadə olunur. Bu, sadəcə olaraq iki vektor arasında fərqli olan bitlərin sayıdır. Məsələn, vektorlar:

v0 = (0,0,0), v1 = (0,0,1)

aralarında 1 Hamming məsafəsi var və

v2 = (0,1,0), v4 = (1,0,0)

2 hamming məsafəsi var.

İkili vektor sistemlərində ortoqonallıq ölçüsü kimi Hamming məsafəsindən istifadə edə bilərik. Və bu, bizim giriş məlumat dəstlərimizin kəsişmələrinin olub olmadığını müəyyən etməyə kömək edə bilər. Ümumi giriş vektorları ilə ortoqonallığı təyin etmək daha çətindir, lakin prinsip eynidir. Anlayışlar və terminologiya kifayətdir, gəlin irəliyə atlayaq və bir şey edən faktiki neyron şəbəkələrinə baxaq və bəlkə bu məqalənin sonunda oyununuzun süni intellektini təkmilləşdirmək üçün onlardan istifadə edə bilərsiniz. Məntiqi funksiyaları yerinə yetirmək, girişləri təsnif etmək və onları çıxışlarla əlaqələndirmək üçün istifadə olunan neyron şəbəkələrinə baxacağıq.

Təmiz məntiq

İlk süni neyron şəbəkələri 1943-cü ildə yaradılmışdır. McCulloch və Pitts. Onlar bir sıra neyronodlardan ibarət idi və əsasən AND, OR, XOR kimi sadə məntiqi funksiyaları və onların birləşmələrini hesablamaq üçün istifadə olunurdu. düyü. 5.0. iki girişlə McCulloch və Pitts'in əsas neyronodlarını təmsil edir. Əgər elektrik mühəndisisinizsə, onların tranzistorlara yaxın oxşarlığını dərhal görəcəksiniz. Hər halda, McCulloch-Pitts neyronodlarının heç bir əlaqəsi yoxdur və sadə aktivasiya funksiyası Fmp(x) belədir:

fmp (x) = 1, əgər xq
0, ifx< q

MP (McCulloch-Pitts) neyronodu Xi girişlərinin və Wi çəkilərinin hasilini cəmləməklə işləyir və Fmp(x) funksiyası üçün nəticə olaraq Ya qəbul edir. McCulloch-Pitts'in erkən tədqiqatları neyrod modelləri ilə mürəkkəb məntiq sxemlərinin qurulmasına yönəldi. Bundan əlavə, neyronodların modelləşdirilməsinin qaydalarından biri də odur ki, neyrondan neyrona siqnal ötürülməsi bir zaman addımı alır. Bu, təbii neyronların modelinə daha yaxın olmağa kömək edir. Əsas məntiq funksionallığını həyata keçirən MP neyron şəbəkələrinin bəzi nümunələrinə nəzər salaq. Boolean funksiyası AND aşağıdakı həqiqət cədvəlinə malikdir:

Bunu w1=1, w2=2 və q=2 çəkiləri olan iki giriş MP neyron şəbəkəsi ilə modelləşdirə bilərik. Bu neyron şəbəkə Şəkildə göstərilmişdir. 6.0a. Gördüyünüz kimi, bütün giriş birləşmələri düzgün işləyir. Məsələn, X1=0, Y1=1 girişlərini təyin etməyə çalışsaq, aktivləşdirmə belə olacaq:

X1*w1 + X2*w2 = (1)*(1) + (0)*(1) = 1.0

Fmp(x) aktivləşdirmə funksiyası üçün 1.0 tətbiq etsək, nəticə 0-dır ki, bu da düzgün cavabdır. Başqa bir misal olaraq, X1=1, X2=1 girişlərini təyin etməyə çalışsaq, aktivləşdirmə belə olacaq:

X1*w1 + X2*w2 = (1)*(1) + (1)*(1) = 2.0

Fmp(x) aktivləşdirmə funksiyasına 2.0 daxil etsək, nəticə 1.0 olur, bu düzgündür. Digər hallarda, eyni şəkildə işləyəcək. OR funksiyası oxşardır, lakin q-nin həssaslığı AND-da olduğu kimi 2.0 əvəzinə 1.0-a dəyişdirilir. Nəticələri görmək üçün məlumatları özünüz həqiqət cədvəlləri vasitəsilə işə salmağa cəhd edə bilərsiniz.

XOR şəbəkəsi bir az fərqlidir, çünki əslində o vaxtdan bəri 2 təbəqə var nəticələr əvvəlcədən müalicə daha sonra çıxış neyronunda işlənir. Bu yaxşı nümunə müəyyən problemləri həll etmək üçün neyron şəbəkəsinin niyə birdən çox təbəqəyə ehtiyacı var? XOR şəbəkənin performansını yoxlamaq üçün istifadə olunan ümumi neyron şəbəkə problemidir. Hər halda, XOR xətti olaraq ayrı bir təbəqəyə ayrılmazdır, o, nəticələri ümumiləşdirilən daha kiçik mərhələlərə bölünməlidir. XOR üçün həqiqət cədvəli belə görünür:

XOR yalnız girişlər fərqli olduqda doğrudur, çünki bu problemdir hər iki giriş eyni çıxışa istinad edir. XOR Şəkildə göstərildiyi kimi xətti olaraq ayrılmazdır. 7.0. Gördüyünüz kimi, düzgün cavabı birbaşa ayırmaq mümkün deyil. Məsələ burasındadır ki, düzgün cavabı iki sətirlə ayıra bilərik və ikinci təbəqə məhz bunu edir. Birinci təbəqə verilənləri əvvəlcədən emal edir və ya problemin bir hissəsini həll edir, qalan təbəqə isə hesablamanı tamamlayır. Şəkilə istinad edərək. 6.0 çəkilərin Wq=1, W2=-1, W3=1, W4=-1, W5=1, W6=1 olduğunu görürük. Şəbəkə aşağıdakı kimi işləyir: qat X1 və X2 əks olduqda hesablanır, (0,1) və ya (1,0) hallarda nəticələr ikinci təbəqə üçün qidadır, onları ümumiləşdirir və doğrudursa ötürür. Əslində, biz bir boolean funksiya yaratdıq:

z = ((X1 VƏ X2 DEYİL) VEYA (X1 VƏ X2 DEYİL))

Əsas McCulloch-Pitts neyronodları ilə təcrübə etmək istəyirsinizsə, aşağıdakı siyahı tam iki girişli neyronod stimulatorudur.

// MCULLOCCH PITTS SİMULYATÖRÜ
// DAXİLDİR
/////////////////////////////////////////////////////

#daxildir
#daxildir
#daxildir
#daxildir
#daxildir
#daxildir
#daxildir
#daxildir
#daxildir
#daxildir

// ƏSAS
/////////////////////////////////////////////////////

əsas boşluq (boşluq)
{
üzmə həddi, // bu, cəmləmə həddinə çatmaq üçün istifadə olunan teta terminidir
w1, w2, // bunlar çəkiləri saxlayır
x1, x2, // neyroda girişlər
y_in, // cəmlənmiş giriş aktivasiyası
y_out; // neyrodun son çıxışı

printf ( "nMcCulloch-Pitts Single Neurode Simulator.n") ;
printf("nLütfən, həddi daxil edin?");
scanf("%f",& eşik həddi);

printf ( "nW1 çəkisi üçün dəyər daxil edin?") ;
scanf("%f",&w1);

printf ( "nW2 çəkisi üçün dəyər daxil edin?") ;
scanf("%f",& w2);

printf("nnBeginning Simulation:" );

// əsas hadisə dövrəsinə daxil olun

isə (1)
{
printf ( "nnSimulyasiya Parms: eşik=%f, W=(%f,%f) n", eşik, w1, w2);

// istifadəçidən giriş sorğusu
printf("X1 üçün nEnter daxil edin?");
scanf("%f" ,& x1);

printf("X2 üçün nEnter daxil edin?");
scanf("%f",& x2);

// hesablama aktivləşdirilməsi
y_in = x1* w1 + x2* w2;

// aktivləşdirmə funksiyasına nəticə daxil edin (sadə ikili addım)
əgər (y_in >= hədd)
y_out = (float) 1.0;
başqa
y_out = (float) 0.0;

// nəticəni çap edin
printf("nNeurode Çıxışı %fn-dir" , y_out);

// yenidən cəhd elə
printf ( "Y-yə davam etmək istəyirsən, yoxsa N?") ;
char ans[ 8 ] ;
scanf("%s", ans);

əgər (toupper(ans[ 0 ] ) != "Y" )
fasilə ;
) // zamanı bitir

printf("nnSimulation Complete.n");
) // əsas son

Bununla MP neyron şəbəkəsinin əsas tikinti blokları haqqında müzakirəmizi yekunlaşdırır, giriş vektorlarını təsnif etmək üçün istifadə olunanlar kimi daha mürəkkəb neyron şəbəkələrə keçək.

"Şəkillərin" təsnifatı və tanınması

Nəhayət, bəzi istifadəni tapmış real neyron şəbəkələrinə baxmağa hazırıq! Hebb və Hopfield neyron şəbəkələrinin sonrakı müzakirəsinə keçmək üçün biz neyron şəbəkələrinin ümumi strukturunu təhlil edəcəyik ki, bu da xətti ayrılma, bipolyar təsvirlər və neyron şəbəkələri və yaddaşlar arasında analoqlar kimi bir sıra anlayışları təsvir edəcək. Əvvəlcə Şəklə nəzər salaq. İstifadə edəcəyimiz əsas neyron şəbəkə modelini təmsil edən 8.0. Gördüyünüz kimi, bu, ofset B və bir çıxış daxil olmaqla üç girişi olan bir node şəbəkəsidir. McCulloch-Pitts neyronodlarında asanlıqla həyata keçirdiyimiz məntiqi AND əməliyyatını həyata keçirmək üçün bu şəbəkədən necə istifadə edəcəyimizi görmək istəyirik.

Gəlin bipolyar təsvirlərdən istifadə edərək başlayaq ki, bütün 0-lar -1-lərlə əvəzlənsin. Bipolyar giriş və çıxışlardan istifadə edərkən məntiq AND üçün həqiqət cədvəli aşağıda göstərilmişdir:

İstifadə edəcəyimiz fc(x) aktivləşdirmə funksiyası budur:


fc (x) = 1, əgər x i q olarsa
- 1, əgər x< q

Qeyd edək ki, funksiya bipolyar çıxışa doğru bir addımdır. Davam etməzdən əvvəl, icazə verin beyninizə toxum əkim: qarışdırmaq və hiss etmək eyni şeyi edir, onlar bizə neyronlarımızda onsuz əldə edilə bilməyəcək cavablar yaratmağa imkan verən başqa bir sərbəstlik dərəcəsi verir. Tezliklə görəcəksiniz.

Şəkildəki tək neyrod. 8.0 bizim üçün bir təsnifat etməyə çalışır. Girişimizin bu sinifdən olub olmadığını bizə bildirəcək. Məsələn, ağacın şəkli olsun, olmasın. Yoxsa bizim vəziyyətimizdə (sadə məntiqi AND) +1 və ya -1 sinifdir? Bu, əksər neyron şəbəkələrinin əsasını təşkil edir, buna görə də xətti ayrıla bilənlik haqqında danışdım. Giriş və çıxışlarımızı əlaqələndirəcək məkanın xətti ayrılmasına çatmalıyıq ki, onları ayıran məkanın möhkəm bir şəkildə ayrılması olsun. Beləliklə, bizim üçün bunu edəcək düzgün çəki və qərəzli dəyərləri tapmalıyıq. Bəs biz bunu necə edək? Sadəcə sınaq və səhvdir, yoxsa hansısa metodologiya var? Cavab budur ki, neyron şəbəkəsini öyrətmək üçün bir sıra üsullar mövcuddur. Bu üsullar müxtəlif riyazi nümunələr üzərində işləyir və sübut edilə bilər, lakin bu an üçün biz sadəcə olaraq onların əldə edilməsi prosesini nəzərə almadan işləyən dəyərləri götürəcəyik. Bu məşqlər bizi alqoritmləri və burada göstərilənlərdən daha mürəkkəb şəbəkələri öyrənməyə aparacaq.

Yaxşı, biz Fc(x) aktivləşdirmə funksiyası ilə müxtəlif girişlər üçün düzgün nəticə verəcək Wi və əyilmə B çəkilərini tapmağa çalışırıq. Nöronodumuzun ümumi aktivasiyasını yazaq və bizə kömək edə biləcək çəki və giriş arasında hər hansı əlaqə yarada biləcəyimizi görək. Ağırlıqları W1 və W2 olan X1 və X2 girişlərini B=1 və əyilmə b ilə birlikdə nəzərə alaraq, aşağıdakı düsturu alırıq:

X1*w1 + X2*w2 + B*b=q

B həmişə 1.0 olduğundan, düstur sadələşir:

X1*w1 + X2*w2 + b=q

X2 = -X1*w1/w2 + (q -b)/w2 (X2 baxımından həll)

Bu nədir? Bu bir xəttdir! Və əgər sol tərəf q-dan böyük və ya ona bərabərdirsə, yəni (X1*W1+X2*W2+b), onda neyrod 1-ə cavab verəcək, əks halda -1 nəticəsini verəcəkdir. Bunlar. xətt həllin sərhədidir. düyü. 9.0 bunu göstərir. Diaqramda xəttin yamacının -w1/w2 və X2 kəsişməsinin (q-b)/w2 olduğunu görə bilərsiniz. İndi aydın oldu niyə q-dan xilas ola bilərik? O, sabitin bir hissəsidir və istənilən itkiyə nail olmaq üçün hər zaman b miqyasını dəyişə bilərik, ona görə də Q=0 olduğunu fərz edəcəyik və nəticədə tənliyi alırıq:

X2 \u003d -X1 * w1 / w2 - b / w

Biz W1 və W2 çəkilərini və b meylini elə tapmaq istəyirik ki, onlar bizim çıxışlarımızı ayırsınlar və ya üst-üstə düşmədən onları xüsusi arakəsmələrə təsnif etsinlər. Bu, xətti ayrılmanın açarıdır. düyü. 9.0 kifayət edəcək qərar sərhədlərinin sayını göstərir, buna görə onlardan hər hansı birini götürə bilərsiniz. Ən sadələrini götürək:

W1=W2=1

Bu dəyərlərlə qərar sərhədi olur:

X2 = -X1*w1/w2 - b/w2 -> X2 = -1*X1 + 1

Yamac -1-dir və X2 = 1 kəsiyini kəsir. Məntiqi AND üçün giriş vektorlarını bu tənliyə qoşsaq və Fc(x) aktivləşdirməsindən istifadə etsək, düzgün çıxışı alırıq. Məsələn, X2+X1-1 > 0 olarsa, neyrodun cavabı -1 olacaqdır. Gəlin AND daxiletməmizlə cəhd edək və nə baş verdiyini görək:

Gördüyünüz kimi, uyğun çəki və qərəzli neyron şəbəkələri problemi mükəmməl həll edir. Bundan əlavə, bütün çəkilər ailəsi var ki, onlar da bunu edəcək (qərarın sərhədlərini özünə perpendikulyar istiqamətə itələmək). Bununla belə, vacib bir məqam var. Ofset və ya həssaslıq olmadan, yalnız birbaşa keçidlər mümkün olacaq intercept X2 0 olmalıdır. Bu, çox vacibdir və həssaslıq və ya qərəzdən istifadə etməyin əsas səbəbi budur, ona görə də bu nümunə bu faktı açıq şəkildə göstərdiyi üçün vacib idi. Beləliklə, daha çox - düzgün çəki dəyərlərini necə tapmaq olar? Bəli, indi həndəsi analogiyalarımız var və bu, alqoritmin tapılmasının başlanğıcıdır.

Hebb məşqi

Biz indi ilk öyrənmə alqoritmini və onun neyron şəbəkədə tətbiqini görməyə hazırıq. Ən sadə öyrənmə alqoritmlərindən biri Donald Hebb tərəfindən icad edilmişdir və çəki dəyişmək üçün giriş vektorlarından istifadəyə əsaslanır ki, çəki giriş və çıxışların mümkün olan ən yaxşı xətti ayrılmasını yaradır. Təəssüf ki, alqoritm yaxşı işləyir. Həqiqətən, ortoqonal girişlər üçün bu yaxşı işləyir, lakin ortoqonal olmayan girişlər üçün alqoritm dağılır. Alqoritm bütün girişlər üçün düzgün çəkilərlə nəticələnməsə də, əksər öyrənmə alqoritmlərinin mərkəzində dayanır, ona görə də biz onunla başlayacağıq.

Alqoritmi görməzdən əvvəl unutmayın ki, o, yalnız bir neyrod, tək qatlı neyron şəbəkəsi üçündür. Siz, əlbəttə ki, bir təbəqədə bir çox neyrodu qoya bilərsiniz, lakin onların hamısı paralel işləyəcək və paralel olaraq öyrədilə bilər. Tək çəki vektorundan istifadə etmək əvəzinə, çox neyronodlar çəki matrisindən istifadə edirlər. Hər halda, alqoritm sadədir, belə görünür:

  • Giriş bipolyar formadadır I=(-1,1,0,... -1,1) və k elementdən ibarətdir.
  • N giriş vektoru var və biz onların çoxluğuna J elementi kimi istinad edəcəyik, məs. Ij.
  • Çıxışlar Yj adlanacaq və hər biri bir Ij girişi üçün K çıxışı var.
  • W1-Wk çəkiləri bir vektorda yerləşir W=(w1, w2,...wk)

Addım 1. Bütün çəkilərimizi 0-a endirin və onları N girişdən ibarət W vektorunda saxlamağa icazə verin. Həmçinin b ofsetini 0-a işə salın.

Addım 2. j=1-dən n-ə qədər edin:

b = b + yj (burada y istənilən nəticədir

w = w + Ij * yj (Bu vektor əməliyyatı olduğunu unutmayın)

Alqoritm bir növ “akkumulyatordan” başqa bir şey deyil. Qərar sərhədlərinin dəyişdirilməsi giriş və çıxışdakı dəyişikliklərə əsaslanır. Yeganə problem odur ki, bəzi hallarda sərhəd kifayət qədər sürətlə hərəkət etməyəcək (və ya ümumiyyətlə) və “öyrənmə” baş tutmayacaq.

Beləliklə, Hebbin öyrənməsindən necə istifadə edirik? Bu sualın cavabı əvvəlki neyroşəbəkə ilə eynidir, istisna olmaqla, indi bizdə şəbəkənin öyrədilməsi üçün alqoritmik metod var və bu şəbəkə Hebbian Net adlanır. Nümunə olaraq, etibarlı boolean funksiyamızı götürək və alqoritmin bunun üçün uyğun çəki və qərəzli dəyərləri tapa bildiyini görək. Aşağıdakı cəm alqoritmin icrasına bərabərdir:

w = + + + = [(-1, -1)*(-1)] + [(-1, 1)*(-1)] + [(1, -1)*(-1)] + [ (1, 1)*(1)] = (2,2)

b = y1 + y2 + y3 + y4 = (-1) + (-1) + (-1) + (1) = -2

Beləliklə, W1=2, W2=2 və b=2. Bunlar əvvəlki bölmədə əldə etdiyimiz W1=1, W2=2, B=-1 dəyərlərinin sadəcə miqyaslı versiyalarıdır. Bu sadə alqoritmlə biz neyron şəbəkəsini (tək bir neyroddan) bir sıra girişlərə cavab vermək və ya onları doğru/yanlış və ya 1/-1 kimi təsnif etmək üçün öyrədə bilərik. İndi, əgər bizdə belə neyronodların bir sırası olsaydı, biz yalnız girişləri bəli/xeyr kimi təyin etməyən, həm də girişləri müəyyən nümunələrlə əlaqələndirən bir şəbəkə yarada bilərdik. Bu, neyron şəbəkələrinin növbəti strukturu olan Hopfield şəbəkələri üçün əsaslardan biridir.

Hopfield alqoritmləri

Con Hopfild neyron şəbəkələri ilə oynamaqdan həzz alan bir fizikdir (bu bizim üçün yaxşıdır). O, Hopfield Şəbəkəsi adlı sadə (müqayisəli şəkildə), lakin effektiv neyron şəbəkə modeli ilə çıxış etdi. Əlaqələndirmək üçün istifadə olunur, əgər x vektorunu daxil etsəniz, nəticə olaraq x alacaqsınız (ümid edirəm). Hopfield şəbəkəsi Şəkil 10.0-da göstərilmişdir. Bu, Xi girişlərinin sayına bərabər olan müəyyən sayda neyronodları olan bir qatlı şəbəkədir. Şəbəkə tam bağlıdır, bu o deməkdir ki, hər bir neyrod digər neyroda bağlıdır və girişlər də çıxışlardır. Bu sizə qəribə görünə bilər, çünki görünür Əlaqə. Əlaqə onlardan biridir Əsas Xüsusiyyətlər Hopfield şəbəkəsidir və düzgün nəticə əldə etmək üçün əsas təməllərdən biridir.

Hopfield şəbəkəsi təkrarlanan avtomatik assosiativ yaddaşdır. Düzgün nəticə əldə etmək üçün birdən bir neçə dövrə qədər vaxt tələb oluna bilər. İcazə verin aydınlaşdırım: Hopfield şəbəkəsi girişi qəbul edir və sonra onu geri verir və nəticədə əldə edilən çıxış istənilən giriş ola bilər və ya olmaya da bilər. Bu geribildirim döngəsi giriş vektoru qaytarılmamışdan əvvəl bir neçə dəfə keçə bilər. Beləliklə, Hopfield şəbəkəsinin funksional ardıcıllığı: əvvəlcə əlaqələndirmək istədiyimiz girişlərimizin çəkisini müəyyənləşdirin, sonra giriş vektorunu verin və aktivləşdirmə funksiyasının nə verdiyini görün. Nəticə ilkin girişimizlə eynidirsə, onda hər şey düzəldi, yoxsa, nəticədə vektoru götürüb şəbəkəyə qidalandırırıq. İndi Hopfield şəbəkələrində istifadə olunan çəki matrisinə və öyrənmə alqoritminə baxaq.

Hopfield şəbəkəsi üçün öyrənmə alqoritmi Hebb qaydasına əsaslanır və sadəcə olaraq nəticəni ümumiləşdirir. Bununla belə, Hopfield şəbəkələrində çoxlu giriş neyronları olduğundan, çəki artıq çəkilər massivi deyil, kompakt şəkildə bir matrisdə yer alan massivlər massividir. Beləliklə, Hopfield şəbəkəsi üçün W çəki matrisi bu tənlik əsasında yaradılmışdır:

  • Giriş vektorları bipolyar formadadır I = (-1,1,... -1,1) və k elementdən ibarətdir.
  • N giriş vektoru var və biz onların çoxluğuna I-in j elementi kimi istinad edəcəyik, yəni. Ij.
  • Çıxışlar Yj adlanacaq və hər biri öz Ij girişi üçün k çıxış var.
  • W çəki matrisi kvadratdır və o vaxtdan kxk ölçüsünə malikdir k girişimiz var.

k
W (kxk) = e Iit x Ii
i = 1

Qeyd: sütun vektorunu və sətir vektorunu çoxaltdığımız üçün hər bir xarici məhsulun K x K ölçüləri olacaq.

Və bütün i üçün Wii = 0

fh(x) aktivləşdirmə funksiyası aşağıda göstərilmişdir:

fh (x) = 1, əgər x i 0 olarsa
0, ifx< 0

fh (x) ikili nəticəyə malik addım funksiyasıdır. Bu o deməkdir ki, hər bir giriş binar olmalıdır, lakin biz artıq girişlərin bipolyar olduğunu söylədikmi? Yaxşı, bəli, belədir və yoxdur. Çəki matrisi yaradıldıqda, biz bütün giriş vektorlarını bipolyar formata çeviririk, lakin normal əməliyyatlar üçün giriş və çıxışın ikili versiyasından istifadə edirik. Hopfield şəbəkəsi də binardır. Bu çevrilmə isteğe bağlıdır, lakin şəbəkə müzakirəsini bir az asanlaşdırır. Hər halda, bir nümunəyə baxaq. Tutaq ki, biz 4 Hopfield şəbəkə qovşağı yaratmaq istəyirik və onların bu vektorları adlandırmasını istəyirik:

I1=(0,0,1,0), I2=(1,0,0,0), I3=(0,1,0,1) Qeyd: onlar ortoqonaldırlar.

Bipolyar dəyərlərə çevirərək, əldə edirik:

I1* = (-1, -1.1, -1) , I2* = (1, -1, -1, -1) , I3* = (-1.1, -1.1)

İndi biz W1, W2, W3-ü hesablamalıyıq, burada Wi hər bir girişin özü ilə köçürülməsinin məhsuludur.

W1= [ I1* t x I1* ] = (— 1 , - 1 , 1 , - 1 ) t x (— 1 , — 1 , 1 , — 1 ) =
1 1 — 1 1
1 1 — 1 1
— 1 — 1 1 — 1
1 1 — 1 1 W2 = [ I2* t x I2* ] = (1 , — 1 , — 1 , — 1 ) t x (1 , — 1 , — 1 , — 1 ) =
1 — 1 — 1 — 1
— 1 1 1 1
— 1 1 1 1
— 1 1 1 1

W3 = [ I3* t x I3* ] = (- 1 , 1 , - 1 , 1 ) t x (- 1 , 1 , - 1 , 1 ) =
1 — 1 1 — 1
— 1 1 — 1 1
1 — 1 1 — 1
— 1 1 — 1 1

Əsas diaqonalı sıfırlamaq bizə son çəki matrisini verir:

W=
0 — 1 — 1 — 1
— 1 0 — 1 3
— 1 — 1 0 — 1
— 1 3 — 1 0

Vay, indi rəqs edək. Orijinal vektorlarımızı daxil edək və nəticələrə baxaq. Bunun üçün girişləri matrisə vurmaq və hər bir çıxışı Fh(x) funksiyası ilə emal etmək kifayətdir. Nəticələri təqdim edirik:

, — 1 ) və fh((0 , — 1 , — 1 , — 1 ) ) = (1 , 0 , 0 , 0 )

I3 x W = (— 2 , 3 , - 2 , 3 ) və fh((— 2 , 3 , — 2 , 3 ) ) = (0 , 1 , 0 , 1 )

Girişlər mükəmməl şəkildə "yadda qaldı", çünki olmalıdır ortoqonaldırlar. Son bir misal olaraq, tutaq ki, girişimiz (eşitmə, görmə və s.) bir qədər "səs-küylü"dür və bir xəta ehtiva edir. I3=(0,1,0,1) götürək və bir az səs-küy əlavə edək, yəni. I3 səs-küy = (0,1,1,1). İndi gəlin görək bu "səs-küylü" vektoru Hopfield şəbəkəsinə daxil etsək nə baş verəcək:

I3 səs-küy x W = (-3, 2, -2, 2) və Fh ((-3.2, -2, 2)) = (0.1,0.1)

Təəccüblüdür ki, orijinal vektor "yadda saxlanılır". Əladır. Beləliklə, ağaclara (palıd, ağlayan söyüd, ladin və s.) bənzəyən bit naxışları ilə dolu bir "yaddaş" yaratmaq imkanımız var və əgər biz başqa bir ağaca, məsələn, söyüdə girsək şəbəkədə deyil, bizim şəbəkə (inşallah) söyüdün nəyə bənzədiyini "düşündüyü" haqqında məlumat çıxaracaq. Bu, assosiativ yaddaşların güclü tərəflərindən biridir: biz hər mümkün giriş üçün şəbəkəni məşq etməli deyilik, sadəcə olaraq şəbəkəni “assosiasiyalar” üçün öyrətməliyik. Sonra "yaxın" girişlər adətən ilkin öyrənilmiş giriş kimi saxlanılır. O, təsvirin və səsin tanınmasının əsasını təşkil edir. Məndən “ağac” bənzətməsini haradan aldığımı soruşma. Hər halda, məqaləmizin sonunda 16 neyronoddan ibarət şəbəkələr yaratmağa imkan verən avtomatik assosiativ Hopfield şəbəkə simulyatorunu daxil etdim.

Beyin ölümü...

Bu gün baxacağımız bütün bunlardır. Mən preceptron şəbəkələrinə çatmağı ümid edirdim, amma yaxşı. Ümid edirəm ki, neyron şəbəkələrin nə olduğunu və onların modelləşdirilməsi üçün işçi proqramların necə yaradılacağını az da olsa başa düşürsünüz. Biz əsas terminləri və anlayışları, bəzi riyazi əsasları və ən ümumi şəbəkə modellərini əhatə etdik. Bununla belə, neyron şəbəkələri haqqında öyrənmək üçün daha çox şey var. Bunlar perseptronlar, qeyri-səlis assosiativ yaddaş və ya FAM-lar, iki istiqamətli assosiativ yaddaş və ya BAM-lar, Kohonen xəritələri, şəbəkənin geri yayılma alqoritmi, adaptiv rezonans şəbəkə nəzəriyyəsi və daha çox şeydir. Budur, neyron şəbəkəm məni oynamağa çağırır!

C++ dilində mənbə kodu olan neyron şəbəkə proqramına nümunə.

Neyron şəbəkələr haqqında burada yaxşı və ətraflı yazılmışdır. Neyron şəbəkələri necə proqramlaşdırmağı anlamağa çalışaq və bu necə işləyir. Neyron şəbəkələrin həll etdiyi vəzifələrdən biri təsnifat işidir. Proqram rəngləri təsnif edən neyron şəbəkəsinin işini nümayiş etdirir.

Kompüter üç komponentli RGB rəngli təsvir modelini qəbul etdi, komponentlərin hər biri üçün bir bayt ayrıldı. tam rəng 24 bit ilə təmsil olunur ki, bu da 16 milyon çalar verir. İnsan bu çalarlardan hər hansı birini adı çəkilən rənglərdən birinə aid edə bilər. Beləliklə, vəzifə:

Verilmiş InColor - RGB rəngi (24 bit)

rəngi təsnif etmək, yəni. onu M=( Qara, Qırmızı, Yaşıl, Sarı, Mavi, Bənövşəyi, Mavi, Ağ) çoxluğun verdiyi rənglərdən birinə aid edin.

OutColor - M dəstindən rəng

Həll nömrəsi 1. (rəqəmsal)

16777216 elementdən ibarət massiv yaradın

Həll nömrəsi 2. (analoq)

kimi funksiya yazın

int8 GetColor(DWORD Rəngi)
{
ikiqat Qırmızı = (ikiqat(((Rəng>>16)&0xFF)/255*100;
ikiqat Yaşıl = (ikiqat(((Rəng>>8)&0xFF)/255*100;
ikiqat Mavi = (ikiqat((Rəng&0xFF))/255*100;
ikiqat Səviyyə = Qırmızı;
əgər (Yaşıl > Səviyyə)
Səviyyə=Yaşıl;
əgər (Mavi > Səviyyə)
səviyyə = mavi;
Səviyyə = Səviyyə * 0,7;
int8 OutColor = 0;
əgər (Qırmızı > Səviyyə)
OutColor |= 1;
əgər (Yaşıl > Səviyyə)
OutColor |= 2;
əgər (Mavi > Səviyyə)
OutColor |= 4;
OutColor-u qaytarmaq;
}

Əgər problem sadə tənliklərlə təsvir edilə bilərsə, lakin funksiya təsvir edilə biləcək qədər mürəkkəbdirsə, bu işləyəcək. borc vermir, burada neyron şəbəkələri köməyə gəlir.

Həll nömrəsi 3. (neyron şəbəkəsi)

Ən sadə neyron şəbəkəsi. Tək qatlı perseptron.

Sinirlə əlaqəli hər şey CNeuroNet sinfinə daxildir

Hər bir neyronda 3 giriş var, burada rəng komponentlərinin intensivliyi qidalanır. (R,G,B) diapazonunda (0 - 1). Çıxış dəstindəki rənglərin sayına görə ümumilikdə 8 neyron var. Şəbəkənin işləməsi nəticəsində (0 - 1) diapazondakı hər bir neyronun çıxışında siqnal yaranır ki, bu da bu rəngin girişdə olması ehtimalı deməkdir. Biz maksimumu seçib cavabı alırıq.

Neyronlar sigmoid aktivləşdirmə funksiyasına malikdir ActiveSigm(). Siqmoid aktivləşdirmə funksiyasının törəməsi olan ActiveSigmPro() funksiyası geri yayılma metodundan istifadə edərək neyron şəbəkəsini öyrətmək üçün istifadə olunur.

Birinci sətir rəng intensivliyini göstərir. aşağıda çəki əmsallarının cədvəli verilmişdir (4 ədəd). Son sütunda neyronların çıxışındakı dəyər. Rəngi ​​dəyişdirin, siyahıdan düzgün cavabı seçin, düyməni istifadə edin öyrətmək öyrənmə funksiyasını çağırın. Avtomatik öyrət avtomatik öyrənmə prosedurunu 1000 dəfə çağırır, 2 nömrəli məhluldan düsturla təsadüfi rəng müəyyən edilir və öyrənmə funksiyası çağırılır.

mənbə kodunu və neyron şəbəkə proqramını yükləyin

Süni neyron şəbəkələrinin proqramlaşdırılması - C++ dilində obyekt yönümlü paradiqmada yazıram

Sadə neyroarxitekturalar (strukturlar), metodlar və tapşırıqlar üçün istənilən dildən (hətta Basic) istifadə edə bilərsiniz, lakin mürəkkəb layihələr üçün obyekt yönümlü proqramlaşdırma dilləri (məsələn, C ++) ən uyğun gəlir. Lazım gələrsə (proqramın ən çox vaxt aparan yerlərində) inline assemblerdə fərdi funksiyaları (daha sürətli hesablamalar tələb edən) yenidən yazmaq üçün C ++ istifadə edirəm.

Biz neyron şəbəkələrin proqramlaşdırılmasında obyekt yönümlü yanaşmanın üstünlüklərini göstərəcəyik. Bir neyron şəbəkəsi neyronların və/yaxud təbəqələrin çoxlu variantına malik ola bilər (konvolyusiya neyron şəbəkəsini yığmaq üçün müasir imkanlar haqqında qeydə baxın) böyük rəqəm müxtəlif növ təbəqələr və neyronlar). Neyronların və ya təbəqələrin bəzi ümumi funksionallığı ondan müəyyən növ neyronlar/qatlar üçün siniflər yaradaraq (miras alaraq) mücərrəd əcdad sinfinə köçürülə bilər (bu nəsil siniflər müəyyən bir növ üçün artıq unikal olan xüsusiyyətləri və davranışı təsvir edəcək-həyata keçirəcək). neyron və ya təbəqə). Beləliklə, proqram mətnində ümumi (eyni) şeylərin çoxsaylı təkrarlanmasının aradan qaldırılması və polimorfizm prinsiplərindən istifadə etməklə daha çevik və spesifik neyron/lay tiplərindən asılı olmayan proqram idarəetmə kodunu yazmaq imkanı təmin edilir.

Nümunə olaraq, mənim hazırladığım proqramlardan birində neyron şəbəkəsinin təbəqələrini təsvir etmək üçün siniflərin nomenklaturasını nəzərdən keçirək. 3 əsas iyerarxiya var - biri təbəqə strukturunun deskriptor sinifləri üçün (üç sinifin irsiyyət zənciri), ikincisi neyronların qeyri-xətti funksiyaları üçün (əsas sinif və ondan on nəsil), üçüncüsü təbəqələr üçün. özləri (bu zəncirdən müxtəlif səviyyələrdə ayrılan 5 baza-ara sinif və 12 real sinif zənciri).

Neyron şəbəkələri

Proqramın mətnində şəbəkə qatlarının davranışını təsvir etmək üçün 31 sinif istifadə olunur (həyata keçirilir), lakin onlardan yalnız 12-si real təbəqələri, qalan siniflər isə:

  • və ya mücərrəd, ümumi davranışı müəyyən edən, gələcəkdə daha sadə şəkildə yeni nəsillər (yeni təbəqə növləri) yaratmağa və idarəetmə məntiqinin (neyron şəbəkəsinin fəaliyyətini həyata keçirən) təşkil edən müxtəlif təbəqələrə dəyişməzlik dərəcəsini artırmağa imkan verir. şəbəkə;
  • və ya əksinə, onlar tabedirlər və onun “komponenti” kimi təbəqənin bir hissəsidirlər (qatın strukturunun və xüsusiyyətlərinin obyekt-deskriptorunun nümunəsi və neyronların qeyri-xətti funksiyasını həyata keçirən obyektin nümunəsi). ).

Yaradılmış neyron şəbəkəsinin işləməsi, neyron şəbəkənin bu və ya digər təbəqəsinin hansı xüsusi uşaq sinifinin həyata keçirməsindən asılı olmayaraq, mücərrəd siniflərin metod və xüsusiyyətlərinə çağırışlar vasitəsilə proqramlaşdırılır.

Bunlar. burada idarəetmə məntiqi xüsusi məzmundan ayrılır və yalnız ümumi, invariant əsaslara bağlıdır. Xüsusi siniflər haqqında, yalnız neyron şəbəkəsinin "konstruktorunun" kodunu bilmək lazımdır - yalnız yaradılma zamanı işləyir. yeni şəbəkə interfeysdə göstərilən parametrlərə əsasən və ya əvvəllər saxlanmış şəbəkəni fayldan yükləyərkən. Proqrama yeni növ neyron təbəqələrinin əlavə edilməsi şəbəkədə işləmək və öyrətmək üçün alqoritmlərin (məntiqin) yenidən işlənməsinə səbəb olmayacaq, ancaq yaratmaq (və ya fayldan oxumaq) mexanizmlərinin koduna kiçik bir əlavə tələb edəcəkdir. neyron şəbəkəsi.

Fərdi neyronlar üçün abstraksiyalar (siniflər) yoxdur - yalnız təbəqələr üçün. Bəzi (yəni, çıxışda) bir təbəqəyə tək bir neyron qoymaq lazımdırsa, yaradılan zaman istədiyiniz neyron təbəqəsinin sinfinin nümunəsinə birinə bərabər olan neyronların sayının sadəcə bir sayğacı ötürülür.

Beləliklə, obyekt yönümlü dizayn və proqramlaşdırma strukturlaşdırılmış proqramlaşdırma ilə müqayisədə "böl və qalib gəl" prinsipinin həyata keçirilməsi üçün daha çox çeviklik təmin edir:

  • ümumi kod fraqmentlərinin əcdad siniflərinə çıxarılması (irsiyyət prinsipi),
  • məlumatın zəruri gizlədilməsinin təmin edilməsi (inkapsulyasiya prinsipi),
  • bina - siniflərin spesifik həyata keçirilməsindən asılı olmayaraq universal, xarici idarəetmə məntiqinin əldə edilməsi (polimorfizm prinsipi).
  • Aparatdan və ya platformadan asılı hissələrin nəsil siniflərə çıxarılması yolu ilə çarpaz platformaya nail olmaq (hər bir xüsusi proqram və aparat tətbiqi üçün onların sayı dəyişə bilər, əsas əcdad siniflərinin və bütün yüksək səviyyəli məntiqlərin sayı eyni olacaq) və dəyişməz).

Çevik və güclü neyromodelləşdirmə vasitələrinin inkişafı ilə bağlı bugünkü tapşırıqlar üçün bütün bunlar çox faydalıdır.

ANN-ləri təsvir etmək üçün xüsusi dillərin layihələri haqqında yazıya da baxın.

neyron şəbəkələri,
məlumatların təhlili üsulları:
tədqiqatdan inkişafa və tətbiqə qədər

ev
Xidmətlər
Neyron şəbəkələri
əsas ideyalar
imkanlar
üstünlükləri
İstifadə sahələri
Necə istifadə etməli

Həll dəqiqliyi
NS və AI
Proqramlar
Məqalələr
Bloq
Müəllif / əlaqə haqqında

Kainatın incə tənzimlənməsi Kainatın çoxsaylı xassələrinin unikal birləşməsidir ki, yalnız o, müşahidə olunan Kainatın mövcudluğunu təmin edə bilər. Bu xassələrin tərkibində və ya dəyərlərində minimal sapmalar belə Kainatın mövcudluğu ilə uyğun gəlmir.

Adətən, Kainatın incə tənzimlənməsi konsepsiyası zəif bir formada nəzərdən keçirilir: yalnız bir neçə dünya sabitinin dəyərləri nəzərə alınır və yalnız sapmalarla bəşəriyyətin mövcudluğunun qeyri-mümkünlüyü haqqında nəticə çıxarılır. Belə məhdud yanaşma bu fenomeni izah etmək üçün dini çalarlı cəhdləri stimullaşdırır, məsələn, antropik prinsip kainatın Allahın verdiyi, insanın varlığında olan məqsədəuyğunluğunu bəyan edir.

Kainatın incə tənzimlənməsi müasir kosmologiyanın təsəvvürlərindən ən təsirlisidir: Kainatın müasir elmdən qəti şəkildə fərqli şəkildə yerləşdiyi Böyük Çıxmaz haqqında sübutların gücü və inandırıcılığı baxımından başqa heç kim onunla müqayisə edilə bilməz. onu təsəvvür edir və bu baxış çərçivəsində tədqiq edir. Bir neçə sabit deyil, ümumiyyətlə, ağlasığmaz nəhəng müxtəlif faktlar toplusu, əgər onlardan hər hansı birinin müşahidə ediləndən cüzi də olsa fərqi olsaydı, bu, həyatın və Kainatın mövcudluğunu qeyri-mümkün edərdi. Elementar hissəciklərin xassələrinin dəyərləri (kütlələr, yüklər, yarım ömürlər ...), əsas qarşılıqlı təsirlərin xüsusiyyətləri, maddələrin xüsusiyyətləri (bəli, ən azı su) - bütün bunlar və daha çox, sadəcə olaraq diqqətlə seçilir. Kainatın mövcud olması üçün. Bu milyonlarla faktdan hər hansı biri, əgər fərqli olsaydı, onu yoxluğa aparardı. Və ya, heç olmasa (zəif bir formada) - onda həyatın qeyri-mümkünlüyünə.

Süni neyron şəbəkəsi

Bunun fərqində olmaq Böyük Ölçü dövrünün adi “dünyanın elmi mənzərəsini” tamamilə məhv edir. Ancaq artıq deyildiyi kimi, burada bir aperception var: insanlar bundan xəbərdar olmaqdan imtina edirlər.

İTV-də incə tənzimləmənin izahı

İTV Kainatın yalnız məlumatdan ibarət olduğunu müəyyən edir. Müşahidəçi müşahidə olunanı müşahidə edir, məlumat alır - və Kainatı təşkil edən bütün bunlardır. Məlumat, sadəcə olaraq, bir şeyin təsviri olmaqla, öz-özünə meydana gəldiyi təqdirdə mümkün olan hər şey ola bilər. Lakin informasiya özlüyündə heç bir şey deyil və heç nəyi təsvir edə bilməz, bunun üçün hər zaman müəyyən şərtlər lazımdır və onlar məlumatın məzmununu məhdudlaşdırır.

Beləliklə, Kainat, prinsipcə mümkün olan geniş məlumat spektrindən xüsusi müşahidə edilə bilən məlumatların şərti seçimlərinin toplusudur. Kainatın varlığı bütün bu seçimlər üçün son meyardır: onlar kainatın mövcud olduğu qədərdir, əgər fərqli olsaydılar, kainat mövcud olmazdı.

Bu, Kainatın incə tənzimlənməsidir: dünya sabitlərinin dəyərləri və ümumiyyətlə, Kainatın bütün xassələri Kainatın mövcudluğu faktı ilə müəyyən edilirdi, heç kim onları xüsusi olaraq seçməyib, onlardan alınmayıb. hər hansı bir sabit, onların digər tərkibini və digər dəyərlərini təyin etmək üçün heç bir yol yoxdur.

Neyron şəbəkəni təhlil edirik. C#

Bu yazıda neyron şəbəkələrinin hərəkətini sökməyi və bir müəllimin köməyi ilə neyron şəbəkəsinin öyrənilməsinin ən sadə variantlarından birini atmağı təklif edirəm.

Bu çox "böyük" və "dəhşətli" neyron şəbəkəsinin cihazına bir neçə söz vermək lazımdır. Uzun müddət insanlar irəli-geri gəzir və bir sual üzərində düşünürdülər: (həyatın mənası nədir?)
Nümunələri necə tanımaq olar?

Çoxlu cavablar var idi. Müxtəlif evristika, nümunə müqayisələri və daha çox şey var. Cavablardan biri neyron şəbəkəsi idi. [Yeri gəlmişkən, neyron şəbəkəsi təkcə şəkilləri tanıya bilməz]

Belə ki. Neyron şəbəkənin strukturu. Bu şəkli təsəvvür edin: hörümçək toru toxudu və tor milçəyi tutdu. Milçəyin vurduğu yer hədəfə “mümkün qədər yaxın” olan neyrondur. Neyron şəbəkəsi "təsvir edən" neyronlardan ibarətdir.
hadisə şansı. Hadisənin (hər bir neyronun) "ehtimalının" təsviri (məsələn) ayrıca faylda saxlanıla bilər.

İndi keçək bu axşam əsas söhbət mövzusuna.

Neyron şəbəkə necə işləyir.

Necə öyrənilir və tanınır?

Bu şəkildə neyron şəbəkəsinin strukturunun nümunəsi aydın görünür:

Giriş, W (Xi * Wi) çəkilər dəstinə vurulan X giriş siqnalları dəstini alır. Neyronda məhsulların cəmi hesablanır və müəyyən sayda çıxışa göndərilir.
Bütün neyronların dəyərlərini hesabladıqdan sonra ən böyük dəyərin axtarışı aparılır. Bu ən yüksək dəyər və sualın düzgün cavabı hesab olunur. Proqram aşkar edilmiş neyron tərəfindən təsvir edilən bir görüntü yaradır.
Öyrənmə rejimində istifadəçinin nəticəni düzəltmək imkanı var (təcrübəsinə əsasən) və sonra proqram neyronların çəkilərini yenidən hesablayacaq.
Yenidən hesablama düsturu təxminən aşağıdakı kimidir: W[i] = W[i] + Sürət*Delta*X[i] - burada
W[i] — i-ci elementin çəkisi,
Sürət - öyrənmə sürəti,
Delta - işarəsi (-1 və ya 1),
X[i] — i-ci giriş siqnalının dəyəri (bir çox hallarda 0 və ya 1)

Niyə delta istifadə olunur?

Belə bir halı nəzərdən keçirək.

Proqrama giriş 6 rəqəmi olan bir şəkildir.

Neyron şəbəkələri yazmaq üçün hansı proqramlaşdırma dilindən istifadə edilməlidir?

Neyroşəbəkə 8 rəqəmini tanıdı. İstifadəçi rəqəmi 6-ya düzəldir. Proqramda bundan sonra nə baş verir?

Proqram 6 rəqəmini və 8 rəqəmini təsvir edən iki neyron üçün məlumatları yenidən hesablayır və 6 rəqəmini təsvir edən neyron üçün 1-ə bərabər olacaq və 8 = -1

Sürət parametri necə qurulur?

Bu parametr, mövzular nə qədər kiçik olsa, şəbəkə bir o qədər uzun və dəqiq (daha yüksək keyfiyyətli), daha böyük, daha sürətli və daha "səthi" şəbəkə öyrədiləcək.

Sürət parametri həm əl ilə, həm istifadəçi tərəfindən, həm də proqramın icrası zamanı (məsələn, const) təyin edilə bilər.

Gördüyünüz kimi, xarakter çəkiləri də müəyyən edilməlidir. Onlar ilk növbədə necə müəyyən edilir? əslində burada da hər şey sadədir. Onlar tamamilə təsadüfi müəyyən edilir, bu, neyron şəbəkənin "qərəzindən" qaçınır. Adətən, təsadüfi dəyərlərin intervalı kiçikdir -0.4…0.4 və ya -0.3..0.2 və s.

İndi keçək ən maraqlı hissəyə. Bunu necə kodlaşdırmaq olar!

Gəlin iki sinif yaradaq - Neuron sinfi və Şəbəkə sinfi (müvafiq olaraq Neuron və Net)

Neyron sinfinin əsas vəzifələrini təsvir edək:

— Giriş siqnalına reaksiya

- toplama

- Tənzimləmə

(əlavə olaraq fayldan oxumaq, yaratmaq ilkin dəyərlər, qorunma. Oxucuların "vicdanına" buraxaq)

Sinif daxilində dəyişənlər Neuron:simvol
- "identifikasiya" identifikatoru - LastY

- Təsvir edilən şəkil - simvol simvolu

Süni intellekt, neyron şəbəkələr, maşın öyrənməsi - bütün bu indi populyar anlayışlar həqiqətən nə deməkdir? Mən özüm olduğum əksər təcrübəsiz insanlar üçün onlar həmişə fantastik bir şey kimi görünsələr də, əslində onların mahiyyəti zahirdədir. Yazmaq fikrim var idi sadə dil süni neyron şəbəkələri haqqında. Özünüz öyrənin və başqalarına bu texnologiyanın nə olduğunu, necə işlədiyini söyləyin, onun tarixini və perspektivlərini nəzərdən keçirin. Bu yazıda mən cəngəlliyə girməməyə çalışdım, ancaq yüksək texnologiyalar dünyasında bu perspektivli sahə haqqında sadə və populyar şəkildə danışdım.

Bir az tarix

İlk dəfə olaraq süni neyron şəbəkələri (ANN) anlayışı beynin proseslərini modelləşdirməyə çalışarkən yaranıb. Bu sahədə ilk böyük irəliləyiş 1943-cü ildə McCulloch-Pitts neyron şəbəkəsi modelinin yaradılması hesab edilə bilər. Alimlər əvvəlcə süni neyron modelini hazırlayıblar. Məntiqi əməliyyatları yerinə yetirmək üçün bu elementlərdən ibarət şəbəkənin qurulmasını da təklif etdilər. Amma ən əsası, elm adamları belə bir şəbəkənin öyrənməyə qadir olduğunu sübut etdilər.

Növbəti mühüm addım 1949-cu ildə Donald Hebb tərəfindən növbəti bir neçə onilliklər üçün əsas olan ilk ANN hesablama alqoritminin inkişafı oldu. 1958-ci ildə Frank Rosenblatt beyin proseslərini təqlid edən parseptron sistemi yaratdı. Bir vaxtlar texnologiyanın analoqu yox idi və neyron şəbəkələrində hələ də əsasdır. 1986-cı ildə, demək olar ki, eyni vaxtda, bir-birindən asılı olmayaraq, Amerika və Sovet alimləri çox qatlı perseptronun tədrisinin fundamental metodunu əhəmiyyətli dərəcədə təkmilləşdirdilər. 2007-ci ildə neyron şəbəkələri yenidən doğuldu. İngilis kompüter alimi Geoffrey Hinton, məsələn, pilotsuz nəqliyyat vasitələrini idarə etmək üçün istifadə olunan çox qatlı neyron şəbəkələri üçün dərin öyrənmə alqoritminə öncülük etdi.

Əsas haqqında qısaca

Sözün ümumi mənasında neyron şəbəkələrdir riyazi modellər heyvan orqanizminin sinir hüceyrələrinin şəbəkələri prinsipi üzərində işləyir. ANN həm proqramlaşdırıla bilən, həm də aparat həllərində həyata keçirilə bilər. Qavrama asanlığı üçün bir neyron çoxlu giriş və bir çıxışı olan bir növ hüceyrə kimi təqdim edilə bilər. Daxil olan siqnalların nə qədər çıxdığı siqnala çevrilməsi hesablama alqoritmi ilə müəyyən edilir. Effektiv dəyərlər hər bir neyron girişinə verilir, daha sonra neyronlararası əlaqələr (sinopslar) boyunca paylanır. Sinapsların bir parametri var - çəki, bunun sayəsində bir neyrondan digərinə keçərkən giriş məlumatı dəyişir. Neyroşəbəkələrin necə işlədiyini başa düşməyin ən asan yolu nümunə kimi rənglərin qarışdırılmasından istifadə etməkdir. Mavi, yaşıl və qırmızı neyron müxtəlif çəkilərə malikdir. Sonrakı neyronda çəkisi dominant olacaq həmin neyronun məlumatları.

Neyron şəbəkənin özü bir çox belə neyronlardan (prosessorlardan) ibarət sistemdir. Fərdi olaraq, bu prosessorlar olduqca sadədir ( Şəxsi kompüter), lakin böyük bir sistemə qoşulduqda neyronlar çox mürəkkəb vəzifələri yerinə yetirə bilirlər.

Tətbiq sahəsindən asılı olaraq, neyron şəbəkə müxtəlif yollarla, məsələn, baxımından şərh edilə bilər maşın öyrənməsi ANN nümunənin tanınması üsuludur. Riyazi baxımdan bu çoxparametrli məsələdir. Kibernetika nöqteyi-nəzərindən - robototexnikanın adaptiv idarəetmə modeli. Süni intellekt üçün ANN hesablama alqoritmlərindən istifadə edərək təbii intellektin modelləşdirilməsi üçün əsas komponentdir.

Neyron şəbəkələrin adi hesablama alqoritmlərindən əsas üstünlüyü onların təlim keçmək qabiliyyətidir. Sözün ümumi mənasında öyrənmə neyronlar arasında əlaqənin düzgün əmsallarının tapılmasından, həmçinin məlumatların ümumiləşdirilməsindən və giriş və çıxış siqnalları arasında mürəkkəb münasibətlərin müəyyən edilməsindən ibarətdir. Əslində, uğurlu neyron şəbəkə təlimi o deməkdir ki, sistem təlim dəstində olmayan məlumatlar əsasında düzgün nəticəni müəyyən edə biləcək.

Bugünkü vəziyyət

Və bu texnologiya nə qədər perspektivli olsa da, indiyə qədər ANN-lər hələ də insan beyninin və təfəkkürünün imkanlarından çox uzaqdır. Buna baxmayaraq, neyron şəbəkələri artıq insan fəaliyyətinin bir çox sahələrində istifadə olunur. Hələ ki, onlar yüksək intellektli qərarlar qəbul edə bilmirlər, lakin əvvəllər lazım olan bir insanı əvəz edə bilirlər. ANN-lərin çoxsaylı tətbiq sahələri arasında istehsal proseslərinin özünü öyrənən sistemlərinin yaradılması, pilotsuz nəqliyyat vasitələri, təsvirin tanınması sistemləri, intellektual təhlükəsizlik sistemləri, robot texnikası, keyfiyyətin monitorinqi sistemləri, səslə qarşılıqlı əlaqə interfeysləri, analitik sistemlər və s. Neyroşəbəkələrin belə geniş yayılması, digər şeylərlə yanaşı, meydana gəlməsi ilə əlaqədardır müxtəlif yollarla ANN öyrənilməsinin sürətləndirilməsi.

Bu günə qədər neyron şəbəkələri üçün bazar böyükdür - bu, milyardlarla və milyardlarla dollardır. Təcrübə göstərir ki, dünyanın əksər neyron şəbəkə texnologiyaları bir-birindən az fərqlənir. Bununla belə, neyron şəbəkələrin istifadəsi çox baha başa gələn bir məşqdir, əksər hallarda bunu yalnız böyük şirkətlər ödəyə bilər. Neyron şəbəkələrin inkişafı, öyrədilməsi və sınaqdan keçirilməsi üçün böyük hesablama gücü tələb olunur, aydındır ki, İT bazarının böyük oyunçuları buna kifayət qədər malikdirlər. Bu sahədə inkişaflara rəhbərlik edən əsas şirkətlər arasında Google DeepMind bölməsi, Microsoft Araşdırma bölməsi, IBM, Facebook və Baidu var.

Təbii ki, bütün bunlar yaxşıdır: neyron şəbəkələr inkişaf edir, bazar böyüyür, lakin hələlik əsas vəzifə həllini tapmayıb. Bəşəriyyət imkanlarına görə insan beyninə belə yaxın olan texnologiya yarada bilməyib. İnsan beyni ilə süni neyron şəbəkələri arasındakı əsas fərqlərə baxaq.

Niyə neyron şəbəkələri hələ də insan beynindən uzaqdır?

Sistemin prinsipini və səmərəliliyini kökündən dəyişdirən ən mühüm fərq, süni neyron şəbəkələrində və neyronların bioloji şəbəkəsində siqnalların fərqli ötürülməsidir. Fakt budur ki, ANN-də neyronlar real dəyərlər olan dəyərləri, yəni rəqəmləri ötürür. İnsan beynində impulslar sabit amplituda ilə ötürülür və bu impulslar demək olar ki, ani olur. Bundan insan neyron şəbəkəsinin bir sıra üstünlükləri gəlir.

Birincisi, beyindəki rabitə xətləri ANN-dəkilərdən daha səmərəli və qənaətcildir. İkincisi, impuls dövrəsi texnologiyanın həyata keçirilməsinin sadəliyini təmin edir: mürəkkəb hesablama mexanizmləri əvəzinə analoq sxemlərdən istifadə etmək kifayətdir. Nəhayət, impuls şəbəkələri səs müdaxiləsindən qorunur. Həqiqi nömrələrə səs-küy təsir edir, bu da səhv şansını artırır.

Nəticə

Təbii ki, son onillikdə neyron şəbəkələrinin inkişafında əsl bum baş verib. Bu, ilk növbədə, ANN öyrənmə prosesinin daha sürətli və asan olması ilə əlaqədardır. Həmçinin, texnologiyanın tətbiqi prosesini əhəmiyyətli dərəcədə sürətləndirə bilən "əvvəlcədən hazırlanmış" neyron şəbəkələri fəal şəkildə inkişaf etdirilməyə başladı. Əgər neyron şəbəkələrinin nə vaxtsa insan beyninin imkanlarını tam şəkildə təkrar edə biləcəyini söyləmək hələ tezdirsə, yaxın onillikdə ANN-lərin mövcud peşələrin dörddə birində bir insanı əvəz edə biləcəyi ehtimalı getdikcə daha çox olur. həqiqət.

Ətraflı bilmək istəyənlər üçün

  • Böyük Sinir Müharibəsi: Google həqiqətən nəyə hazırdır
  • Koqnitiv kompüterlər gələcəyimizi necə dəyişə bilər

Biz nə edirik? Sadə və çox kiçik bir neyron şəbəkəsi yaratmağa çalışacağıq ki, biz bunu edirik izah edinöyrətmək nəyisə fərqləndirmək. Eyni zamanda, biz tarixə və riyazi cəngəlliyə girməyəcəyik (belə məlumatları tapmaq çox asandır) - əvəzində biz sizə və özümüzə rəsmlər və kodlarla tapşırığı izah etməyə çalışacağıq (uğur qazanacağımızı deyil) .
Neyron şəbəkələrdəki terminlərin çoxu biologiya ilə bağlıdır, ona görə də əvvəldən başlayaq:

Beyin mürəkkəb bir şeydir, lakin onu da bir neçə əsas hissəyə və əməliyyata bölmək olar:

Xəstəliyin törədicisi ola bilər daxili(məsələn, şəkil və ya fikir):

İndi əsas və sadələşdirilmişlərə baxaq hissələri beyin:

Beyin kabel şəbəkəsinə bənzəyir.

Neyron- beyindəki əsas hesablama vahidi, digər neyronların kimyəvi siqnallarını qəbul edir və emal edir və bir sıra amillərdən asılı olaraq ya heç bir şey etmir, ya da elektrik impulsu və ya Fəaliyyət Potensialı yaradır, bu da qonşulara siqnal göndərir. Sinapslar vasitəsilə neyronlar əlaqəli neyronlar:

Xəyallar, xatirələr, özünü tənzimləyən hərəkətlər, reflekslər və ümumiyyətlə düşündüyünüz və ya etdiyiniz hər şey - hər şey bu proses sayəsində baş verir: milyonlarla, hətta milyardlarla neyron işləyir. müxtəlif səviyyələrdə müxtəlif paralel alt sistemlər yaradan və bioloji neyron şəbəkəsini təmsil edən əlaqələr yaradır. xalis.

Əlbəttə ki, bunların hamısı sadələşdirmələr və ümumiləşdirmələrdir, lakin onların sayəsində biz sadə təsvir edə bilərik
neyron şəbəkəsi:

Və onu qrafikdən istifadə edərək rəsmiləşdirin:

Burada bəzi izahat tələb olunur. Dairələr neyronlardır, xətlər isə aralarındakı əlaqədir və bu mərhələdə çətinləşməmək üçün qarşılıqlı əlaqələr birbaşa məlumat axınını təmsil edir soldan sağa. Birinci neyron hazırda aktivdir və boz rənglə vurğulanır. Biz də ona bir nömrə təyin etdik (əgər işləyirsə 1, işləmirsə 0). Neyronlar arasındakı rəqəmlər göstərilir çəkiəlaqələri.

Yuxarıdakı qrafiklər şəbəkənin vaxtını göstərir, daha dəqiq ekran üçün onu vaxt intervallarına bölmək lazımdır:

Öz neyron şəbəkənizi yaratmaq üçün çəkilərin neyronlara necə təsir etdiyini və neyronların necə öyrəndiyini başa düşməlisiniz. Nümunə olaraq, bir dovşanı (sınaq dovşanı) götürək və klassik təcrübə şərtlərinə salaq.

Təhlükəsiz hava axını onlara yönəldildikdə, insanlar kimi dovşanlar da gözlərini qırpır:

Bu davranış modeli qrafiklərlə çəkilə bilər:

Əvvəlki diaqramda olduğu kimi, bu qrafiklər yalnız dovşanın nəfəs hiss etdiyi anı göstərir və biz beləliklə kodlaşdırmaq boolean dəyəri kimi puff. Bundan əlavə, çəki dəyərinə əsaslanaraq ikinci neyronun atəş edib-etmədiyini hesablayırıq. Əgər 1-ə bərabərdirsə, onda sensor neyron alovlanır, gözümüzü qırpırıq; çəki 1-dən azdırsa, gözümüzü qırpmırıq: ikinci neyron limit— 1.

Daha bir elementi təqdim edək - təhlükəsiz səs siqnalı:

Dovşan maraqlarını belə modelləşdirə bilərik:

Əsas fərq odur ki, indi çəkidir sıfır, buna görə də göz qırpıb-sönən bir dovşan almadıq, yaxşı, hələ yox, heç olmasa. İndi dovşana əmrlə göz qırpmağı, qarışdırmağı öyrədəcəyik
qıcıqlandırıcılar (bip və nəfəs):

Bu hadisələrin müxtəlif vaxtlarda baş verməsi vacibdir dövr, qrafiklərdə bu belə görünəcək:

Səsin özü heç nə etmir, lakin hava axını yenə də dovşanın yanıb-sönməsinə səbəb olur və biz bunu çəkilər çarpaz stimullar vasitəsilə göstəririk (qırmızı rəngdə). Təhsil mürəkkəb davranış zamanla əlaqəli neyronlar arasında çəkidə tədricən dəyişiklik kimi sadələşdirilə bilər.

Bir dovşan yetişdirmək üçün addımları təkrarlayın:

İlk üç cəhd üçün diaqramlar belə görünəcək:

Qeyd edək ki, səs stimulunun çəkisi hər təkrardan sonra artır (qırmızı rənglə vurğulanır), bu dəyər indi ixtiyaridir - biz 0,30 seçdik, lakin rəqəm hər hansı bir şey, hətta mənfi ola bilər. Üçüncü təkrardan sonra dovşanın davranışında dəyişiklik hiss etməyəcəksiniz, amma dördüncü təkrardan sonra heyrətamiz bir şey baş verəcək - davranış dəyişəcək.

Biz havaya məruz qalmağı aradan qaldırdıq, lakin dovşan səsi eşidəndə hələ də yanıb-sönür! Son sxemimiz bu davranışı izah edə bilər:

Dovşana səsə göz qırpmaqla cavab verməyi öyrətdik.

Bu cür real təcrübədə nəticə əldə etmək üçün 60-dan çox təkrar tələb oluna bilər.

İndi biz beynin və dovşanların bioloji dünyasını tərk edəcəyik və hər şeyi uyğunlaşdırmağa çalışacağıq
süni neyron şəbəkəsi yaratmağı öyrəndi. Əvvəlcə sadə bir tapşırığı yerinə yetirməyə çalışaq.

Tutaq ki, dörd düyməsi olan bir maşınımız var ki, sağ düyməyə basıldıqda yemək verir.
düymələr (yaxşı və ya robotsansa enerji). Tapşırıq hansı düymənin mükafat verdiyini tapmaqdır:

Düymənin bu şəkildə basıldığında nə etdiyini (şematik olaraq) təsvir edə bilərik:

Belə bir problemi bütövlükdə həll etmək daha yaxşıdır, ona görə də düzgün olanı da daxil olmaqla bütün mümkün nəticələrə baxaq:

Naharınızı əldə etmək üçün 3-cü düyməyə klikləyin.

Bir neyron şəbəkəsini kodda təkrarlamaq üçün əvvəlcə şəbəkənin xəritələşdirilə biləcəyi bir model və ya qrafik hazırlamalıyıq. Budur, tapşırıq üçün uyğun bir qrafik, bundan əlavə, bioloji qarşılığını yaxşı göstərir:

Bu neyron şəbəkəsi sadəcə girişi qəbul edir - bu halda hansı düymənin basıldığının qavranılması olacaq. Daha sonra şəbəkə daxil edilən məlumatı çəkilərlə əvəz edir və təbəqənin əlavə edilməsi əsasında nəticə çıxarır. Bir az qarışıq səslənir, amma gəlin modelimizdə düymənin necə təmsil olunduğuna baxaq:

Qeyd edək ki, bütün çəkilər 0-dır, buna görə də neyron şəbəkəsi, körpə kimi, tamamilə boşdur, lakin tamamilə bir-birinə bağlıdır.

Beləliklə, biz xarici hadisəni neyron şəbəkənin giriş təbəqəsi ilə uyğunlaşdırırıq və onun çıxışındakı dəyəri hesablayırıq. Bu, reallıqla üst-üstə düşə bilər və ya üst-üstə düşməyə bilər, lakin biz hələlik buna məhəl qoymayacağıq və tapşırığı kompüter üçün başa düşülən şəkildə təsvir etməyə başlayacağıq. Ağırlıqları daxil etməklə başlayaq (JavaScript-dən istifadə edəcəyik):

Var girişləri = ; var çəkilər = ; // Rahatlıq üçün bu vektorları çağırmaq olar

Növbəti addım, giriş dəyərlərini və çəkiləri toplayan və çıxış dəyərini hesablayan bir funksiya yaratmaqdır:

Funksiya evaluateNeuralNetwork(inputVector, weightVector)( var nəticə = 0; inputVector.forEach(funksiya(inputValue, weightIndex) ( layerValue = inputValue*weightVector; result += layerValue; )); return (result.toFixed(2)); ) / / Mürəkkəb görünə bilər, lakin bunun etdiyi hər şey çəki/giriş cütlərinə uyğun gəlir və nəticəni əlavə edir

Gözlənildiyi kimi, bu kodu işlətsək, modelimizdə və ya qrafikimizdə olduğu kimi eyni nəticəni alacağıq...

EvaluateNeuralNetwork(girişlər, çəkilər); // 0.00

Canlı nümunə: Neyral Net 001. Neyron şəbəkəmizi təkmilləşdirməkdə növbəti addım öz çıxışını yoxlamaq və ya əldə edilən dəyərlərin real vəziyyətlə müqayisə oluna biləcəyini yoxlamaq üsulu olacaq, gəlin əvvəlcə bu xüsusi reallığı dəyişənə kodlayaq:

Uyğunsuzluqları (və nə qədər) aşkar etmək üçün səhv funksiyası əlavə edəcəyik:

Səhv = Reallıq - Neyron Net Çıxış

Bununla biz neyron şəbəkəmizin performansını qiymətləndirə bilərik:

Amma daha önəmlisi, reallığın müsbət nəticə verdiyi vəziyyətlər haqqında nə demək olar?

İndi biz bilirik ki, neyron şəbəkəsi modelimiz işləmir (və necə olduğunu bilirik), əla! Və bu əladır, çünki indi biz təlimimizə nəzarət etmək üçün səhv funksiyasından istifadə edə bilərik. Ancaq səhv funksiyasını aşağıdakı kimi yenidən təyin etsək, hər şey məna kəsb edir:

səhv = İstədiyiniz Çıxış- Neyral Net Çıxış

İncə, lakin əhəmiyyətli bir ayrılıq, səssizcə olacağımızı ifadə edir
gələcək fəaliyyətlərlə müqayisə etmək üçün keçmiş nəticələri istifadə edin
(və daha sonra görəcəyimiz kimi öyrənmək üçün). Bu real həyatda da var, tam
təkrarlanan nümunələr, buna görə də təkamül strategiyasına çevrilə bilər (yaxşı, in
əksər hallarda).

var input = ; var çəkilər = ; vardesiredResult = 1;

Və yeni funksiya:

Funksiya evaluateNeuralNetError(istənilən,aktual) ( qaytarılması (istənilən - faktiki); ) // Həm Şəbəkəni, həm də Xətanı qiymətləndirdikdən sonra əldə edəcəyik: // "Neyron Net çıxışı: 0.00 Xəta: 1"

Canlı nümunə: Neyral Net 002. Gəlin ümumiləşdirək. Tapşırıqdan başladıq, onun bioloji neyron şəbəkəsi şəklində sadə modelini hazırladıq və reallıqla və ya istədiyiniz nəticə ilə müqayisədə onun performansını ölçmək üçün bir üsul əldə etdik. İndi biz uyğunsuzluğu aradan qaldırmağın bir yolunu tapmalıyıq - bu proses həm kompüterlər, həm də insanlar üçün öyrənmə hesab edilə bilər.

Neyron şəbəkəni necə öyrətmək olar?

Həm bioloji, həm də süni neyron şəbəkələrinin təliminin əsasını təkrarlama təşkil edir.
öyrənmə alqoritmləri, buna görə də onlarla ayrıca işləyəcəyik. ilə başlayaq
öyrənmə alqoritmləri.

Təbiətdə öyrənmə alqoritmləri fiziki və ya kimyəvi dəyişikliklər kimi başa düşülür
Təcrübədən sonra neyronların xüsusiyyətləri:

Kodda iki neyronun zamanla necə dəyişdiyinin dramatik təsviri və "öyrənmə alqoritmi" modelimiz o deməkdir ki, həyatımızı asanlaşdırmaq üçün sadəcə olaraq zamanla hər şeyi dəyişəcəyik. Beləliklə, həyatın nə qədər asan olduğunu göstərmək üçün bir dəyişən əlavə edək:

Var LearnRate = 0.20; // Dəyər nə qədər böyük olsa, öyrənmə prosesi bir o qədər sürətli olar :)

Və nə dəyişəcək?

Bu, çəkiləri (bir dovşan kimi!), xüsusən də əldə etmək istədiyimiz məhsulun çəkisini dəyişəcək:

Belə bir alqoritmi necə kodlaşdırmaq sizin seçiminizdir, sadəlik üçün öyrənmə amilini çəkiyə əlavə edirəm, burada funksiya şəklindədir:

Funksiya öyrənin(inputVector, weightVector) ( weightVector.forEach(funksiya(çəki, indeks, çəkilər) əgər (inputVector > 0) (çəkilər = çəki + öyrənməRate; ) )); )

İstifadə edildikdə, bu məşq funksiyası sadəcə öyrənmə nisbətimizi çəki vektoruna əlavə edəcəkdir aktiv neyron, məşq dairəsindən (və ya təkrarlamadan) əvvəl və sonra nəticələr aşağıdakı kimi olacaq:

// Orijinal çəki vektoru: // Neyral Net çıxış: 0.00 Xəta: 1 öyrənmə (giriş, çəkilər); // Yeni Çəki vektoru: // Neyron Net çıxışı: 0.20 Xəta: 0.8 // Aydın deyilsə, neyron şəbəkənin çıxışı 1-ə yaxındır (toyuq istehsal edir) - bu bizim istədiyimizdir, beləliklə belə nəticəyə gələ bilərik ki, biz düzgün istiqamətdə hərəkət edirlər

Canlı nümunə: Neyral Net 003. Yaxşı, indi düzgün istiqamətdə irəliləyirik, bu tapmacanın son hissəsi icra olacaq təkrarlar.

Bu o qədər də çətin deyil, təbiətdə biz eyni şeyi təkrar-təkrar edirik, lakin kodda sadəcə təkrarların sayını təyin edirik:

Var sınaqları = 6;

Təlim neyron şəbəkəmizə təkrar sayı funksiyasının tətbiqi belə görünəcək:

Funksiya qatarı(sınaq) ( üçün (i = 0; i< trials; i++) { neuralNetResult = evaluateNeuralNetwork(input, weights); learn(input, weights); } }

Və yekun hesabatımız budur:

Neyral Net çıxışı: 0.00 Xəta: 1.00 Çəki vektoru: Neyral Net çıxışı: 0.20 Xəta: 0.80 Çəki vektoru: Neyral Net çıxışı: 0.40 Xəta: 0.60 Çəki vektoru: Neyral Net çıxışı: 0.60 Xəta: 0.40 Çəki Xəta vektoru: Neyral Net8 çıxışı0 : 0,20 Çəki Vektor: Neyral Net çıxış: 1,00 Xəta: 0,00 Çəki vektoru: // Toyuq Yeməyi !

Canlı nümunə: Neyral Net 004. İndi bizdə çəki vektoru var ki, daxil olan vektor reallığa uyğun gələrsə (üçüncü düyməni basmaqla) yalnız bir nəticə (nahar üçün toyuq) verəcəkdir. Beləliklə, indi etdiyimiz gözəl şey nədir?

Bu xüsusi halda, neyron şəbəkəmiz (təlimdən sonra) girişi tanıya və istənilən nəticəyə nəyin səbəb olacağını deyə bilər (hələ də konkret vəziyyətləri proqramlaşdırmalı olacağıq):

Bundan əlavə, bu, genişlənə bilən bir model, oyuncaq və sizinlə öyrənməmiz üçün bir vasitədir. Biz maşın öyrənməsi, neyron şəbəkələri və süni intellekt haqqında yeni bir şey öyrənə bildik. İstifadəçilərə xəbərdarlıq:

  • Öyrənilmiş çəkilərin saxlanması mexanizmi təmin edilməyib, ona görə də bu neyron şəbəkə bildiyi hər şeyi unudacaq. Kodu yeniləyərkən və ya yenidən işləyərkən, şəbəkənin tam məşq etməsi üçün ən azı altı uğurlu təkrarlama lazımdır, əgər bir şəxsin və ya maşının təsadüfi qaydada düymələri basacağını düşünürsünüzsə ... Bu, bir az vaxt aparacaq.
  • Əhəmiyyətli şeyləri öyrənmək üçün bioloji şəbəkələr 1 öyrənmə dərəcəsinə malikdir, buna görə də yalnız bir uğurlu təkrarlama tələb olunacaq.
  • Bioloji neyronlara çox bənzəyən bir öyrənmə alqoritmi var, onun cəlbedici bir adı var: widroff-hoff qaydası, və ya widroff-hoff təlimi.
  • Neyron hədləri (nümunəmizdə 1) və yenidən təlim effektləri (çox sayda təkrarlama ilə nəticə 1-dən çox olacaq) nəzərə alınmır, lakin onlar təbiətdə çox vacibdir və davranış reaksiyalarının böyük və mürəkkəb bloklarına cavabdehdirlər. . Mənfi çəkilər də belədir.

Əlavə oxumaq üçün qeydlər və biblioqrafiya

Mən riyaziyyatdan və sərt şərtlərdən qaçmağa çalışdım, amma maraqlanırsınızsa, biz ikili təsnifatçıların - ağır əşyaların nəzarət edilən öyrənmə alqoritmi (nəzarətli öyrənmə) kimi müəyyən edilən perseptron qurduq. Beynin bioloji quruluşu, qismən qeyri-dəqiqliklər, qismən də mürəkkəbliyi səbəbindən asan mövzu deyil. Neuroscience (Purves) və Cognitive Neuroscience (Gazzaniga) ilə başlamaq daha yaxşıdır. Dovşan nümunəsini Gateway to Memory-dən (Gluck) dəyişdirdim və uyğunlaşdırdım, bu da qrafiklər dünyasına əla bələdçidir. Digər zəhmli resurs Neyron Şəbəkələrə Giriş (Gurney) bütün AI ehtiyaclarınız üçün əladır.
İndi Python-da! Python versiyasını təqdim etdiyinə görə İlya Andşmidtə təşəkkür edirik:

Daxiletmələr = çəkilər = arzu olunan_nəticə = 1 öyrənmə_dərəcəsi = 0.2 sınaq = 6 def qiymətləndirmə_neural_şəbəkə (giriş_massivi, çəki_massivi): nəticə = diapazondakı i üçün 0(len(input_array)): qat_dəyəri = giriş_massivi[i] * çəki_massivi[i] nəticə += qat print("qiymətləndirmə_neural_şəbəkə: " + str(nəticə)) print("çəkilər: " + str(çəkilər)) nəticəni qaytarmaq def evaluate_error(arzu olunan, faktiki): xəta = arzu olunan - faktiki çap ("qiymətləndirmə_xəta: " + str(xəta) ) qaytarma xətası def öyrənmə(input_array, weight_array): print("öyrənmə...") diapazondakı i(len(input_array)): əgər input_array[i] > 0: weight_array[i] += Learn_rate def train(sınaqlar) ): diapazondakı i üçün(sınaqlar): neural_net_nəticə = evaluate_neural_şəbəkə(girişlər, çəkilər) öyrənin(girişlər, çəkilər) qatar(sınaqlar)

İndi GO! Bu versiya üçün Kieran Maher-ə kredit.

Paketin əsas idxalı ("fmt" "riyaziyyat") func main() ( fmt.Println("Girişlər və çəkilər yaradılması...") girişlər:= float64(0.00, 0.00, 1.00, 0.00) çəkilər:= float64(0.00, 0.00, 0.00, 0.00) arzuolunan:= 1.00 öyrənməRəzi:= 0.20 sınaq:= 6 qatar(sınaqlar, girişlər, çəkilər, arzu olunan, öyrənməRate) ) funksiya qatarı(sınaqlar int, girişlər float64, çəkilər float64, istədiyiniz float64, öyrənmə)R i üçün:= 1;i< trials; i++ { weights = learn(inputs, weights, learningRate) output:= evaluate(inputs, weights) errorResult:= evaluateError(desired, output) fmt.Print("Output: ") fmt.Print(math.Round(output*100) / 100) fmt.Print(" Error: ") fmt.Print(math.Round(errorResult*100) / 100) fmt.Print(" ") } } func learn(inputVector float64, weightVector float64, learningRate float64) float64 { for index, inputValue:= range inputVector { if inputValue >0.00 ( çəkiVector = çəkiVektor + öyrənməRate ) ) çəki qaytarmaVector ) funksiya qiymətləndirməsi(inputVector float64,wector float64) float64 (nəticə:= 0.00 indeks üçün, inputValue:= diapazon inputVector (layvalValue:= çəki +V qatı nəticə =V qatı nəticə) ) func evaluateError(istənilən float64, faktiki float64) float64 (istəniləni qaytarın - faktiki)

Bu yaxınlarda neyron şəbəkələrdən istifadə edərək kifayət qədər çoxlu həllər var: tətbiqlər, xidmətlər, proqramlar müxtəlif problemlərin həllini sürətləndirmək üçün bu növ şəbəkələrdən istifadə edir. Bəs neyron şəbəkə nədir? AIN.UA redaktorları bu məşhur texnologiyanın nə olduğunu, haradan gəldiyini və necə işlədiyini öyrənmək qərarına gəliblər.

Neyron şəbəkələri təzə texnoloji tendensiya adlandırmaq çətindir. Bu sahədə elmi fikrin ilk axtarışı 20-ci əsrin ortalarına təsadüf edir, dövrün qabaqcıl ağılları ana təbiətin təbii nailiyyətləri əsasında kompüter qurmağın gözəl olacağına qərar verdikdə. Xüsusilə, insan beyninin bəzi prinsiplərini kopyalayaraq.

Təbii biokompüterimizin texniki analoqunun yaradılması marağın artması və tənəzzül dövrlərindən keçərək asan olmadı. Bu, hər şeyin başladığı 1950-ci illərin texniki tərəqqi səviyyəsinin elmi fikrin uçuşu ilə ayaqlaşa bilməməsi ilə izah olunur: ilk neyron şəbəkələrinin dizaynı onlara tam potensialını ortaya qoymağa imkan vermirdi.

Və necə işləyir

Orta insan beyni təxminən 86 milyard neyrondan ibarətdir tək sistem məlumatların qəbulu, işlənməsi və sonrakı ötürülməsi üçün. Bu şəbəkədə hər bir neyron dendritlərin çəkildiyi mikroprosessor kimi fəaliyyət göstərir - impulsların qəbulu prosesləri. Alınan impulsları digər neyronlara ötürən bir akson şəklində bir çıxış da var.

Süni yaradılmış neyron şəbəkəsi (ANN) bioloji analoqun məlumat emalı prosesini təqlid edir və üç qrupa bölünmüş miniprosessorlar massividir:

  • Giriş nöqtələri (sensorlar) emal üçün məlumatların ANN-ə daxil olduğu neyronlardır.
  • Çıxış nöqtələri (reaktiv) ANN-in son nəticəni verdiyi neyronlardır.
  • Gizli neyronlar (assosiativ) - giriş və çıxış nöqtələri arasında yerləşən neyronların işləyən massivi.

İnformasiyanın emalı üzrə əsas iş gizli (assosiativ) neyronlar səviyyəsində baş verir. Onların massivi bir neçə təbəqədə sıralanır və onların sayı nə qədər çox olarsa, məlumatların işlənməsi bir o qədər dəqiq ANN istehsal edə bilir.

Perseptronun sxemi - ən sadə tək qatlı neyron şəbəkəsi

Proqramlaşdırıla bilməz

Neyroşəbəkələrin xarakterik xüsusiyyəti onların proqramlaşdırılmamış, öyrədilmiş olmasıdır. Buna əsasən, ANN-lər üç kateqoriyaya bölünür - öyrədilə bilən, öz-özünə öyrənən, həmçinin qarışıq tipli ANN.

Təlim keçmiş neyron şəbəkəsi, dünyanı öyrənən uşaq kimi, daim öz yaradıcısından diqqət və rəy tələb edir. Bununla işləyərək, tədqiqatçı ANN-ni məlumat massivi ilə təmin edir, bundan sonra ona əvvəlcədən müəyyən edilmiş cavabla problemi həll etməyi təklif edir. Hər iki həll variantı - ilkin olaraq düzgün və neyron şəbəkə tərəfindən təklif olunan - müqayisə edilir. Aralarındakı fərq icazə verilən səhv əmsalını keçərsə, tədqiqatçı neyron şəbəkəni tənzimləyir, bundan sonra öyrənmə prosesi bərpa olunur.

Özünü öyrənən ANN-lər dünyanı repetitorlar olmadan, öyrənmələri üçün verilmiş bir alqoritmdən istifadə edərək öyrənirlər. Tapşırığı aldıqdan sonra neyron şəbəkəsi özü cavab axtarır, buraxılmış səhvləri düzəldir və lazım gələrsə, yenidən başlamaq üçün assosiativ neyronlar zənciri boyunca sonuncu düzgün addıma "geri yuvarlanır".

Aşağıdakı video Super Mario-da INS-in 24 saatlıq öz-özünə öyrənmə sessiyasının nəticəsidir, burada ona səviyyəni keçərkən verilən maksimum bala çatmaq məqsədi verilmişdir. Nə qədər irəli getməyi bacarsa, yekun xal bir o qədər yüksək idi. Tədqiqatçı giriş kimi xəritənin elementlərindən və rəqiblərdən, çıxış kimi isə oyunçu üçün mövcud olan hərəkətlərdən istifadə etdi.

Ancaq eyni, bir qədər uyğunlaşdırılmış ANN başqa bir oyunun - Mario Kartın sükanı arxasında mənimsənilir.

Özünüzü avtopilotla avtomobillərin hərəkətini simulyasiya edən sadə bir şəbəkədən istifadə edərək özünüzü neyron şəbəkənin sınaqçısı rolunda sınaya bilərsiniz. Avtomobillər iki neyron şəbəkənin nəzarəti altında hərəkət edir və əsas qaydalara tabe olurlar - irəliləməyə davam edin və toqquşmadan qaçın.

Sizin vəzifəniz onlar üçün maneələr yaratmaq və avtopilotun onların öhdəsindən necə uğurla gəldiyini görmək, eləcə də şəhərinizin küçələrində Uber və rəqabət aparan şirkətlərin oxşar dronlarının görünməsinə zehni olaraq hazırlaşmaqdır.

Hər şeyin mərkəzində təbiətin yaratdığı alqoritmlər dayanır

Neyron şəbəkələri və onların təlimi haqqında danışarkən, öz evinizin həyətində sözün əsl mənasında görə biləcəyiniz qarışqa alqoritmi kimi təbii bir hadisəni qeyd etməmək olmaz.

Qarışqalar yuvadan və arxadan qida axtarışında hərəkət edərkən daim ən erqonomik yolu axtarır və müdaxilə halında öz marşrutunu dəyişmiş vəziyyətə uyğunlaşdırırlar. Hərəkət zamanı qarışqa arxada xüsusi bir feromonun izini buraxır. Sonrakı yemək ovçuları, bioloji "mayak" ilə doyuraraq, pionerin buraxdığı marşrutu izləyirlər.

Tutaq ki, qarışqaların yemə gedən yolunda sağ və ya sol tərəfdən yan keçə biləcəyi bir maneə var. Sol tərəfdə qida mənbəyinə olan məsafə daha qısadır. İlk təkrarlamalar zamanı qarışqaların maneənin hər iki tərəfindən keçməsinə baxmayaraq, qısa məsafəyə görə sol feromonun doyması daha tez baş verəcək.

Bunun mənası nədi? Sonrakı iterasiyalarda, ən erqonomik olan kimi, toplayıcı qarışqalar hərəkət etdikdə yalnız sol yol istifadə olunacaq. Eynilə, süni neyron şəbəkəsində öyrənmə prosesi baş verir.

Niyə ANN hələ də AI deyil

Neyron şəbəkəsi nə qədər “ağıllı” olsa da, o, süni intellekt deyil, verilənlərin təsnifatı tapşırıqları üçün alət olaraq qalır. Əlbəttə, biz heyrətə gələ bilərik ki, axtarış sisteminin müəyyən bir söz birləşməsini necə tanıyır və sonra onun əsasında bizə lazım olan pişiklərlə şəkilləri seçir, lakin bu, neyrokompüterin zehni fəaliyyətinin nəticəsi deyil, sadəcə bir neçə təsnifatçının sinerjisi.

İnsan beynindəki neyron şəbəkəsi, hər bir yaşlı nəslin gənc nəslin deqradasiyasına inadkar inamına baxmayaraq, ANN-in formal strukturundan daha mürəkkəb olaraq qalır, həmçinin çoxlu sayda və çox sayda əlaqə dəyişkənliyi səbəbindən. qaydaların və düsturların göstərdiyi qanunauyğunluqlardan kənar, qeyri-standart üsullarla problemləri həll etməyi bacarır.

Sadəcə olaraq, Makedoniyalı İskəndər Qordi düyününü indi də kəsə bilərdi. Neyron şəbəkə deyil.

AIN.UA daha əvvəl neyron şəbəkələr vasitəsilə insanları sifətin tanınmasından qorumaq üçün geyim çapı hazırlayan alman rəssam haqqında məlumat vermişdi.

Facebook-da xəbər almaq istəyirsinizsə, "bəyən" düyməsini basın

Süni neyron şəbəkəsi bir-biri ilə qarşılıqlı əlaqədə olan neyronlar toplusudur. Onlar məlumatları qəbul etmək, emal etmək və yaratmaq qabiliyyətinə malikdirlər. Bunu insan beyninin işi kimi təsəvvür etmək çətindir. Beynimizdəki neyroşəbəkə elə işləyir ki, siz indi bunu oxuyasınız: neyronlarımız hərfləri tanıyır və sözlərə çevirir.

Süni neyron şəbəkəsi beyin kimidir. Əvvəlcə bəzi mürəkkəb hesablama proseslərini sadələşdirmək üçün proqramlaşdırılmışdı. Bu gün neyron şəbəkələrin daha çox imkanları var. Onlardan bəziləri smartfonunuzdadır. Başqa bir hissə artıq öz verilənlər bazasında bu məqaləni açdığınızı qeyd edib. Bütün bunlar necə baş verir və niyə, oxuyun.

Hər şey necə başladı

İnsanlar həqiqətən insanın ağlının haradan gəldiyini və beynin necə işlədiyini anlamaq istəyirdilər. Ötən əsrin ortalarında kanadalı neyropsixoloq Donald Hebb bunu başa düşdü. Hebb neyronların bir-biri ilə qarşılıqlı təsirini tədqiq etdi, onların qruplara (elmi cəhətdən - ansambllara) birləşdirilməsi prinsipini araşdırdı və neyron şəbəkələrinin hazırlanması üçün elmdə ilk alqoritmi təklif etdi.

Bir neçə il sonra bir qrup amerikalı alim kvadrat formaları digər formalardan fərqləndirə bilən süni neyron şəbəkəsini modelləşdirdi.

Neyron şəbəkə necə işləyir?

Tədqiqatçılar müəyyən ediblər ki, neyron şəbəkəsi neyron təbəqələrinin məcmusudur və onların hər biri müəyyən bir meyarın tanınmasına cavabdehdir: forma, rəng, ölçü, faktura, səs, həcm və s. eksperimentlər və tonlarla hesablamalar ən sadə şəbəkə daha çox neyron təbəqəsi əlavə edildi. Onlar növbə ilə işləyirlər. Məsələn, birincisi kvadratın kvadrat olub-olmadığını müəyyənləşdirir, ikincisi kvadratın qırmızı olub olmadığını başa düşür, üçüncüsü kvadratın ölçüsünü hesablayır və s. Kvadratlar deyil, qırmızı olmayan və uyğun olmayan ölçülü fiqurlar yeni neyron qruplarına düşür və onlar tərəfindən araşdırılır.

Neyron şəbəkələr nədir və onlar nə edə bilər?

Alimlər mürəkkəb şəkillər, videolar, mətnlər və nitq arasında fərq qoymağı öyrənmələri üçün neyron şəbəkələri yaradıblar. Bu gün neyron şəbəkələrin bir çox növləri var. Onlar memarlıqdan asılı olaraq təsnif edilir - məlumat parametrləri dəstləri və bu parametrlərin çəkisi, müəyyən bir prioritet. Aşağıda onlardan bəziləri var.

Konvolyusiya neyron şəbəkələri

Neyronlar qruplara bölünür, hər qrup ona verilən xarakteristikanı hesablayır. 1993-cü ildə fransız alimi Jan LeKun dünyaya kağız üzərində yazılan rəqəmləri əl ilə tez və dəqiq tanıya bilən ilk konvolyusiya neyron şəbəkəsi olan LeNet 1-i göstərdi. Özünüz baxın:

Bu gün konvolyusiya neyron şəbəkələri əsasən multimedia məqsədləri üçün istifadə olunur: onlar qrafika, audio və video ilə işləyirlər.

Təkrarlanan neyron şəbəkələri

Neyronlar ardıcıl olaraq məlumatları xatırlayır və bu məlumatlara əsaslanaraq gələcək fəaliyyətlər qururlar. 1997-ci ildə alman alimləri ən sadə təkrarlanan şəbəkələri uzun qısamüddətli yaddaşa malik şəbəkələrə dəyişdirdilər. Onların əsasında daha sonra idarə olunan təkrarlanan neyronları olan şəbəkələr hazırlanmışdır.

Bu gün belə şəbəkələrin köməyi ilə mətnlər yazılır və tərcümə olunur, insanla mənalı dialoqlar aparan botlar proqramlaşdırılır, səhifələr və proqramlar üçün kodlar yaradılır.

Bu cür neyron şəbəkələrdən istifadə məlumatları təhlil etmək və yaratmaq, verilənlər bazalarını tərtib etmək və hətta proqnozlar vermək qabiliyyətidir.

2015-ci ildə SwiftKey idarə olunan neyronlarla təkrarlanan neyron şəbəkəsi ilə işləyən dünyada ilk klaviaturanı buraxdı. Daha sonra sistem daxil edilən son sözlərə əsasən yazım prosesində göstərişlər verdi. Keçən il tərtibatçılar yazılan mətnin kontekstini öyrənmək üçün neyron şəbəkəni öyrətdi və göstərişlər mənalı və faydalı oldu:

Birləşdirilmiş neyron şəbəkələri (konvolyusiya + təkrarlanan)

Belə neyron şəbəkələri təsvirdə olanı başa düşməyə və onu təsvir etməyə qadirdir. Və əksinə: təsvirə uyğun olaraq şəkillər çəkin. Ən bariz nümunəni neyron şəbəkəsi ilə Amsterdam ətrafında gəzintiyə çıxaran Kyle MacDonald nümayiş etdirib. Şəbəkə qarşısında nə olduğunu dərhal müəyyən etdi. Və demək olar ki, həmişə dəqiq:

Neyron şəbəkələri daim öz-özünə öyrənir.

Bu proses vasitəsilə:

1. Skype 10 dil üçün sinxron tərcümə imkanını təqdim edib. Onların arasında bir anlıq rus və yapon var - dünyanın ən çətinlərindən biri. Əlbəttə ki, tərcümənin keyfiyyətinin ciddi təkmilləşdirməyə ehtiyacı var, amma indi də yaponiyalı həmkarlarınızla rus dilində ünsiyyət qurmağınız və başa düşüləcəyinizə əmin olmağın özü ruhlandırıcıdır.

2. Yandex neyron şəbəkələri əsasında iki axtarış alqoritmi yaratdı: Palex və Korolev. Birincisi, aşağı tezlikli sorğular üçün ən uyğun saytları tapmağa kömək etdi. “Palekh” səhifələrin başlıqlarını tədqiq etmiş və onların mənasını sorğuların mənası ilə müqayisə etmişdir. Palexin əsasında Korolev meydana çıxdı. Bu alqoritm yalnız başlığı deyil, həm də səhifənin bütün mətn məzmununu qiymətləndirir. Axtarış daha dəqiqləşir və sayt sahibləri səhifələrin məzmununa daha ağıllı yanaşmağa başlayırlar.

3. Yandex-dən SEO mütəxəssislərinin həmkarları musiqi neyron şəbəkəsi yaradıblar: o, şeirlər yazır və musiqi yazır. Neyroqrup simvolik olaraq Neurona adlanır və onların artıq ilk albomları var:

4. Google Gələnlər qutusu mesaja cavab vermək üçün neyron şəbəkələrdən istifadə edir. Texnologiyanın inkişafı tam sürətlə davam edir və bu gün şəbəkə artıq yazışmaları öyrənir və yaradır mümkün variantlar cavab. Yazmağa vaxt itirə bilməzsiniz və bəzi vacib razılaşmaları unutmaqdan qorxmamalısınız.

5. YouTube videoları sıralamaq üçün neyron şəbəkələrdən istifadə edir və eyni anda iki prinsipə əsasən: biri neyron şəbəkəsi videoları və onlara tamaşaçı reaksiyalarını öyrənir, digəri istifadəçilər və onların seçimləri ilə bağlı araşdırma aparır. Buna görə YouTube tövsiyələri həmişə mövzudadır.

6. Facebook jarqonları başa düşən və söhbətləri ədəbsiz sözlərdən təmizləyən ünsiyyət proqramı olan DeepText AI üzərində fəal işləyir.

7. Neyron şəbəkələrdə qurulmuş Prisma və Fabby kimi proqramlar şəkillər və videolar yaradır:

Colorize qara və ağ fotoşəkillərin rəngini bərpa edir (sürpriz nənə!).

MakeUp Plus real brendlərdən qızlar üçün mükəmməl pomada seçir: Bobbi Brown, Clinique, Lancome və YSL artıq biznesdədir.

Apple və Microsoft öz neyron Siri və Contanalarını daim təkmilləşdirirlər.

Süni neyron şəbəkəsi

Hələlik onlar yalnız əmrlərimizi yerinə yetirirlər, lakin yaxın gələcəkdə onlar təşəbbüs göstərməyə başlayacaqlar: tövsiyələr vermək və istəklərimizi qabaqcadan görmək.

Və gələcəkdə bizi daha nələr gözləyir?

Özünü öyrənən neyron şəbəkələri insanları əvəz edə bilər: onlar kopirayterlər və korrektorlarla başlayacaqlar. Artıq robotlar mənalı və səhvsiz mətnlər yaradır. Və bunu insanlardan daha sürətli edirlər. Onlar zəng mərkəzlərinin əməkdaşları, texniki dəstək, moderatorlar və sosial şəbəkələrdə ictimaiyyətin administratorları ilə davam edəcəklər. Neyron şəbəkələri artıq skripti öyrənməyi və onu səsinizlə necə oynatmağı bilir. Bəs digər sahələrdə?

Kənd təsərrüfatı sektoru

Neyron şəbəkə xüsusi avadanlıqda həyata keçiriləcək. Kombaynlar avtopilot edəcək, bitkiləri skan edəcək və torpağı öyrənəcək, məlumatları neyron şəbəkəsinə ötürəcək. O qərar verəcək - zərərvericilərdən suvarmaq, gübrələmək və ya püskürtmək. Bir neçə onlarla işçinin əvəzinə ən çoxu iki mütəxəssis tələb olunacaq: nəzarətçi və texniki.

Dərman

“Microsoft” hazırda xərçəngin müalicəsi üzərində fəal işləyir. Alimlər bioproqramlaşdırma ilə məşğuldurlar - onlar şişlərin yaranması və inkişafı prosesini rəqəmsallaşdırmağa çalışırlar. Hər şey yoluna düşəndə ​​proqramçılar belə bir prosesin qarşısını almağın yolunu tapa biləcəklər, bənzətmə ilə dərman yaradılacaq.

Marketinq

Marketinq yüksək dərəcədə fərdiləşdirilmişdir. Onsuz da neyron şəbəkələr saniyələr ərzində hansı istifadəçinin, hansı məzmunun və hansı qiymətə göstəriləcəyini müəyyən edə bilir. Gələcəkdə marketoloqun prosesdə iştirakı minimuma endiriləcək: neyron şəbəkələr istifadəçi davranışı məlumatlarına əsaslanaraq sorğuları proqnozlaşdıracaq, bazarı skan edəcək və insanın satın almağı düşündüyü vaxta qədər ən uyğun təklifləri verəcək.

Elektron ticarət

Elektron ticarət hər yerdə tətbiq olunacaq. Artıq linkdən istifadə edərək onlayn mağazaya getməyə ehtiyac yoxdur: gördüyünüz hər şeyi bir kliklə ala bilərsiniz.

Məsələn, siz bu yazını bir neçə ildən sonra oxuyursunuz. Siz MakeUp Plus proqramından ekrandakı pomadanı çox bəyənirsiniz (yuxarıya bax). Bunun üzərinə klikləyərək birbaşa səbətə gedirsiniz. Və ya haqqında bir video izləyin ən sonuncu model Hololens (Qarışıq Reallıq Eynəyi) və birbaşa YouTube-dan sifariş verin.

Demək olar ki, hər sahədə neyroşəbəkələrin strukturu, maşın öyrənməsi və süni intellekt sistemləri haqqında biliyi və ya ən azı anlayışı olan mütəxəssislər qiymətləndiriləcək. Biz robotlarla yan-yana mövcud olacağıq. Və onlar haqqında nə qədər çox bilsək, bir o qədər sakit yaşayacağıq.

P.S. Zinaida Falls şeir yazan Yandex neyron şəbəkəsidir. Mayakovskidən öyrənərək maşının yazdığı işi qiymətləndirin (imla və durğu işarələri qorunub):

« Bu»

Bu
sadəcə
bir şey
gələcəkdə
və güc
o şəxs
hər şey var ya yox
ətrafda qan var
sövdələşmə
kökəlmək
şöhrət
torpaq
dimdiyində çatla

Təsirli, elə deyilmi?

Butaforlar üçün neyron şəbəkələri

Bu gün orda-burda hər künc-bucaqda neyron şəbəkələrin faydaları haqqında qışqırırlar. Ancaq bunun nə olduğunu, yalnız bir neçəsi həqiqətən başa düşür. Əgər izahat üçün Vikipediyaya müraciət etsəniz, orada tikilmiş elmi terminlər və təriflərdən ibarət qalaların yüksəkliyindən başınız fırlanacaq. Əgər siz gen mühəndisliyindən uzaqsınızsa və universitet dərsliklərinin qarmaqarışıq quru dili yalnız çaşqınlıq və heç bir fikir yaratmırsa, o zaman neyron şəbəkələri problemini birlikdə anlamağa çalışaq.

Əgər insan beyni neyronlardan ibarətdirsə, onda biz şərti olaraq razılaşacağıq ki, elektron neyron çoxlu giriş və bir çıxışı olan bir növ xəyali qutudur.

Neyronun daxili alqoritmi alınan məlumatın işlənməsi və təhlili və onun vahid faydalı bilik fonduna çevrilməsi prosedurunu müəyyən edir. Giriş və çıxışların nə qədər yaxşı işləməsindən asılı olaraq, bütün sistem ya tez düşünür, ya da əksinə, yavaşlaya bilər.

Əhəmiyyətli

Əsas kodu yazarkən, barmaqlarınızla hərəkətlərinizi hərfi mənada izah etməlisiniz. Məsələn, şəkillərlə işləsək, ilk mərhələdə bizim üçün dəyər onun ölçüsü və sinfi olacaqdır. Birinci xarakteristika bizə girişlərin sayını deyirsə, ikincisi neyron şəbəkənin özü məlumatla məşğul olmağa kömək edəcək.

Neyron şəbəkələri: bu nədir və necə işləyir

İdeal olaraq, ilkin məlumatları yüklədikdən və sinif topologiyasını müqayisə etdikdən sonra neyron şəbəkə daha sonra təsnif edə biləcəkdir. yeni məlumatlar. Tutaq ki, biz 3x5 piksel ölçüsündə şəkil yükləməyə qərar verdik. Sadə arifmetika bizə 3*5=15 girişin olacağını söyləyəcək. Və təsnifat özü çıxışların ümumi sayını təyin edəcək, yəni. neyronlar. Başqa bir misal: neyron şəbəkəsi “C” hərfini tanımalıdır. Göstərilən hədd hərflə tam uyğundur, bunun üçün girişlərin sayı təsvirin ölçüsünə bərabər olan bir neyron tələb olunur.

İstənilən təlimdə olduğu kimi, şagird səhv cavaba görə cəzalandırılmalıdır, amma doğru cavab üçün heç nə verməyəcəyik. Proqram düzgün cavabı Yanlış kimi qəbul edərsə, o zaman hər sinapsda giriş çəkisini artırırıq. Əksinə, səhv bir nəticə ilə, proqram nəticəni müsbət və ya Doğru hesab edərsə, onda biz neyronun hər bir girişindən çəki çıxarırıq. Bizə lazım olan simvolu tanımaqla öyrənməyə başlamaq daha məntiqlidir. İlk nəticə səhv olacaq, lakin kodu bir az düzəldərək, proqram sonrakı iş zamanı düzgün işləyəcəkdir. Neyron şəbəkəsi üçün kodun qurulması alqoritminin verilmiş nümunəsi parsetron adlanır.

neyron şəbəkələri

Butaforlar üçün neyron şəbəkələri

Bu gün orda-burda hər künc-bucaqda neyron şəbəkələrin faydaları haqqında qışqırırlar. Ancaq bunun nə olduğunu, yalnız bir neçəsi həqiqətən başa düşür.

Öz neyron şəbəkənizi yazmaq: addım-addım təlimat

Əgər izahat üçün Vikipediyaya müraciət etsəniz, orada tikilmiş elmi terminlər və təriflərdən ibarət qalaların yüksəkliyindən başınız fırlanacaq. Əgər siz gen mühəndisliyindən uzaqsınızsa və universitet dərsliklərinin qarmaqarışıq quru dili yalnız çaşqınlıq və heç bir fikir yaratmırsa, o zaman neyron şəbəkələri problemini birlikdə anlamağa çalışaq.

Problemi başa düşmək üçün tamamilə səthdə olan kök səbəbini tapmaq lazımdır. Sarah Connor-u xatırlayaraq, biz titrəyərək başa düşürük ki, bir vaxtlar kompüter inkişafının qabaqcılları olan Warren McCulloch və Walter Pitts ilk Süni İntellekt yaratmaq kimi eqoist məqsəd güdürdülər.

Neyron şəbəkələri öz-özünə öyrənmə sisteminin elektron prototipidir. Uşaq kimi neyron şəbəkəsi də informasiyanı mənimsəyir, çeynəyir, təcrübə toplayır və öyrənir. Öyrənmə prosesində belə bir şəbəkə inkişaf edir, böyüyür və özü nəticə çıxara və təkbaşına qərar verə bilər.

Əgər insan beyni neyronlardan ibarətdirsə, onda biz şərti olaraq razılaşacağıq ki, elektron neyron çoxlu giriş və bir çıxışı olan bir növ xəyali qutudur. Neyronun daxili alqoritmi alınan məlumatın işlənməsi və təhlili və onun vahid faydalı bilik fonduna çevrilməsi prosedurunu müəyyən edir. Giriş və çıxışların nə qədər yaxşı işləməsindən asılı olaraq, bütün sistem ya tez düşünür, ya da əksinə, yavaşlaya bilər.

Əhəmiyyətli: Bir qayda olaraq, neyron şəbəkələrdə analoq informasiyadan istifadə olunur.

Təkrar edirik ki, çoxlu məlumat giriş axınları ola bilər (elmi dillə desək, ilkin informasiya ilə “neyronumuzun” bu əlaqəsi sinaps adlanır) və onların hamısı fərqli xarakter daşıyır və qeyri-bərabər əhəmiyyətə malikdir. Məsələn, insan ətraf aləmi görmə, toxunma və qoxu orqanları vasitəsilə dərk edir. Görmənin qoxudan daha vacib olması məntiqlidir. Müxtəlif həyat vəziyyətlərinə əsaslanaraq müəyyən hiss orqanlarından istifadə edirik: tam qaranlıqda toxunma və eşitmə ön plana çıxır. Müxtəlif vəziyyətlərdə eyni analogiya ilə neyron şəbəkələrində sinapslar fərqli əhəmiyyətə malik olacaq, bu, adətən əlaqənin çəkisi ilə işarələnir. Kod yazarkən məlumatın ötürülməsi üçün minimum hədd qoyulur. Bağlantının çəkisi göstərilən dəyərdən yüksəkdirsə, neyron tərəfindən yoxlamanın nəticəsi müsbətdir (və ikili sistemdə birinə bərabərdir), azdırsa, mənfi olur. Məntiqlidir ki, çubuq nə qədər yüksək olsa, neyron şəbəkənin işi bir o qədər dəqiq olacaq, lakin bir o qədər çox vaxt aparacaq.

Neyron şəbəkənin düzgün işləməsi üçün onu öyrətmək üçün vaxt sərf etməlisiniz - sadə proqramlaşdırıla bilən alqoritmlərdən əsas fərq budur. Kiçik bir uşaq kimi, neyroşəbəkə ilkin məlumat bazasına ehtiyac duyur, lakin ilkin kod düzgün yazılsa, o zaman neyron şəbəkənin özü nəinki mövcud məlumatlardan düzgün seçim edə, həm də müstəqil fərziyyələr qura biləcək.

Əsas kodu yazarkən, barmaqlarınızla hərəkətlərinizi hərfi mənada izah etməlisiniz. Məsələn, şəkillərlə işləsək, ilk mərhələdə bizim üçün dəyər onun ölçüsü və sinfi olacaqdır. Birinci xarakteristika bizə girişlərin sayını deyirsə, ikincisi neyron şəbəkənin özü məlumatla məşğul olmağa kömək edəcək. İdeal olaraq, ilkin məlumatları yüklədikdən və siniflərin topologiyasını müqayisə etdikdən sonra neyron şəbəkə yeni məlumatın özünü təsnif edə biləcək. Tutaq ki, biz 3x5 piksel ölçüsündə şəkil yükləməyə qərar verdik. Sadə arifmetika bizə 3*5=15 girişin olacağını söyləyəcək. Və təsnifat özü çıxışların ümumi sayını təyin edəcək, yəni. neyronlar. Başqa bir misal: neyron şəbəkəsi “C” hərfini tanımalıdır. Göstərilən hədd hərflə tam uyğundur, bunun üçün girişlərin sayı təsvirin ölçüsünə bərabər olan bir neyron tələb olunur.

Deyək ki, ölçü eyni 3x5 piksel olacaq. Proqramı hərf və ya rəqəmlərdən ibarət müxtəlif şəkillərlə qidalandıraraq, ona bizə lazım olan personajın obrazını təyin etməyi öyrədəcəyik.

İstənilən təlimdə olduğu kimi, şagird səhv cavaba görə cəzalandırılmalıdır, amma doğru cavab üçün heç nə verməyəcəyik. Proqram düzgün cavabı Yanlış kimi qəbul edərsə, o zaman hər sinapsda giriş çəkisini artırırıq. Əksinə, səhv bir nəticə ilə, proqram nəticəni müsbət və ya Doğru hesab edərsə, onda biz neyronun hər bir girişindən çəki çıxarırıq. Bizə lazım olan simvolu tanımaqla öyrənməyə başlamaq daha məntiqlidir. İlk nəticə səhv olacaq, lakin kodu bir az düzəldərək, proqram sonrakı iş zamanı düzgün işləyəcəkdir.

Neyron şəbəkəsi üçün kodun qurulması alqoritminin verilmiş nümunəsi parsetron adlanır.

Yanlış məlumatların qaytarılması, onların təhlili və şəbəkənin özünün məntiqi nəticələri ilə neyron şəbəkələrinin işləməsi üçün daha mürəkkəb variantlar da var. Məsələn, gələcəyin onlayn proqnozlaşdırıcısı kifayət qədər proqramlaşdırılmış neyron şəbəkəsidir. Belə proqramlar həm müəllimlə, həm də müəllimsiz öyrənə bilir və adaptiv rezonans adlanır. Onların mahiyyəti ondan ibarətdir ki, neyronların artıq hansı növ məlumatı və hansı formada almaq istədikləri ilə bağlı öz fikirləri var. Gözləmə ilə reallıq arasında neyronların sayıqlığı adlanan nazik hədd var ki, bu da şəbəkəyə daxil olan məlumatları düzgün təsnif etməyə və bir pikseli qaçırmamağa kömək edir. AR neyroşəbəkəsinin özəlliyi ondan ibarətdir ki, o, əvvəldən özü öyrənir, müstəqil olaraq neyron sayıqlığının həddini müəyyən edir. Bu da öz növbəsində məlumatların təsnifatında müəyyən rol oynayır: şəbəkə nə qədər ayıq olsa, bir o qədər vasvasılıq var.

Biz neyroşəbəkələrin nə olduğu haqqında əsas bilikləri əldə etdik. İndi alınan məlumatları ümumiləşdirməyə çalışaq. Belə ki, neyron şəbəkələri insan təfəkkürünün elektron prototipidir. Onlar elektron neyronlardan və sinapslardan ibarətdir - neyrondan giriş və çıxışda məlumat axınları. Neyroşəbəkələr müəllimlə (ilkin məlumatı yükləyən proqramçı) və ya müstəqil olaraq (eyni proqramçı tərəfindən müəyyən edilən, alınan məlumatdan fərziyyələr və gözləntilər əsasında) öyrənmə prinsipinə əsasən proqramlaşdırılır. Neyroşəbəkənin köməyi ilə siz istənilən sistem yarada bilərsiniz: piksel təsvirlərində sadə nümunə aşkarlanmasından tutmuş psixodiaqnostikaya və iqtisadi analitikaya qədər.

neyron şəbəkələri,
məlumatların təhlili üsulları:
tədqiqatdan inkişafa və tətbiqə qədər

ev
Xidmətlər
Neyron şəbəkələri
əsas ideyalar
imkanlar
üstünlükləri

Necə istifadə etməli
proqramlaşdırma
həllin dəqiqliyi
NS və AI
Proqramlar
Məqalələr
Bloq
Müəllif / əlaqə haqqında