Նեյրոնային ցանցեր և խորը ուսուցում

Նեյրոնային ցանցեր և խորը ուսուցում

Ինչի՞ մասին է գիրքը

Խնդիրների և վարժությունների մասին

Ձեռագիր թվանշանների ճանաչում՝ օգտագործելով նեյրոնային ցանցեր

Ինչպե՞ս է աշխատում հետադարձ տարածումը

Նեյրոնային ցանցերի ուսուցման բարելավումը

Տեսողական ապացույց այն մասին, որ նեյրոնային ֆունկցիաները կարող են մոտարկել կամայական ֆունկցիա

Ինչու՞մն է կայանում նեյրոնային ցանցերի մարզման բարդությունը

Խորը ուսուցում

Հավելված: Արդյո՞ք գոյություն ունի ինտելեկտի պարզ ալգորիթմ

Երախտագիտություն

Հաճախ տրվող հարցեր


Հովանավորներ


Ռեսուրսներ

Նեյրոնային ցանցերն իրենցից ներկայացնում են ծրագրավորման հատուկ մոտեցում: Ըստ ծրագրավորման տրադիցիոն մոդելի ընդունված է թելադրել համակարգչին լուծման քայլերը` բաժանելով մեծ խնդիրը բազմաթիվ փոքր, բայց հստակ սահմանված ենթախնդիրների, որոնք համակարգիչը կարող է լուծել: Դրան հակառակ` նեյրոնային ցանցերի դեպքում համակարգիչը խնդիրը լուծելու հստակ հրահանգներ չի ստանում: Փոխարենը, այն սովորում է դիտարկվող տվյալներից` ինքնուրույն հանգելով լուծմանը:

Տվյալներից ավտոմատ կերպով «սովորելը» բավականին խոստումնալից է հնչում: Սակայն մինչ 2006 թ. բացի որոշակի խնդիրներից, հայտնի չէր, թե ինչպես կարելի է «սովորեցնել» ցանցին, որպեսզի այն գերազանցեր տրադիցիոնալ մեթոդներին: Այն ինչ փոխվեց 2006-ին դա այսպես կոչված խորը ցանցերը մարզելու տեխնիկաների հայտնագործումն էր: Այդ տեխնիկաներն այժմ հայտնի են որպես խորը ուսուցում: Դրանք ժամանակի ընթացքում կատարելագործվել են, և այսօր խորը ուսուցումն ու խորը նեյրոնային ցանցերը տպավորիչ արդյունքներ են ցուցադրում այնպիսի խնդիրների վրա, ինչպիսիք են համակարգչային տեսողությունը (computer vision), խոսքի ճանաչումը (speech recognition) և բնական լեզվի մշակումը (natural language processing): Այդ լուծումները հսկայական ծավալներով գործարկվում են այնպիսի ընկերությունների կողմից, ինչպիսիք են Գուգլը, Մայքրոսոֆթը, Ֆեյսբուքը և այլոք:

Այս գրքի նպատակն է օգնել ընթերցողին յուրացնել նեյրոնային ցանցերի հիմքային գաղափարները, ներառյալ խորը ուսուցման ժամանակակից մեթոդները: Գրքի վրա աշխատելով, ընթերցողը կգրի կոդ, որը օգտագործում է նեյրոնային ցանցեր և խորը ուսուցում բարդ օրինաչափությունների ճանաչման (pattern recognition) լուծման համար: Ընթերցողը կունենա նաև հիմքային գիտելիքներ իրեն հետաքրքրող խնդիրներին լուծումներ առաջարկելու համար` օգտագործելով նեյրոնային ցանցեր և խորը ուսուցում:

Սկզբունքային մոտեցում

Գրքի հիմքում ընկած համոզմունքներից մեկն այն է, որ լավ է որակյալ հասկանալ նեյրոնային ցանցերի և խորը ուսուցման հիմքային սկզբունքները քան պարզապես տեղյակ լինել բազմաթիվ գաղափարների մասին մակերեսորեն: Հիմքային գաղափարների լավ ըմբռնելու դեպքում ընթերցողն ավելի արագ կարող է հասկանալ նոր նյութերը:

