Արհեստական բանականությունը՝ որպես գաղափար, հայտնի է մարդկանց 20–րդ դարասկզբից ի վեր, օրինակ՝ հայտնի չեխ գրող Կարլ Չապեկի «Ռոսսոմի ունիվերսալ ռոբոտներ» գիտաֆանտաստիկ ստեղծագործության մեջ խոսվում է ունիվերսալ ռոբոտ Ռոսսոմի մասին, որն ըստ էության արհեստական բանականություն կրողի նախատիպն էր։
  Մասնավորապես «արհեստական բանականություն» տերմինն օգտագործվում է նկարագրելու համար այն մեքենաները, որոնք նմանակում են մարդու գիտակցական գործառույթները, ինչպիսիք են՝ սովորելու կամ խնդիրներ լուծելու ունակությունները։
   Արհեստական բանականություն օգտագործող հավելվածները բազմազան են, դրանք ներառում են ինքնակառավարվող մեքենաներ, անօդաչու թռչող սարքեր, ծրագրեր, որոնք ապացուցում են մաթեմատիկական բարդ թեորեմները, որոնման համակարգերը (օրինակ՝ Google), ծրագրային օգնականները (օրինակ՝ Siri, Bixby), խաղեր խաղացող ծրագրերը (օրինակ՝ Go, շախ411ԻՆՖՈՐՄԱՏԻԿԱ մատ), պատկերներ ճանաչող ծրագրերը։
   Վերջինս աշխատում է նեյրոնային ցանցերի օգնությամբ։
  Մարդու տեսողական համակարգը աշխարհի հրաշալիքներից է։
  Եկեք ուսումնասիրենք ձեռագրով գրված հետեւյալ թվերի հաջորդականությունը. Մարդկանց մեծ մասը առանց դժվարության կհասկանա այս թվերը որպես 504192։
   Մարդու ուղեղի 2 կիսագնդերում տեղակայված է գլխավոր տեսողական սեգմենտը՝ V1, որը պարունակում է 140 միլիոն նեյրոններ, որոնք կապված են միմյանց հետ ավելի քան 10 միլիարդ կապերով (networks)։
   Բայց տեսողական ամբողջ համակարգը բաղկացած է մի քանի այդպիսի սեգմենտներից։
   Այսպիսով, ձեռագրեր հասկանալը այդքան էլ հեշտ չէ։
   Համակարգչում պատկերների ճանաչման ծրագիր ստանալու համար կարելի է օգտվել մարդու ուղեղի տեսողական համակարգի կառուցվածքից։
   Համակարգչում ձեռագրերի ճանաչումը կատարվում է նեյրոնային ցանցերի օգնությամբ։
   Այն իր հերթին մի համակարգ է, որը սովորում է հսկայական տվյալների բազայի վրա։
  Համակարգչում արհեստական նեյրոն է Ֆրանկ Ռոսենբլատի կողմից 1950 թվականներին ստեղծված նեյրոնը, որը կոչվում էր «պերսեպտրոն»։
   Պերսեպտրոնը ընդունում է մի քանի բինար մուտքային արժեքներ (x1, x2,...) եւ ստեղծում է մեկ ելքային բինար արժեք։
  Ելք նկ.1 Պերսեպտրոնի մոդելը։
  Ռոսենբլատը ներկայացնում էր պարզ կանոն հաշվելու համար ելքային արժեքը։
   Դրա համար նա ներմուծեց կշիռներ՝ w1, w2,... իրական թվերը։
   Նեյրոնների ստեղծած երկու արդյունքները՝ 0 կամ 1, որոշվում են կշիռների գումարի տեսքով՝ ∑ 412ԻՆՖՈՐՄԱՏԻԿԱ 0, եթե ∑ , որտեղ k-ն որեւէ իրական թիվ է։
  1, եթե ∑ Սա այն հիմնական մաթեմատիկական մոդելն է, որն օգտագործվում է նեյրոնային ցանցերում։
   Մեկ այլ կերպով կարելի է մտածել, որ այս բանաձեւը գործիք է, որը որոշումներ է կայացնում հաշվի առնելով փաստերը։
   Բանաձեւը լավ հասկանալու համար դիտարկենք հետեւյալ օրինակը։
   Ենթադրենք, մոտակա օրերին բացօդյա համերգ է տեղի ունենալու, եւ քո այնտեղ լինելը կախված է հետեւյալ 3 պայմաններից. 1. եղանակից, 2. ծնողների թույլտվությունից, 3. հասարակական տրանսպորտի հասանելիությունից։
  Կարող ենք այս 3 գործոնները ներկայացնել x1, x2 եւ x3 բինար փոփոխականների տեսքով։
   Օրինակ՝ եթե եղանակը լավը լինի, x1=1, հակառակ դեպքում` x1=0։
   Նույն կերպ x2=1, եթե ծնողների թույլտվությունը ստանաս, եւ x2=0` հակառակ դեպքում։
   Նույն բանը տեղի ունի x3-ի համար։
  Իսկ հիմա եկեք պատկերացնենք, որ դու շատ ես կարեւորում ծնողների թույլտվությունը համերգ գնալիս։
   Այսպիսով, կշիռները կարելի է ընտրել հետեւյալ կերպ՝ w1=2՝ եղանակի համար, w2=6` թույլտվության համար եւ w3=2` երրորդ պայմանի համար։
   Սա վկայում է այն բանի մասին, որ դու կարեւորում ես թույլտվությունը ավելի շատ, քան եղանակը եւ հասարակական տրանսպորտի հասանելիությունը։
   Եվ վերջապես, եթե ընտրենք k=5 գործակիցը, այս փոփոխականների ընտրությամբ կստանանք որոշումներ կայացնող հետեւյալ մոդելը, որի արդյունքը կլինի 1՝ կապված ծնողների դրական թույլտվության հետ, եւ 0՝ հակառակ դեպքում։
   Սակայն, արդյունքը չի փոխվի մնացած երկու պայմանների առկայության դեպքում։
   Նկատենք, որ, չնայած 3 պայմանների առկայությանը, ծնողների թույլտվության պայմանը ամենաազդեցիկն է համերգ գնալու որոշման համար։
   Վերոնիշյալ օրինակը որոշումներ կայացնելու մի մոդել է, որը հաշվի է առնում տարբեր պայմաններ։
   Համակարգչում խնդիրներ լուծելիս օգտագործվում են մի քանի հազար այսպիսի որոշում կայացնող մոդելներ (նեյրոններ), որի որոշում կայացնելը կախված է իրեն նախորդող շերտերում նեյրոնների կայացրած որոշումներից (նկ. 2)։
  Արդյունքը = 413ԻՆՖՈՐՄԱՏԻԿԱ Մուտք Ելք Նկ. 2 Որոշում կայացնելու մոդել։
  Ենթադրենք, մուտքը չմշակված ձեռագրերի պիքսելների տվյալ է, եւ մենք ցանկանում ենք այնպես ծրագրավորել նեյրոնային ցանցը, որ դա ճշգրտորեն դասակարգի ձեռագիր գրված թվանշանները։
   Դրա համար փոքրիկ փոփոխություն կկատարենք եւ պրեսեպտրոն նեյրոնի փոխարեն կօգտակործենք սիգմոիդ նեյրոն, որը 0 կամ 1 ելքային արժեքների փոխարեն ստեղծում է (0;1) միջակայքի ցանկացած իրական թիվ։
   Մեկ այլ ձեւով նեյրոնը կարող ենք դիտել որպես ֆունկցիա. Ֆունկցիայի գրաֆիկից ակնհայտ է, որ -∞-ում ֆունկիցայի արժեքը մոտ է 0-ին, իսկ +∞-ում` 1-ին, այսինքն, ֆունկցիայի արժեքների տիրույ414ԻՆՖՈՐՄԱՏԻԿԱ թը (0;1) միջակայքն է։
   Ալգորիթմն աշխատում է հետեւյալ կերպ. նախ ալգորիթմը «վարժվում» է տվյալների բազայի վրա, եւ տվյալների բազայի քանակի ավելացումը վկայում է ալգորիթմի, ավելի ճիշտ` ելքային արժեքի ստացմանը։
   Այսպիսով, պատկերների ճանաչման ալգորիթմ ստանալու համար նախ անհրաժեշտ է ունենալ մեծ տվյալների բազա։
  Ալգորիթմը կատարվում է հետեւյալ կերպ՝ տվյալների բազայում առկա պատկերի ստացումից հետո ալգորիթմը պատկերի յուրաքանչյուր պիքսելի համապատասխանեցնում է որեւէ արժեք` կախված պիքսելի մգության աստիճանից։
   Այսպես, որքան պիքսելը մուգ է, այնքան դրա արժեքը մոտ է 0–ի, հակառակ դեպքում մոտ է 1–ի։
   Ուշադրություն դարձնենք, որ (0;1) միջակայքում ստացված իրական թվերը ստացվում են վերը բերված սիգմոիդ ֆունկցիայով։
   Հետեւապես, նեյրոնային ցանցի i-րդ նեյրոնի կշիռների գումարը պայմանավորված է i-1, i-2....1 շերտերի նեյրոնների ստեղծած համապատասխան արժեքներով։
   Սա նշանակում է, որ երբ արդեն «մարզված» ալգորիթմին որպես մուտքային տվյալ տրամադրում ենք որեւէ ձեռագիր գրված թվի նկար, ենթադրենք՝ «9» թվանշանի նկար, ալգորիթմը այդ նկարի յուրաքանչյուր պիքսելի կհամապատասխանեցնի որեւէ կշիռ, եւ այսպիսով ալգորիթմը կկիրառի սիգմոիդ ֆունկցիան յուրաքանչյուր պիքսելին կցած կշռի վրա, որը կստեղծի որեւէ արժեք (0;1) միջակայքում, որի վրա հետագայում ալգորիթմը կկիրառվի մի քանի անգամ, այսինքն, նախորդ ստացված արժեքները կպայմանավորեն ստացվող հաջորդ արժեքները։
   Եվ այսպիսով, ամենավերջին քայլին, որպես ելքային արժեք, կստանանք 10 նեյրոն, որոնցից յուրաքանչյուրը կունենա իրեն կցված որեւէ արժեք (0;1) միջակայքից, եւ այդ նեյրոնի արժեքը, որն ամենամեծն է վերջին ելքային շերտում, կհանդիսանա մուտքագրված պատկերում արտացոլված թվանշանը, տվյալ դեպքում 9-երորդ նեյրոնը ամենավերջին շերտում կունենա ամենամեծ արժեքը, իսկ արժեքը բազմապատկելով 100-ով, կստանանք վստահության գործակիցը՝ արտահայտված տոկոսներով (թե քանի տոկոսով է ալգորիթմը վստահ, որ մուտքագրված նկարում պատկերված է «9» թվանշանը)։
  Դիտարկենք արհեստական բանականության, մասնավորապես պատկերների ճանաչման ալգորիթմը գործնականում։
   Մեր ալգորիթմը հիմնաված է Google-ի կողմից ստեղծված TenserFlow համակարգի վրա, որն իր մեջ ներառում է պատրաստի նեյրոնային ցանցեր։
   Google-ն ալ415ԻՆՖՈՐՄԱՏԻԿԱ գորիթմը կիրառել է 100000 օբյեկտների ճանաչման համար, սակայն պարզ է, որ իրական կյանքում օբյեկտներն ավելին են քան 100000-ը, դրա համար մենք կկիրառենք նախօրոք «վարժեցված» ծրագիրը նոր օբյեկտների պատկերների ճանաչման համար։
   Ինչպես տեսանք վերեւում, պատկերների ճանաչումը կատարվում է ներմուծված պատկերը նեյրոնների շերտերի միջով անցկացնելիս, այսպես, առաջին շերտում կատարվում է պատկերում առկա օբյեկտի սահմանագծի հայտաբերում, միջին շերտերում կատարվում է օբյեկտի ձեւի ստուգում, իսկ արդեն վերջին շերտերում կատարվում է վերջնական օբյեկտի ճանաչում, մեր ծրագիրն էլ հենց կազմված է այդ վերջին շերտի «մարզումով»։
  Մեր ծրագիրը բաղկացած է 7 քայլից։
   Նշենք, որ այս ամենը կատարվում է MacOs օպերացիոն համակարգում։
  1. Բեռնել Python 2.7-ը։
  2. Գրել pip install tensorflow Mac-ի տերմինալում։
  3. Հետո կստեղծենք նկարների բազա, ինչքան նկարների բազան մեծ լինի, այնքան ավելի լավ, քանի որ մարզումը կկատարվի ավելի մեծ նկարների բազայի վրա, եւ արդյունքում կունենանք ավելի հստակ պատասխան ամենավերջում։
   Կարելի է ընտրել ցանկացած օբյեկտի պատկերների բազա։
   Այս դեպքում ընտրվել է 5 տեսակի ծաղկի պատկերների բազա։
   Ողղակի պետք է վստահ լինել, որ ամեն ծաղկի նկար իր համապատասխան անվամբ ֆայլում է (նկ. 3)։
  Գրելով այս հրամանը, վեջապես «կմարզենք» ծրագիրը։
   Ուղղակի *-ի փոխարեն պետք է գրել նկարների բազան պարունակող ֆայլի ճանապարհը (path-ը)։
  416ԻՆՖՈՐՄԱՏԻԿԱ Նկ.3 Նկարների բազայի տեղադրում։
  Նկ.4 Վստահության տոկոսի որոշում։
  Տեսնենք, թե արդյունքում ինչ ստացվեց։
   Կարելի է դուրս գալ բակ եւ նկարել նկարների բազայում առկա ծաղիկների տեսակներից մեկը, 417ԻՆՖՈՐՄԱՏԻԿԱ տվյալ դեպքում` խատուտիկ, ինչպես տեսնում եք նկարի ներքեւի աջ հատվածում։
   Python-ի տերմինալում գրում ենք հետեւյալ հրամանը, *-ի փոխարեն նշելով խատուտիկի նկարի գտնվելու վայրը համակարգչում։
  Ինչպես երեւում է, առաջին տողում գրված է` խատուտիկ, որի դիմաց վստահության տոկոսը՝ 0.99950 (նկ. 4)։

Սույն հոդվածը ծանոթացնում է արհեստական բանականությանը եւ դրա կարեւորագույն բաղադրամասերից մեկին՝ պատկերների ճանաչմանը, որը բավական բարդ գործընթաց է՝ հիմնված մարդու ուղեղի՝ պատկերների ճանաչման գործընթացի վրա։
  Հոդվածում ներկայացված տեղեկատվությունը ներառում է պատկերների ճանաչման մաթեմատիկական ալգորիթմները, նեյրոնային ցանցերը՝ ընդգրկելով մանրամասն նկարագրություններ եւ գրաֆիկներ։
