Содржина[Крие][Прикажи]
Во последниве години, невронските мрежи се зголемија во популарност бидејќи се покажаа како исклучително добри во широк опсег на задачи.
Се покажа дека тие се одличен избор за препознавање слики и аудио, обработка на природен јазик, па дури и играње комплицирани игри како 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)
Дефинирајте го моделот
Процесот на дефинирање на моделот на невронската мрежа вклучува воспоставување на неговата архитектура, како што се бројот на слоеви, бројот на неврони по слој, функциите за активирање и типот на мрежата (feedforward, recurrent или convolutional).
Дизајнот на невронската мрежа што го користите се одредува според видот на проблемот што се обидувате да го решите. Добро дефинираниот дизајн на невронска мрежа може да помогне во учењето на невронската мрежа така што ќе го направи поефикасно и попрецизно.
Време е да се опише моделот на невронската мрежа во овој момент. За овој пример користете едноставен модел со два скриени слоја, секој со 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 колони подпарцели.
Потоа, ние користиме за јамка за да се повторуваме над потпловите, прикажувајќи слика од базата на податоци за обука на секоја од нив. За прикажување на сликата, се користи функцијата „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): Генеративната невронска мрежа е форма на невронска мрежа која се учи да произведува нови податоци кои се споредливи со базата на податоци за обука. ГАН се состојат од две мрежи: генераторска мрежа која создава свежи податоци и дискриминаторска мрежа која го проценува квалитетот на креираните податоци.
Завршување, кои треба да бидат вашите следни чекори?
Истражете неколку онлајн ресурси и курсеви за да дознаете повеќе за обука на невронска мрежа. Работата на проекти или примери е еден од методите за подобро разбирање на невронските мрежи.
Започнете со лесни примери како проблеми со бинарна класификација или задачи за класификација на слики, а потоа одете на потешки задачи како обработка на природен јазик или зајакнување на учење.
Работењето на проекти ви помага да стекнете вистинско искуство и да ги подобрите вештините за обука на невронски мрежи.
Може да се придружите и на групи и форуми за онлајн машинско учење и невронски мрежи за да комуницирате со други ученици и професионалци, да ја споделите вашата работа и да добивате коментари и помош.
LSRS МОНРАД-КРОН
⁶ĵБи сакале да ја видам програмата python за минимизирање на грешките. Специјални изборни јазли за тежината се менуваат на следниот слој