Բառը[Թաքցնել][Ցուցադրում]
Վերջին տարիներին նեյրոնային ցանցերը մեծ ժողովրդականություն են վայելել, քանի որ դրանք ցույց են տվել, որ դրանք չափազանց լավն են առաջադրանքների լայն շրջանակում:
Ապացուցված է, որ դրանք հիանալի ընտրություն են պատկերների և աուդիո ճանաչման, բնական լեզվի մշակման և նույնիսկ այնպիսի բարդ խաղեր խաղալու համար, ինչպիսիք են Go-ն ու շախմատը:
Այս գրառման մեջ ես ձեզ կուղեկցեմ նեյրոնային ցանցի վերապատրաստման ողջ գործընթացով: Ես կնշեմ և կբացատրեմ նեյրոնային ցանց պատրաստելու բոլոր քայլերը։
Մինչ ես կանցնեմ քայլերին, ես կցանկանայի ավելացնել մի պարզ օրինակ՝ համոզվելու համար, որ կա նաև գործնական օրինակ:
Այսպիսով, եկեք և եկեք սովորենք, թե ինչպես մշակել նեյրոնային ցանցերը
Սկսենք պարզից և հարցնենք, թե որոնք են նյարդային ցանցեր առաջին տեղում.
Ի՞նչ են իրականում նեյրոնային ցանցերը:
Նյարդային ցանցերը համակարգչային ծրագրեր են, որոնք մոդելավորում են մարդու ուղեղի աշխատանքը: Նրանք կարող են սովորել հսկայական ծավալի տվյալների և օրինաչափությունների, որոնք մարդկանց դժվար է հայտնաբերել:
Վերջին տարիներին նեյրոնային ցանցերը մեծ ժողովրդականություն են վայելում, քանի որ դրանց բազմակողմանիությունն այնպիսի առաջադրանքներում է, ինչպիսիք են նկարների և ձայնի ճանաչումը, բնական լեզվի մշակումը և կանխատեսող մոդելավորումը:
Ընդհանուր առմամբ, նեյրոնային ցանցերը հզոր գործիք են կիրառությունների լայն շրջանակի համար և հնարավորություն ունեն փոխակերպելու այն, թե ինչպես ենք մենք մոտենում աշխատանքների լայն շրջանակին:
Ինչու՞ մենք պետք է իմանանք նրանց մասին:
Նյարդային ցանցերի ըմբռնումը շատ կարևոր է, քանի որ դրանք հանգեցրել են բացահայտումների տարբեր ոլորտներում, ներառյալ համակարգչային տեսողությունը, խոսքի ճանաչումը և բնական լեզվի մշակումը:
Նեյրոնային ցանցերը, օրինակ, ինքնակառավարվող մեքենաների, ավտոմատ թարգմանչական ծառայությունների և նույնիսկ բժշկական ախտորոշման ոլորտում վերջին զարգացումների հիմքում են:
Հասկանալը, թե ինչպես են գործում նեյրոնային ցանցերը և ինչպես դրանք նախագծել, օգնում է մեզ ստեղծել նոր և հնարամիտ հավելվածներ: Եվ, թերևս, դա կարող է հետագայում էլ ավելի մեծ բացահայտումների հանգեցնել։
Ծանոթագրություն ձեռնարկի մասին
Ինչպես ասացի վերևում, ես կցանկանայի բացատրել նեյրոնային ցանցի վերապատրաստման քայլերը՝ բերելով օրինակ։ Դա անելու համար մենք պետք է խոսենք MNIST տվյալների բազայի մասին: Այն հայտնի ընտրություն է սկսնակների համար, ովքեր ցանկանում են սկսել նեյրոնային ցանցերով:
MNIST-ը հապավում է, որը նշանակում է Ստանդարտների և տեխնոլոգիաների փոփոխված ազգային ինստիտուտ: Դա ձեռագիր թվային տվյալների հավաքածու է, որը սովորաբար օգտագործվում է մեքենայական ուսուցման մոդելների, հատկապես նեյրոնային ցանցերի վերապատրաստման և փորձարկման համար:
Հավաքածուն պարունակում է 70,000 մոխրագույն սանդղակով լուսանկարներ ձեռագիր թվերով՝ 0-ից 9-ը:
MNIST տվյալների բազան հանրաճանաչ չափանիշ է պատկերների դասակարգում առաջադրանքներ. Այն հաճախ օգտագործվում է ուսուցման և ուսուցման համար, քանի որ այն կոմպակտ է և հեշտ գործելու համար, մինչդեռ մեքենայական ուսուցման ալգորիթմների պատասխանը դժվար մարտահրավեր է:
MNIST տվյալների բազան աջակցվում է մի քանի մեքենայական ուսուցման շրջանակների և գրադարանների կողմից, ներառյալ TensorFlow, Keras և PyTorch:
Այժմ մենք գիտենք MNIST տվյալների բազայի մասին, եկեք սկսենք նեյրոնային ցանցի վերապատրաստման մեր քայլերը:
Նյարդային ցանց պատրաստելու հիմնական քայլերը
Ներմուծել անհրաժեշտ գրադարաններ
Երբ առաջին անգամ սկսում ենք նեյրոնային ցանց պատրաստել, շատ կարևոր է ունենալ անհրաժեշտ գործիքներ մոդելը նախագծելու և վարժեցնելու համար: Նյարդային ցանց ստեղծելու սկզբնական քայլը անհրաժեշտ գրադարանների ներմուծումն է, ինչպիսիք են TensorFlow, Keras և NumPy:
Այս գրադարանները ծառայում են որպես նեյրոնային ցանցի զարգացման շինանյութ և ապահովում են կարևոր հնարավորություններ: Այս գրադարանների համադրությունը թույլ է տալիս ստեղծել նեյրոնային ցանցերի բարդ ձևավորում և արագ ուսուցում:
Սկսենք մեր օրինակը. մենք կներմուծենք անհրաժեշտ գրադարանները, որոնք ներառում են TensorFlow, Keras և NumPy: TensorFlow բաց կոդով մեքենայական ուսուցման շրջանակ է, Keras-ը բարձր մակարդակի նեյրոնային ցանցի API է, իսկ NumPy-ը՝ թվային հաշվողական Python գրադարան:
import tensorflow as tf
from tensorflow import keras
import numpy as np
Բեռնել տվյալների հավաքածուն
Տվյալների հավաքածուն այժմ պետք է բեռնվի: Տվյալների հավաքածուն տվյալների հավաքածուն է, որի վրա ուսուցանվելու է նեյրոնային ցանցը: Սա կարող է լինել ցանկացած տեսակի տվյալ, ներառյալ լուսանկարներ, աուդիո և տեքստ:
Չափազանց կարևոր է տվյալների բազան բաժանել երկու մասի՝ մեկը նեյրոնային ցանցը վարժեցնելու և մյուսը՝ պատրաստված մոդելի ճիշտությունը գնահատելու համար: Մի քանի գրադարաններ, ներառյալ TensorFlow, Keras և PyTorch, կարող են օգտագործվել տվյալների բազան ներմուծելու համար:
Մեր օրինակի համար մենք օգտագործում ենք նաև Keras՝ MNIST տվյալների բազան բեռնելու համար: Տվյալների հավաքածուում կա 60,000 ուսումնական լուսանկար և 10,000 թեստային պատկեր:
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Տվյալների նախնական մշակում
Տվյալների նախնական մշակումը նեյրոնային ցանցի վերապատրաստման կարևոր փուլ է: Այն ենթադրում է տվյալների պատրաստում և մաքրում, նախքան դրանք ներդնելը նեյրոնային ցանց:
Պիքսելային արժեքների չափումը, տվյալների նորմալացումը և պիտակների վերափոխումը մեկ տաք կոդավորման նախամշակման ընթացակարգերի օրինակներ են: Այս գործընթացները օգնում են նեյրոնային ցանցին ավելի արդյունավետ և ճշգրիտ սովորել:
Տվյալների նախնական մշակումը կարող է նաև օգնել նվազագույնի հասցնել գերհամապատասխանությունը և բարելավել նեյրոնային ցանցի աշխատանքը:
Նախքան նեյրոնային ցանցը վարժեցնելը, դուք պետք է նախապես մշակեք տվյալները: Սա ներառում է պիտակների փոփոխությունը մեկ տաք կոդավորման և պիքսելների արժեքների չափումը 0-ից 1-ի միջև:
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Սահմանեք մոդելը
Նյարդային ցանցի մոդելի սահմանման գործընթացը ներառում է դրա ճարտարապետության հաստատումը, ինչպիսիք են շերտերի քանակը, յուրաքանչյուր շերտի նեյրոնների քանակը, ակտիվացման գործառույթները և ցանցի տեսակը (հոսող, կրկնվող կամ կոնվուլցիոն):
Նյարդային ցանցի դիզայնը, որը դուք օգտագործում եք, որոշվում է խնդրի տեսակով, որը դուք փորձում եք լուծել: Հստակ սահմանված նեյրոնային ցանցի դիզայնը կարող է օգնել նեյրոնային ցանցի ուսուցմանը` դարձնելով այն ավելի արդյունավետ և ճշգրիտ:
Ժամանակն է նկարագրել նեյրոնային ցանցի մոդելը այս պահին: Այս օրինակի համար օգտագործեք պարզ մոդել երկու թաքնված շերտերով, որոնցից յուրաքանչյուրը ունի 128 նեյրոն, և softmax ելքային շերտը, որն ունի 10 նեյրոն:
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Կազմել մոդելը
Կորստի ֆունկցիան, օպտիմիզատորը և չափումները պետք է նշվեն նեյրոնային ցանցի մոդելի կազմման ժամանակ: Արդյունքը ճիշտ կանխատեսելու նեյրոնային ցանցի կարողությունը չափվում է կորստի ֆունկցիայի միջոցով:
Մարզման ընթացքում նեյրոնային ցանցի ճշգրտությունը բարձրացնելու համար օպտիմիզատորը փոփոխում է դրա կշիռները: Վերապատրաստման ընթացքում նեյրոնային ցանցի արդյունավետությունը չափվում է չափումների միջոցով: Մոդելը պետք է ստեղծվի մինչև նեյրոնային ցանցը վերապատրաստվի:
Մեր օրինակում մենք պետք է հենց հիմա կառուցենք մոդելը:
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Վարժեցրեք մոդելին
Նախապատրաստված տվյալների փոխանցումը նեյրոնային ցանցի միջով ցանցի կշիռները փոփոխելիս կորստի գործառույթը նվազագույնի հասցնելու համար հայտնի է որպես նեյրոնային ցանցի մարզում:
Վավերացման տվյալների հավաքածուն օգտագործվում է նեյրոնային ցանցը վերապատրաստման ընթացքում փորձարկելու համար՝ հետևելու դրա արդյունավետությանը և կանխելու գերհարմարեցումը: Ուսուցման գործընթացը կարող է որոշ ժամանակ տևել, հետևաբար կարևոր է համոզվել, որ նեյրոնային ցանցը պատշաճ կերպով պատրաստված է, որպեսզի թույլ չտա թերզարգացումը:
Օգտագործելով վերապատրաստման տվյալները, մենք այժմ կարող ենք վարժեցնել մոդելը: Դա անելու համար մենք պետք է սահմանենք խմբաքանակի չափը (նմուշների քանակը, որոնք մշակվել են նախքան մոդելի թարմացումը) և դարաշրջանների քանակը (կրկնությունների թիվը ամբողջ տվյալների բազայում):
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Մոդելի գնահատում
Թեստային տվյալների բազայի վրա նեյրոնային ցանցի աշխատանքի փորձարկումը դրա գնահատման գործընթացն է: Այս փուլում վերապատրաստված նեյրոնային ցանցը օգտագործվում է թեստային տվյալների հավաքակազմը մշակելու համար, և ճշգրտությունը գնահատվում է:
Թե որքան արդյունավետ է նեյրոնային ցանցը կարող է ճիշտ արդյունքը կանխատեսել բոլորովին նոր, չփորձված տվյալների հիման վրա, դրա ճշգրտության չափանիշն է: Մոդելի վերլուծությունը կարող է օգնել պարզել, թե որքան լավ է աշխատում նեյրոնային ցանցը, ինչպես նաև առաջարկել այն ավելի լավը դարձնելու ուղիներ:
Մենք վերջապես կարող ենք գնահատել մոդելի աշխատանքը՝ օգտագործելով թեստի տվյալները մարզումից հետո:
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Այսքանը: Մենք վարժեցրինք նեյրոնային ցանց՝ MNIST տվյալների բազայում թվանշանները հայտնաբերելու համար:
Տվյալների պատրաստումից մինչև վերապատրաստված մոդելի արդյունավետության գնահատումը, նեյրոնային ցանցի ուսուցումը ներառում է մի քանի գործընթացներ: Այս հրահանգներն օգնում են սկսնակներին արդյունավետորեն կառուցել և վարժեցնել նեյրոնային ցանցերը:
Սկսնակները, ովքեր ցանկանում են օգտագործել նեյրոնային ցանցերը տարբեր խնդիրներ լուծելու համար, կարող են դա անել՝ հետևելով այս հրահանգներին:
Օրինակի պատկերացում
Փորձենք պատկերացնել, թե ինչ ենք արել այս օրինակով ավելի լավ հասկանալու համար:
Matplotlib փաթեթն օգտագործվում է այս կոդի հատվածում՝ ուսումնական տվյալների հավաքածուից լուսանկարների պատահական ընտրություն գծելու համար: Նախ, մենք ներմուծում ենք Matplotlib-ի «pyplot» մոդուլը և այն անվանում ենք «plt»: Այնուհետև 10-ը 10 դյույմ ընդհանուր չափսերով 5 տողով և 5 սյունակով ենթահողով պատկեր ենք կազմում։
Այնուհետև, մենք օգտագործում ենք for հանգույց՝ ենթահողերի վրա կրկնելու համար՝ յուրաքանչյուրի վրա ցուցադրելով նկար ուսուցման տվյալների բազայից: Նկարը ցուցադրելու համար օգտագործվում է «imshow» ֆունկցիան, որի դեպքում «cmap» տարբերակը դրված է «գորշ»՝ լուսանկարները մոխրագույն գույներով ցուցադրելու համար: Յուրաքանչյուր ենթահողերի անվանումը նույնպես դրված է հավաքածուի համապատասխան պատկերի պիտակի վրա:
Ի վերջո, մենք օգտագործում ենք «ցուցադրել» գործառույթը նկարում գծագրված նկարները ցուցադրելու համար: Այս գործառույթը թույլ է տալիս մեզ տեսողականորեն գնահատել տվյալների հավաքածուի լուսանկարների նմուշը, որը կարող է օգնել մեզ հասկանալու տվյալները և բացահայտել հնարավոր մտահոգությունները:
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Նյարդային ցանցի կարևոր մոդելներ
- Նյարդային ցանցեր (FFNN): Նյարդային ցանցի պարզ տեսակ, որտեղ տեղեկատվությունը տարածվում է միայն մեկ ճանապարհով՝ մուտքային շերտից մինչև ելքային շերտ մեկ կամ մի քանի թաքնված շերտերի միջոցով:
- Convolutional Neural Networks (CNN): Նյարդային ցանց, որը սովորաբար օգտագործվում է պատկերների հայտնաբերման և մշակման մեջ: CNN-ները նախատեսված են նկարներից ինքնաբերաբար ճանաչելու և հանելու համար:
- Կրկնվող նյարդային ցանցեր (RNN): Նյարդային ցանց, որը սովորաբար օգտագործվում է պատկերների հայտնաբերման և մշակման մեջ: CNN-ները նախատեսված են նկարներից ինքնաբերաբար ճանաչելու և հանելու համար:
- Երկար կարճաժամկետ հիշողության (LSTM) ցանցեր. RNN-ի ձև, որը ստեղծվել է ստանդարտ RNN-ներում գրադիենտների անհետացման խնդիրը հաղթահարելու համար: Հերթական տվյալների երկարաժամկետ կախվածությունը կարելի է ավելի լավ ֆիքսել LSTM-ներով:
- Ավտոկոդավորիչներ. Չվերահսկվող ուսումնական նեյրոնային ցանց, որտեղ ցանցին սովորեցնում են վերարտադրել իր մուտքային տվյալները իր ելքային շերտում: Տվյալների սեղմումը, անոմալիաների հայտնաբերումը և նկարների հեռացումը կարող են իրականացվել ավտոմատ կոդավորիչների միջոցով:
- Generative Adversarial Networks (GAN): Գեներատիվ նեյրոնային ցանցը նեյրոնային ցանցի ձև է, որը սովորեցնում է արտադրել նոր տվյալներ, որոնք համեմատելի են ուսումնական տվյալների բազայի հետ: GAN-ները կազմված են երկու ցանցից՝ գեներատոր ցանց, որը ստեղծում է թարմ տվյալներ և խտրական ցանց, որը գնահատում է ստեղծված տվյալների որակը:
Ամփոփում, որո՞նք պետք է լինեն ձեր հաջորդ քայլերը:
Բացահայտեք մի քանի առցանց ռեսուրսներ և դասընթացներ՝ նեյրոնային ցանցի վերապատրաստման մասին ավելին իմանալու համար: Նախագծերի կամ օրինակների վրա աշխատելը նեյրոնային ցանցերի ավելի լավ ըմբռնման մեթոդներից մեկն է:
Սկսեք հեշտ օրինակներից, ինչպիսիք են երկուական դասակարգման խնդիրները կամ նկարների դասակարգման առաջադրանքները, այնուհետև անցեք ավելի բարդ խնդիրների, ինչպիսիք են բնական լեզվի մշակումը կամ ամրապնդման ուսուցում.
Նախագծերի վրա աշխատելն օգնում է ձեզ ձեռք բերել իրական փորձ և բարելավել ձեր նեյրոնային ցանցի ուսուցման հմտությունները:
Դուք կարող եք նաև միանալ առցանց մեքենայական ուսուցման և նեյրոնային ցանցերի խմբերին և ֆորումներին՝ այլ սովորողների և մասնագետների հետ շփվելու, ձեր աշխատանքը կիսելու և մեկնաբանություններ ու օգնություն ստանալու համար:
LSRS MONRAD-KROHN
⁶ĵԿցանկանայի տեսնել python ծրագիրը սխալների նվազագույնի հասցնելու համար: Հատուկ ընտրության հանգույցներ քաշի փոփոխության համար հաջորդ շերտին