Зміст[Сховати][Показати]
Останніми роками популярність нейронних мереж зросла, оскільки вони показали, що надзвичайно добре справляються з широким спектром завдань.
Було показано, що вони є чудовим вибором для розпізнавання зображень і аудіо, обробки природної мови та навіть гри в складні ігри, такі як го та шахи.
У цій публікації я розповім вам про весь процес навчання нейронної мережі. Я згадаю та поясню всі етапи навчання нейронної мережі.
Поки я розглядаю кроки, я хотів би додати простий приклад, щоб переконатися, що є практичний приклад.
Тож давайте навчимося обробляти нейронні мережі
Давайте почнемо з простого і запитаємо, що таке нейронні мережі на першому місці.
Що таке нейронні мережі?
Нейронні мережі — це комп’ютерне програмне забезпечення, яке імітує роботу людського мозку. Вони можуть вчитися на величезних масивах даних і виявляти закономірності, які людям важко виявити.
Популярність нейронних мереж в останні роки зросла через їхню універсальність у таких завданнях, як розпізнавання зображень і звуку, обробка природної мови та прогнозне моделювання.
Загалом, нейронні мережі є потужним інструментом для широкого спектру застосувань і мають шанс змінити наш підхід до широкого спектру завдань.
Чому ми повинні про них знати?
Розуміння нейронних мереж є критично важливим, оскільки вони призвели до відкриттів у різноманітних галузях, включаючи комп’ютерне бачення, розпізнавання мови та обробку природної мови.
Нейронні мережі, наприклад, є основою останніх розробок у безпілотних автомобілях, службах автоматичного перекладу та навіть медичній діагностиці.
Розуміння того, як функціонують нейронні мережі та як їх проектувати, допомагає нам створювати нові та винахідливі програми. І, можливо, це може призвести до ще більших відкриттів у майбутньому.
Примітка щодо підручника
Як я вже сказав вище, я хотів би пояснити етапи навчання нейронної мережі на прикладі. Для цього слід говорити про набір даних 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 для мінімізації помилок. Спеціальні вузли вибору для зміни ваги на наступний шар