Преглед садржаја[Сакрити][Прикажи]
Последњих година, неуронске мреже су постале популарније јер су се показале као изузетно добре у широком спектру задатака.
Показало се да су одличан избор за препознавање слике и звука, обраду природног језика, па чак и играње компликованих игара као што су Го и шах.
У овом посту ћу вас провести кроз цео процес обуке неуронске мреже. Поменућу и објаснити све кораке за обуку неуронске мреже.
Док ћу прећи преко корака, желео бих да додам једноставан пример како бих био сигуран да постоји и практичан пример.
Дакле, дођите и хајде да научимо како да обрађујемо неуронске мреже
Почнимо једноставно и питајмо шта су неуронске мреже на првом месту.
Шта су заправо неуронске мреже?
Неуронске мреже су компјутерски софтвер који симулира рад људског мозга. Они могу учити из огромних количина података и уочити обрасце које је људима тешко открити.
Неуронске мреже су постале популарније последњих година због њихове свестраности у задацима као што су препознавање слике и звука, обрада природног језика и предиктивно моделирање.
Све у свему, неуронске мреже су снажан алат за широк спектар апликација и имају прилику да трансформишу начин на који приступамо широком спектру послова.
Зашто бисмо требали знати за њих?
Разумевање неуронских мрежа је критично јер су довеле до открића у различитим областима, укључујући компјутерски вид, препознавање говора и обраду природног језика.
Неуронске мреже су, на пример, у срцу недавних развоја аутомобила који се сами возе, услуга аутоматског превођења, па чак и медицинске дијагностике.
Разумевање како неуронске мреже функционишу и како их дизајнирати помаже нам да изградимо нове и инвентивне апликације. И, можда, то може довести до још већих открића у будућности.
Напомена о водичу
Као што сам рекао горе, желео бих да објасним кораке обуке неуронске мреже дајући пример. Да бисмо то урадили, требало би да разговарамо о скупу података МНИСТ. То је популаран избор за почетнике који желе да почну са неуронским мрежама.
МНИСТ је акроним који означава модификовани национални институт за стандарде и технологију. То је ручно писани скуп података цифара који се обично користи за обуку и тестирање модела машинског учења, посебно неуронских мрежа.
Колекција садржи 70,000 фотографија у нијансама сиве боје руком исписаних бројева у распону од 0 до 9.
МНИСТ скуп података је популаран бенцхмарк за класификација слика задатака. Често се користи за подучавање и учење јер је компактан и лак за руковање, а истовремено представља тежак изазов за алгоритме за машинско учење.
МНИСТ скуп података подржава неколико оквира и библиотека за машинско учење, укључујући ТенсорФлов, Керас и ПиТорцх.
Сада знамо за МНИСТ скуп података, хајде да почнемо са нашим корацима обуке неуронске мреже.
Основни кораци за обуку неуронске мреже
Увезите потребне библиотеке
Када први пут почнете да тренирате неуронску мрежу, кључно је имати неопходне алате за дизајнирање и обуку модела. Почетни корак у креирању неуронске мреже је увоз потребних библиотека као што су ТенсорФлов, Керас и НумПи.
Ове библиотеке служе као градивни блокови за развој неуронске мреже и пружају кључне могућности. Комбинација ових библиотека омогућава креирање софистицираних дизајна неуронских мрежа и брзу обуку.
За почетак нашег примера; ми ћемо увести потребне библиотеке, које укључују ТенсорФлов, Керас и НумПи. ТенсорФлов је оквир за машинско учење отвореног кода, Керас је АПИ за неуронску мрежу високог нивоа, а НумПи је нумеричка рачунарска Питхон библиотека.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Учитајте скуп података
Скуп података сада мора бити учитан. Скуп података је скуп података на којима ће неуронска мрежа бити обучена. Ово може бити било која врста података, укључујући фотографије, аудио и текст.
Кључно је поделити скуп података на два дела: један за обуку неуронске мреже и други за процену исправности обученог модела. Неколико библиотека, укључујући ТенсорФлов, Керас и ПиТорцх, може се користити за увоз скупа података.
За наш пример користимо и Керас за учитавање МНИСТ скупа података. У скупу података постоји 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 неурона, и софтмак излазним слојем који има 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)
То је све! Обучили смо неуронску мрежу да открије цифре у скупу података МНИСТ.
Од припреме података до процене ефикасности обученог модела, обука неуронске мреже укључује неколико процеса. Ова упутства помажу почетницима у ефикасној изградњи и обуци неуронских мрежа.
Почетници који желе да користе неуронске мреже за решавање различитих проблема могу то да ураде пратећи ова упутства.
Визуелизација примера
Покушајмо да визуализујемо шта смо урадили са овим примером да бисмо боље разумели.
Матплотлиб пакет се користи у овом исечку кода за исцртавање случајног избора фотографија из скупа података за обуку. Прво, увозимо Матплотлиб-ов “пиплот” модул и псеудоним као “плт”. Затим, са укупном димензијом од 10 са 10 инча, правимо фигуру са 5 редова и 5 колона подцрта.
Затим користимо фор петљу за понављање подзаплета, приказујући слику из скупа података за обуку на сваком од њих. За приказ слике користи се функција „имсхов“, са опцијом „цмап“ постављеном на „сива“ да би се фотографије приказале у сивим тоновима. Наслов сваког подзаписа је такође постављен на ознаку повезане слике у колекцији.
Коначно, користимо функцију „схов“ да прикажемо уцртане слике на слици. Ова функција нам омогућава да визуелно проценимо узорак фотографија из скупа података, што може помоћи у нашем разумевању података и идентификацији свих могућих проблема.
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()
Важни модели неуронске мреже
- Неуралне мреже унапред (ФФНН): Једноставна врста неуронске мреже у којој информације путују само на један начин, од улазног слоја до излазног слоја преко једног или више скривених слојева.
- Конволуционе неуронске мреже (ЦНН): Неуронска мрежа која се обично користи у детекцији и обради слике. ЦНН-ови су намењени да аутоматски препознају и издвајају карактеристике из слика.
- Понављајуће неуронске мреже (РНН): Неуронска мрежа која се обично користи у детекцији и обради слике. ЦНН-ови су намењени да аутоматски препознају и издвајају карактеристике из слика.
- Мреже дуготрајне краткорочне меморије (ЛСТМ): Облик РНН-а створен да превазиђе проблем нестајања градијената у стандардним РНН-овима. Дугорочне зависности у секвенцијалним подацима могу се боље ухватити помоћу ЛСТМ-а.
- Аутоматски кодери: Неурална мрежа за учење без надзора у којој се мрежа учи да репродукује своје улазне податке на свом излазном слоју. Компресија података, детекција аномалија и смањење шума слике могу се постићи помоћу аутокодера.
- Генеративне адверсаријске мреже (ГАН): Генеративна неуронска мрежа је облик неуронске мреже која се учи да производи нове податке који су упоредиви са скупом података за обуку. ГАН се састоје од две мреже: генераторске мреже која ствара свеже податке и дискриминаторске мреже која процењује квалитет креираних података.
Закључак, шта би требало да буду ваши следећи кораци?
Истражите неколико онлајн ресурса и курсева да бисте сазнали више о обуци неуронске мреже. Рад на пројектима или примерима је један од метода за боље разумевање неуронских мрежа.
Почните са лаким примерима као што су проблеми бинарне класификације или задаци класификације слика, а затим пређите на теже задатке као што су обрада природног језика или учење ојачавања.
Рад на пројектима вам помаже да стекнете право искуство и побољшате своје вештине обуке неуронских мрежа.
Такође можете да се придружите онлајн групама и форумима за машинско учење и неуронске мреже да бисте комуницирали са другим ученицима и професионалцима, делили свој рад и примали коментаре и помоћ.
ЛСРС МОНРАД-КРОХН
⁶йВолео бих да видим Питхон програм за минимизирање грешака. Посебни селекциони чворови за промене тежине на следећи слој