Змест[Схаваць][Паказаць]
У апошнія гады нейронавыя сеткі набылі ўсё большую папулярнасць, паколькі яны паказалі сваю надзвычайную эфектыўнасць пры вырашэнні шырокага спектру задач.
Было паказана, што яны з'яўляюцца выдатным выбарам для распазнання малюнкаў і гуку, апрацоўкі натуральнай мовы і нават для гульні ў складаныя гульні, такія як го і шахматы.
У гэтым пасце я раскажу вам увесь працэс навучання нейронавай сеткі. Я згадаю і растлумачу ўсе этапы навучання нейроннай сеткі.
Пакуль я буду разглядаць крокі, я хацеў бы дадаць просты прыклад, каб пераканацца, што ёсць і практычны прыклад.
Такім чынам, прыходзьце і давайце навучымся апрацоўваць нейронавыя сеткі
Давайце пачнем з простага і спытаем, што ёсць нейронавыя сеткі у першую чаргу.
Што такое нейронавыя сеткі?
Нейронныя сеткі - гэта камп'ютэрнае праграмнае забеспячэнне, якое імітуе працу чалавечага мозгу. Яны могуць вучыцца на велізарных аб'ёмах даных і выявіць заканамернасці, якія людзям можа быць цяжка выявіць.
Папулярнасць нейронных сетак у апошнія гады ўзрасла з-за іх універсальнасці ў такіх задачах, як распазнаванне малюнкаў і гуку, апрацоўка натуральнай мовы і прагназуючае мадэляванне.
У цэлым, нейронавыя сеткі з'яўляюцца моцным інструментам для шырокага спектру прымянення і маюць шанец змяніць наш падыход да шырокага спектру работ.
Чаму мы павінны пра іх ведаць?
Разуменне нейронавых сетак мае вырашальнае значэнне, таму што яны прывялі да адкрыццяў у розных галінах, уключаючы камп'ютэрны зрок, распазнаванне маўлення і апрацоўку натуральнай мовы.
Напрыклад, нейронавыя сеткі ляжаць у аснове апошніх распрацовак у галіне беспілотных аўтамабіляў, аўтаматычных службаў перакладу і нават медыцынскай дыягностыкі.
Разуменне таго, як функцыянуюць нейронавыя сеткі і як іх распрацоўваць, дапамагае нам ствараць новыя і вынаходлівыя прыкладанні. І, магчыма, гэта можа прывесці да яшчэ большых адкрыццяў у будучыні.
Заўвага аб падручніку
Як я ўжо казаў вышэй, я хацеў бы растлумачыць этапы навучання нейронавай сеткі на прыкладзе. Каб зрабіць гэта, мы павінны пагаварыць пра набор дадзеных 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.
У нашым прыкладзе мы таксама выкарыстоўваем Keras для загрузкі набору даных MNIST. У наборы дадзеных ёсць 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 нейронаў, і выхадным пластом 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 выкарыстоўваецца ў гэтым фрагменце кода для пабудовы выпадковага выбару фатаграфій з навучальнага набору даных. Спачатку мы імпартуем модуль “pyplot” Matplotlib і надаем яму псеўданім “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 для мінімізацыі памылак. Спецыяльныя вузлы выбару для змены вагі на наступны пласт