Արհեստական ինտելեկտը (AI) վերջին տարիներին զգալի ժողովրդականություն է ձեռք բերել:
Եթե դուք ծրագրային ապահովման ինժեներ եք, համակարգչային գիտնական կամ ընդհանուր առմամբ տվյալների գիտության սիրահար, ապա ձեզ հավանաբար հետաքրքրում են պատկերների մշակման, օրինաչափությունների ճանաչման և օբյեկտների հայտնաբերման զարմանալի հավելվածները, որոնք տրամադրվում են այս ոլորտում:
AI-ի ամենակարևոր ենթաոլորտը, որի մասին հավանաբար լսել եք, Deep Learning-ն է: Այս ոլորտը կենտրոնանում է հզոր ալգորիթմների վրա (համակարգչային ծրագրի հրահանգներ), որոնք մոդելավորվել են մարդու ուղեղի ֆունկցիոնալությունից, որը հայտնի է որպես Նյարդային ցանցեր.
Այս հոդվածում մենք կանդրադառնանք Նեյրոնային ցանցերի հայեցակարգին և ինչպես կառուցել, կազմել, տեղավորել և գնահատել այս մոդելները՝ օգտագործելով Python.
Նյարդային ցանցեր
Նյարդային ցանցերը կամ NN-ը ալգորիթմների շարք են, որոնք մոդելավորվել են մարդու ուղեղի կենսաբանական ակտիվության հիման վրա: Նյարդային ցանցերը բաղկացած են հանգույցներից, որոնք նաև կոչվում են նեյրոններ:
Ուղղահայաց հանգույցների հավաքածուն հայտնի է որպես շերտեր: Մոդելը բաղկացած է մեկ մուտքից, մեկ ելքից և մի շարք թաքնված շերտերից: Յուրաքանչյուր շերտ բաղկացած է հանգույցներից, որոնք նաև կոչվում են նեյրոններ, որտեղ կատարվում են հաշվարկները։
Հետևյալ դիագրամում շրջանակները ներկայացնում են հանգույցները, իսկ հանգույցների ուղղահայաց հավաքածուն ներկայացնում է շերտերը: Այս մոդելում կա երեք շերտ.
Մեկ շերտի հանգույցները միացված են հաջորդ շերտին փոխանցման գծերի միջոցով, ինչպես երևում է ստորև:
Մեր տվյալների բազան բաղկացած է պիտակավորված տվյալներից: Սա նշանակում է, որ տվյալների յուրաքանչյուր միավորին տրվել է որոշակի անվան արժեք:
Այսպիսով, կենդանիների դասակարգման տվյալների բազայի համար մենք կունենանք կատուների և շների պատկերներ՝ որպես մեր տվյալներ, «կատու» և «շուն»՝ որպես մեր պիտակներ:
Կարևոր է նշել, որ պիտակները պետք է վերածվեն թվային արժեքների, որպեսզի մեր մոդելը դրանք իմաստավորի, ուստի մեր կենդանիների պիտակները կատվի համար դառնում են «0», իսկ շան համար՝ «1»: Ե՛վ տվյալները, և՛ պիտակները փոխանցվում են մոդելի միջով:
Ուսում
Տվյալները սնվում են մոդելին մեկ առ մեկ: Այս տվյալները բաժանվում են կտորների և անցնում մոդելի յուրաքանչյուր հանգույցով: Հանգույցները մաթեմատիկական գործողություններ են կատարում այս կտորների վրա:
Այս ձեռնարկի համար անհրաժեշտ չէ իմանալ մաթեմատիկական ֆունկցիաները կամ հաշվարկները, սակայն կարևոր է ընդհանուր պատկերացում ունենալ, թե ինչպես են աշխատում այս մոդելները: Մեկ շերտում մի շարք հաշվարկներից հետո տվյալները փոխանցվում են հաջորդ շերտին և այլն:
Ավարտելուց հետո մեր մոդելը կանխատեսում է տվյալների պիտակը ելքային շերտում (օրինակ, կենդանիների դասակարգման հարցում մենք ստանում ենք «0» կանխատեսում կատվի համար):
Այնուհետև մոդելը սկսում է համեմատել այս կանխատեսված արժեքը փաստացի պիտակի արժեքի հետ:
Եթե արժեքները համընկնում են, մեր մոդելը կընդունի հաջորդ մուտքը, բայց եթե արժեքները տարբերվում են, մոդելը կհաշվի երկու արժեքների միջև տարբերությունը, որը կոչվում է կորուստ, և կկարգավորի հանգույցների հաշվարկները՝ հաջորդ անգամ համապատասխան պիտակներ արտադրելու համար:
Խորը ուսուցման շրջանակներ
Նյարդային ցանցերը կոդով կառուցելու համար մենք պետք է ներմուծենք Խորը ուսուցման շրջանակներ հայտնի է որպես գրադարաններ՝ օգտագործելով մեր Ինտեգրված զարգացման միջավայրը (IDE):
Այս շրջանակները նախապես գրված գործառույթների հավաքածու են, որոնք կօգնեն մեզ այս ձեռնարկում: Մենք կօգտագործենք Keras շրջանակը մեր մոդելը կառուցելու համար:
Keras-ը Python-ի գրադարան է, որն օգտագործում է խորը ուսուցման և արհեստական ինտելեկտի հետևանք, որը կոչվում է Թենսորհոսք հեշտությամբ ստեղծել NN-ներ պարզ հաջորդական մոդելների տեսքով:
Keras-ը գալիս է նաև իր նախկին մոդելներով, որոնք նույնպես կարող են օգտագործվել: Այս ձեռնարկի համար մենք կստեղծենք մեր սեփական մոդելը՝ օգտագործելով Keras-ը:
Դուք կարող եք ավելին իմանալ այս խորը ուսուցման շրջանակի մասին Keras կայքը.
Նեյրոնային ցանցի կառուցում (Ուսուցում)
Եկեք անցնենք Python-ի միջոցով նյարդային ցանցի կառուցմանը:
Խնդիրի հայտարարություն
Նյարդային ցանցերը AI-ի վրա հիմնված խնդիրների լուծման մի տեսակ են: Այս ձեռնարկի համար մենք կքննարկենք Pima Indians Diabetes-ի տվյալները, որոնք հասանելի են այստեղ.
UCI Machine Learning-ը կազմել է այս տվյալների բազան և պարունակում է հնդիկ հիվանդների բժշկական գրառում: Մեր մոդելը պետք է կանխատեսի` հիվանդի մոտ 5 տարվա ընթացքում դիաբետ է սկսվել, թե ոչ:
Տվյալների հավաքածուի բեռնում
Մեր տվյալների բազան մեկ CSV ֆայլ է, որը կոչվում է «diabetes.csv», որը հեշտությամբ կարելի է կառավարել Microsoft Excel-ի միջոցով:
Նախքան մեր մոդելը ստեղծելը, մենք պետք է ներմուծենք մեր տվյալների բազան: Օգտագործելով հետևյալ կոդը՝ կարող եք դա անել.
ներմուծել պանդաները որպես PDF
data = pd.read_csv ('diabetes.csv')
x = data.drop («Արդյունք»)
y = տվյալներ [«Արդյունք»]
Այստեղ մենք օգտագործում ենք Պանդա գրադարանը, որպեսզի կարողանանք շահարկել մեր CSV ֆայլի տվյալները, read_csv()-ը պանդաների ներկառուցված ֆունկցիա է, որը թույլ է տալիս մեզ պահել մեր ֆայլի արժեքները «տվյալներ» կոչվող փոփոխականում:
x փոփոխականը պարունակում է մեր տվյալների բազան՝ առանց արդյունքի (պիտակների) տվյալների: Մենք դրան հասնում ենք data.drop() ֆունկցիայի միջոցով, որը հեռացնում է x-ի պիտակները, մինչդեռ y-ն պարունակում է միայն արդյունքի (պիտակի) տվյալները:
Հերթական մոդելի կառուցում
Քայլ 1. Գրադարանների ներմուծում
Նախ, մենք պետք է ներմուծենք TensorFlow-ը և Keras-ը՝ մեր մոդելի համար պահանջվող որոշակի պարամետրերի հետ միասին: Հետևյալ կոդը մեզ թույլ է տալիս դա անել.
ներմուծել tensorflow որպես tf
tensorflow ներմուծման կերաներից
tensorflow.keras.models-ից ներմուծում հաջորդական
tensorflow.keras.layers-ից ներմուծում Ակտիվացում, Խիտ
tensorflow.keras.optimizers-ից ներմուծում են Ադամ
tensorflow.keras.metrics ներմուծման categorical_crossentropy-ից
Մեր մոդելի համար մենք ներմուծում ենք խիտ շերտեր: Սրանք լիովին միացված շերտեր են. այսինքն, շերտի յուրաքանչյուր հանգույց լիովին կապված է հաջորդ շերտի մեկ այլ հանգույցի հետ:
Ներմուծում ենք նաև ան ակտիվացում գործառույթ, որն անհրաժեշտ է հանգույցներին ուղարկված տվյալների մասշտաբավորման համար: Օպտիմիզատորներ ներմուծվել են նաև կորուստները նվազագույնի հասցնելու համար։
Ադամը հայտնի օպտիմիզատոր է, որն ավելի արդյունավետ է դարձնում մեր մոդելի թարմացման հանգույցների հաշվարկները, ինչպես նաև categorical_crossentropy որը կորստի ֆունկցիայի տեսակը (հաշվում է փաստացի և կանխատեսված պիտակի արժեքների տարբերությունը), որը մենք կօգտագործենք:
Քայլ 2. Մեր մոդելի նախագծում
Իմ ստեղծած մոդելն ունի մեկ մուտքային (16 միավորով), մեկ թաքնված (32 միավորով) և մեկ ելքային (2 միավորով) շերտ: Այս թվերը ֆիքսված չեն և ամբողջությամբ կախված կլինեն տվյալ խնդրից։
Միավորների և շերտերի ճիշտ քանակի սահմանումը գործընթաց է, որը կարող է բարելավվել արտաժամյա պրակտիկայի միջոցով: Ակտիվացումը համապատասխանում է մասշտաբավորման տեսակին, որը մենք կկատարենք մեր տվյալների վրա՝ նախքան դրանք հանգույցով անցնելը:
Relu-ն և Softmax-ը այս առաջադրանքի ակտիվացման հայտնի գործառույթներն են:
մոդել = հաջորդական ([
Խիտ (միավորներ = 16, մուտքագրման_ձև = (1,), ակտիվացում = 'relu'),
Խիտ (միավոր = 32, ակտիվացում = 'relu'),
Խիտ (միավոր = 2, ակտիվացում = 'softmax')
])
Ահա թե ինչպիսին պետք է լինի մոդելի ամփոփագիրը.
Մոդելի ուսուցում
Մեր մոդելը ուսուցանվելու է երկու քայլով, առաջինը՝ մոդելի կազմումը (մոդելը միասին դնելը), իսկ հաջորդը՝ մոդելի տեղադրումը տվյալ տվյալների բազայի վրա:
Դա կարելի է անել՝ օգտագործելով model.compile() ֆունկցիան, որին հաջորդում է model.fit() ֆունկցիան:
model.compile (օպտիմիզատոր = Ադամ (ուսուցման_դրույք = 0.0001), կորուստ = 'երկուական_խաչսենտրոպիա', չափումներ = ['ճշգրտություն'])
model.fit (x, y, դարաշրջաններ = 30, փաթեթի_չափ = 10)
«Ճշգրտության» չափանիշը նշելը մեզ թույլ է տալիս դիտարկել մեր մոդելի ճշգրտությունը մարզումների ժամանակ:
Քանի որ մեր պիտակները 1-ի և 0-ի տեսքով են, մենք կօգտագործենք երկուական կորստի ֆունկցիա՝ իրական և կանխատեսված պիտակների միջև տարբերությունը հաշվարկելու համար:
Տվյալների հավաքածուն նույնպես բաժանվում է 10 խմբաքանակների (խմբաքանակի_չափ) և կփոխանցվի մոդելի միջով 30 անգամ (դարաշրջաններ): Տվյալ տվյալների շտեմարանի համար x-ը կլինի տվյալը, իսկ y-ը՝ տվյալներին համապատասխանող պիտակները:
Փորձարկման մոդել՝ օգտագործելով կանխատեսումներ
Մեր մոդելը գնահատելու համար մենք կանխատեսումներ ենք անում թեստի տվյալների վրա՝ օգտագործելով predict() ֆունկցիան:
կանխատեսումներ = model.predict(x)
Եվ դա այն է:
Այժմ դուք պետք է լավ հասկանաք Խորը ուսուցում հավելվածը, Նյարդային ցանցերը, ինչպես են նրանք աշխատում ընդհանուր առմամբ և ինչպես կառուցել, վարժեցնել և փորձարկել մոդել Python կոդով:
Հուսով եմ, որ այս ձեռնարկը ձեզ հնարավորություն կտա ստեղծել և կիրառել ձեր սեփական Deep Learning մոդելները:
Տեղեկացրեք մեզ մեկնաբանություններում, եթե հոդվածը օգտակար էր:
Թողնել գրառում