Դա նշանակում, է որ գիրքը նախատեսված չէ սովորեցնելու, թե ինչպես օգտագործել նեյրոնային ցանցերի ինչ-որ գրադարան: Եթե ձեր ցանկությունն է սովորել գրադարաններից մեկը, ապա այս գիրքը նպատակահարմար չէ դա իրականացնելու համար: Սակայն կարևոր է գիտակցել, որ գուցե դա կօգնի արագ խնդիրը լուծել, սակայն հասկանալու համար թե իրոք ինչ է տեղի ունենում նեյրոնային ցանցերում բավական չէ սովորել որևէ հայտնի գրադարան: Դուք կարիք ունեք ձեռք բերելու հիմնավոր գիտելիք թե ինչպես են աշխատում նեյրոնային ցանցերը: Տեխնոլոգիաները ժամանակավոր բնույթ ունեն և անընդհատ նորերով են փոխարինվում են, սակայն գիտելիքը մնում է:

Պրակտիկ մոտեցում

Մենք սովորելու ենք նեյրոնային ցանցերի և խորը ուսուցման հիմքային սկզբունքները լուծելով հստակ խնդիր, այն է` սովորեցնել համակարգչին ճանաչել ձեռագիր թվանշանները: Այս խնդիրը բավականին դժվար է լուծել` օգտագործելով ծրագրավորման տրադիցիոնալ մոտեցումները: Այնուամենայնիվ, մենք կտեսնենք, որ այն կարելի է լուծել՝ օգտագործելով պարզ նեյրոնային ցանց ընդամենը մի քանի տասնյակ տող կոդով` առանց գրադարան օգտագործելու: Ավելին, մենք մի քանի իտերացիաների ընթացքում կբարելավենք ծրագիրը՝ օգտագործելով նեյրոնային ցանցերի և խորը ուսուցման հիմքային գաղափարները:

Այսպիսի մոտեցումը ենթադրում է, որ դուք պետք է ունենաք ծրագրավորման փորձ, որպեսզի կարողանաք գիրքը կարդալ: Սակայն պրոֆեսիոնալ ծրագրավորող լինելը անհրաժեշտ չէ: Կոդը գրված է Python ծրագրավորման լեզվով (տարբերակ 2.7), ինչը հեշտ կլինի հասկանալ անգամ եթե դուք Python-ով չեք ծրագրավորում: Գրքում միասին կկառուցենք փոքրիկ նեյրոնային ցանցերի գրադարան, որը դուք կարող եք օգտագործել փորձեր կատարելու և գիտելիքները խորացնելու համար: Ամբողջ կոդը կարելի է ներբեռնել այստեղից:

Հարկ եմ համարում նաև նշել, որ գիրքը կարդալու համար մաթեմատիկական գիտելիքի մակարդակը կարող է լինել համեստ: Գրքում տեղ գտած մաթեմատիկայի բաժինները իրենցից ներկայացնում են տարրական հանրահաշիվ և ֆունկցիաների գրաֆիկներ, ինչը սպասվում է, որ բոլորը կհասկանան: Որոշ տեղերում ավելի բարդ մաթեմատիկա է օգտագործվում, սակայն գրքի կառուցվածքը թույլ է տալիս շարունակել կարդալ` բաց թողնելով այդ հատվածները: Գլուխը, որում օգտագործում է համեմատաբար ծանր մաթեմատիկա, դա 2րդ գլուխն է, որը պահանջում է գիտելիք մեկից ավել փոփոխականների ֆունկցիաների մաթեմատիկական անալիզ և գծային հանրահաշիվ: Եթե դրանք ծանոթ չեն, ապա 2րդ գլուխը սկսվում է նրանով թե ինչպես վարվել մաթեմատիկայի բաժինների հետ: Եթե դուք կհամարեք դա շատ ծանր առաջ շարժվելու համար, ապա խորհուրդ է տրվում բաց թողնել այդ գլուխը մինչև ամփոփում: