Мазмұны[Жасыру][Көрсету]
Соңғы жылдары нейрондық желілер танымал болды, өйткені олар тапсырмалардың кең ауқымында өте жақсы екенін көрсетті.
Олар кескін мен дыбысты тану, табиғи тілді өңдеу, тіпті Go және шахмат сияқты күрделі ойындарды ойнау үшін тамаша таңдау екені көрсетілді.
Бұл постта мен сізге нейрондық желіні оқытудың бүкіл процесімен таныстырамын. Мен нейрондық желіні оқытудың барлық қадамдарын айтып, түсіндіремін.
Мен қадамдарды қарастыра отырып, практикалық мысал бар екеніне көз жеткізу үшін қарапайым мысал қосқым келеді.
Сонымен, келіңіз және нейрондық желілерді өңдеуді үйренейік
Қарапайымнан бастайық және не екенін сұраймыз нейрондық желілер бірінші орында.
Нейрондық желілер дегеніміз не?
Нейрондық желілер - бұл адам миының жұмысын имитациялайтын компьютерлік бағдарламалық құрал. Олар деректердің үлкен көлемінен және адамдарға анықтау қиын болуы мүмкін нүкте үлгілерінен үйрене алады.
Нейрондық желілер соңғы жылдары сурет пен дыбысты тану, табиғи тілді өңдеу және болжамды модельдеу сияқты тапсырмалардағы әмбебаптығы арқасында танымал болды.
Жалпы, нейрондық желілер қолданбалардың кең ауқымы үшін күшті құрал болып табылады және жұмыстардың кең ауқымына жақындау жолымызды өзгертуге мүмкіндік береді.
Неліктен біз олар туралы білуіміз керек?
Нейрондық желілерді түсіну өте маңызды, өйткені олар әртүрлі салаларда, соның ішінде компьютерлік көру, сөйлеуді тану және табиғи тілді өңдеу сияқты жаңалықтарға әкелді.
Нейрондық желілер, мысалы, өздігінен жүретін көліктер, автоматты аударма қызметтері және тіпті медициналық диагностикадағы соңғы жаңалықтардың негізінде жатыр.
Нейрондық желілердің қалай жұмыс істейтінін және оларды қалай жобалау керектігін түсіну бізге жаңа және өнертапқыш қосымшаларды құруға көмектеседі. Және, мүмкін, бұл болашақта бұдан да үлкен жаңалықтарға әкелуі мүмкін.
Оқулық туралы ескерту
Жоғарыда айтқанымдай, нейрондық желіні оқытудың қадамдарын мысал келтіре отырып түсіндіргім келеді. Ол үшін MNIST деректер жинағы туралы айту керек. Бұл нейрондық желілермен жұмыс бастағысы келетін жаңадан бастаушылар үшін танымал таңдау.
MNIST – модификацияланған ұлттық стандарттар мен технологиялар институтының қысқартылған атауы. Бұл машиналық оқыту үлгілерін, әсіресе нейрондық желілерді оқыту және сынау үшін әдетте қолданылатын қолжазба цифрлық деректер жинағы.
Жинақта 70,000-ден 0-ға дейінгі қолжазба сандардан тұратын 9 XNUMX сұр түсті фотосуреттер бар.
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 сияқты бірнеше кітапханалар пайдаланылуы мүмкін.
Мысал үшін біз MNIST деректер жинағын жүктеу үшін Keras пайдаланамыз. Деректер жиынында 60,000 10,000 оқу фотосуреттері және XNUMX XNUMX сынақ кескіндері бар.
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 нейроннан тұратын екі жасырын қабаты және 10 нейроны бар softmax шығыс қабаты бар қарапайым үлгіні пайдаланыңыз.
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): Нейрондық желінің қарапайым түрі, ақпарат тек бір жолмен, кіріс деңгейінен шығыс деңгейіне бір немесе бірнеше жасырын қабаттар арқылы таралады.
- Конволюционды нейрондық желілер (CNN): Кескінді анықтау мен өңдеуде жиі қолданылатын нейрондық желі. CNN суреттерден мүмкіндіктерді автоматты түрде тануға және шығаруға арналған.
- Қайталанатын нейрондық желілер (RNN): Кескінді анықтау мен өңдеуде жиі қолданылатын нейрондық желі. CNN суреттерден мүмкіндіктерді автоматты түрде тануға және шығаруға арналған.
- Ұзақ қысқа мерзімді жад (LSTM) желілері: Стандартты RNN-де жоғалып кететін градиенттер мәселесін шешу үшін жасалған RNN нысаны. Тізбектелген деректердегі ұзақ мерзімді тәуелділіктерді LSTM көмегімен жақсырақ түсіруге болады.
- Автокодерлер: Бақыланбайтын оқыту нейрондық желісі, онда желі өзінің шығыс деңгейінде кіріс деректерін жаңғыртуға үйретіледі. Деректерді сығу, аномалияны анықтау және суретті өшіру барлығын автокодерлер арқылы орындауға болады.
- Генеративті қарсыластық желілер (GAN): Генеративті нейрондық желі - бұл оқыту деректер жиынтығымен салыстырылатын жаңа деректерді шығаруға үйретілетін нейрондық желінің түрі. GAN екі желіден тұрады: жаңа деректерді жасайтын генераторлық желі және жасалған деректердің сапасын бағалайтын дискриминаторлық желі.
Қорытынды, келесі қадамдарыңыз қандай болуы керек?
Нейрондық желіні оқыту туралы көбірек білу үшін бірнеше онлайн ресурстар мен курстарды зерттеңіз. Жобалармен немесе мысалдармен жұмыс істеу нейрондық желілерді жақсырақ түсінудің бір әдісі болып табылады.
Екілік жіктеу мәселелері немесе суретті жіктеу тапсырмалары сияқты оңай мысалдардан бастаңыз, содан кейін табиғи тілді өңдеу немесе сияқты күрделірек тапсырмаларға өтіңіз. күшейтуді оқыту.
Жобалармен жұмыс істеу нақты тәжірибе алуға және нейрондық желіні оқыту дағдыларын жақсартуға көмектеседі.
Сондай-ақ, басқа оқушылармен және кәсіпқойлармен өзара әрекеттесу, жұмысыңызды бөлісу және пікірлер мен көмек алу үшін онлайн машиналық оқыту және нейрондық желі топтары мен форумдарына қосыла аласыз.
LSRS MONRAD-KROHN
⁶ĵҚатені азайтуға арналған python бағдарламасын көргім келеді. Келесі қабатқа салмақты өзгерту үшін арнайы таңдау түйіндері