Съдържание[Крия][Покажи]
През последните години популярността на невронните мрежи нарасна, тъй като се оказаха изключително добри при широк спектър от задачи.
Доказано е, че те са чудесен избор за разпознаване на изображения и аудио, обработка на естествен език и дори игра на сложни игри като го и шах.
В тази публикация ще ви преведа през целия процес на обучение на невронна мрежа. Ще спомена и обясня всички стъпки за обучение на невронна мрежа.
Докато ще прегледам стъпките, бих искал да добавя прост пример, за да съм сигурен, че има и практически пример.
Така че, елате и нека се научим как да обработваме невронни мрежи
Нека започнем просто и да попитаме какво са невронни мрежи на първо място.
Какво точно представляват невронните мрежи?
Невронните мрежи са компютърен софтуер, който симулира работата на човешкия мозък. Те могат да се учат от огромни обеми данни и петна модели, които хората може да се окажат трудни за откриване.
Популярността на невронните мрежи нарасна през последните години поради тяхната гъвкавост в задачи като разпознаване на картина и звук, обработка на естествен език и прогнозно моделиране.
Като цяло, невронните мрежи са силен инструмент за широк спектър от приложения и имат шанс да трансформират начина, по който подхождаме към широк спектър от работни места.
Защо трябва да знаем за тях?
Разбирането на невронните мрежи е критично, защото те са довели до открития в различни области, включително компютърно зрение, разпознаване на реч и обработка на естествен език.
Невронните мрежи, например, са в основата на последните разработки в самоуправляващите се автомобили, услугите за автоматичен превод и дори медицинската диагностика.
Разбирането как функционират невронните мрежи и как да ги проектираме ни помага да създаваме нови и изобретателни приложения. И може би това може да доведе до още по-големи открития в бъдеще.
Бележка относно урока
Както казах по-горе, бих искал да обясня стъпките за обучение на невронна мрежа, като дам пример. За да направим това, трябва да говорим за набора от данни 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.
- Автоенкодери: Обучаваща се невронна мрежа без надзор, в която мрежата се обучава да възпроизвежда своите входни данни на своя изходен слой. Компресирането на данни, откриването на аномалии и обезшумяването на картината могат да бъдат постигнати с автоматични енкодери.
- Generative Adversarial Networks (GAN): Генеративната невронна мрежа е форма на невронна мрежа, която се научава да произвежда нови данни, които са сравними с набор от данни за обучение. GAN се състоят от две мрежи: генераторна мрежа, която създава нови данни, и дискриминаторна мрежа, която оценява качеството на създадените данни.
Заключение, какви трябва да бъдат следващите ви стъпки?
Разгледайте няколко онлайн ресурса и курсове, за да научите повече за обучението на невронна мрежа. Работата по проекти или примери е един от методите за по-добро разбиране на невронните мрежи.
Започнете с лесни примери като проблеми с двоична класификация или задачи за класификация на картини и след това преминете към по-трудни задачи като обработка на естествен език или укрепване.
Работата по проекти ви помага да придобиете реален опит и да подобрите уменията си за обучение на невронни мрежи.
Можете също да се присъедините към групи и форуми за онлайн машинно обучение и невронни мрежи, за да взаимодействате с други обучаеми и професионалисти, да споделяте работата си и да получавате коментари и помощ.
LSRS MONRAD-KROHN
⁶ĵБих искал да видя програмата на Python за минимизиране на грешките. Специални възли за избор за промени в теглото на следващия слой