Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Реалізація Нейронної Мережі | Основи TensorFlow
Вступ до TensorFlow
Секція 3. Розділ 4
single

single

Реалізація Нейронної Мережі

Свайпніть щоб показати меню

Огляд базової нейронної мережі

Ви вже досягли етапу, коли володієте необхідними знаннями TensorFlow для самостійного створення нейронних мереж. Хоча більшість реальних нейронних мереж є складними і зазвичай створюються за допомогою високорівневих бібліотек, таких як Keras, ми побудуємо базову мережу, використовуючи фундаментальні інструменти TensorFlow. Такий підхід надає практичний досвід роботи з низькорівневою маніпуляцією тензорами, що допомагає зрозуміти внутрішні процеси.

У попередніх курсах, таких як Вступ до нейронних мереж, ви можете згадати, скільки часу та зусиль вимагало створення навіть простої нейронної мережі, опрацьовуючи кожен нейрон окремо.

single_neuron_calc

TensorFlow значно спрощує цей процес. Використовуючи тензори, можна інкапсулювати складні обчислення, зменшуючи потребу у складному кодуванні. Основне завдання — налаштувати послідовний ланцюжок тензорних операцій.

Коротке нагадування про кроки для запуску процесу навчання нейронної мережі:

Підготовка даних та створення моделі

Початковий етап навчання нейронної мережі включає підготовку даних, що охоплює як вхідні, так і вихідні дані, на яких мережа буде навчатися. Додатково встановлюються гіперпараметри моделі — це параметри, які залишаються незмінними протягом усього процесу навчання. Ваги ініціалізуються, зазвичай вибираються з нормального розподілу, а зміщення часто встановлюються в нуль.

Пряме поширення (Forward Propagation)

Під час прямого поширення кожен шар мережі зазвичай виконує такі кроки:

  1. Множення вхідних даних шару на його ваги.
  2. Додавання зміщення до результату.
  3. Застосування функції активації до цієї суми.
carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img

Після цього можна обчислити втрати.

Зворотне поширення

Наступний крок — зворотне поширення, під час якого коригуються ваги та зсуви залежно від їхнього впливу на втрати. Цей вплив представлений градієнтом, який автоматично обчислюється за допомогою Gradient Tape у TensorFlow. Оновлення ваг і зсувів відбувається шляхом віднімання градієнта, помноженого на швидкість навчання.

carousel-imgcarousel-imgcarousel-img

Цикл навчання

Для ефективного навчання нейронної мережі кроки тренування повторюються багаторазово з відстеженням продуктивності моделі. Ідеально, якщо втрата зменшується з кожною епохою.

Завдання

Проведіть, щоб почати кодувати

Створення нейронної мережі для прогнозування результатів операції XOR. Мережа повинна містити 2 вхідних нейрони, прихований шар із 2 нейронами та 1 вихідний нейрон.

  1. Почніть із ініціалізації початкових ваг і зміщень. Ваги слід ініціалізувати за допомогою нормального розподілу, а всі зміщення — ініціалізувати нулями. Використовуйте гіперпараметри input_size, hidden_size та output_size для визначення відповідних форм цих тензорів.
  2. Використайте декоратор функції для перетворення функції train_step() у граф TensorFlow.
  3. Виконайте пряме поширення через прихований і вихідний шари мережі. Використовуйте сигмоїдальну функцію активації.
  4. Визначте градієнти, щоб зрозуміти, як кожна вага і зміщення впливають на функцію втрат. Переконайтеся, що градієнти обчислюються у правильному порядку, відповідно до імен вихідних змінних.
  5. Оновіть ваги і зміщення на основі їх відповідних градієнтів. Враховуйте learning_rate у цьому процесі коригування для контролю величини кожного оновлення.

Рішення

Опис коду
expand arrow

Підготовка даних

  • X_data: це вхідні дані для функції XOR. Це масив NumPy розміром (4, 2), який представляє чотири можливі комбінації вхідних даних XOR: (0,0), (0,1), (1,0) та (1,1);
  • Y_data: це цільовий вихід для кожної комбінації вхідних даних у X_data. Це також масив NumPy, але розміром (4, 1), який представляє вихід XOR для кожної пари вхідних даних.

Параметри мережі

  • input_size: розмір вхідного шару, встановлений на 2, що відповідає двом вхідним вузлам (для двох входів функції XOR);
  • hidden_size: розмір прихованого шару, також встановлений на 2. Це вибір певною мірою довільний, але достатній для навчання функції XOR;
  • output_size: розмір вихідного шару, встановлений на 1, що відповідає одному вихідному вузлу (результат операції XOR);
  • learning_rate: це швидкість навчання для алгоритму оптимізації, яка визначає, наскільки сильно коригуються ваги під час навчання.

Ваги та зсуви

  • W1 та b1: ваги (W1) та зсуви (b1) для з'єднань від вхідного шару до прихованого. W1 — це змінна TensorFlow, ініціалізована випадковими значеннями, розміром (input_size, hidden_size), тобто (2, 2). b1 — це змінна TensorFlow, ініціалізована нулями, розміром (hidden_size), тобто (2);
  • W2 та b2: ваги (W2) та зсуви (b2) для з'єднань від прихованого шару до вихідного. W2 ініціалізується випадковими значеннями, розміром (hidden_size, output_size), тобто (2, 1). b2 ініціалізується нулями, розміром (output_size), тобто (1).

Функція навчання

  • train_step(): основна функція навчання. Використовує tf.GradientTape() для автоматичного диференціювання. На прямому проході обчислює активації прихованого шару (a1) та передбачення виходу (Y_pred). Втрата обчислюється як середньоквадратична помилка між Y_pred та Y. Далі функція обчислює градієнти та оновлює ваги й зсуви;
  • tf.sigmoid(): використовується сигмоїдна активаційна функція, яка перетворює вхід у значення від 0 до 1. Застосовується як для прихованого, так і для вихідного шару.

Цикл навчання

  • Мережу навчають протягом 2500 епох. На кожній епосі викликається функція train_step(), і ваги оновлюються. Втрата виводиться кожні 500 епох для моніторингу прогресу навчання.

Висновок

Оскільки функція XOR є відносно простою задачею, на цьому етапі немає потреби у використанні складних технік, таких як налаштування гіперпараметрів, розділення датасету чи побудова складних конвеєрів даних. Ця вправа — лише крок до створення більш складних нейронних мереж для реальних застосувань.

Опанування цих основ є критично важливим перед переходом до складніших технік побудови нейронних мереж у наступних курсах, де буде використовуватися бібліотека Keras та розглядатимуться методи підвищення якості моделей за допомогою розширених можливостей TensorFlow.

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 4
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

some-alt