За допомогою інтерактивних вправ, наведених нижче, ви продовжите вивчати, як влаштовані нейронні мережі. По-перше, ви побачите, як зміни параметрів і гіперпараметрів впливають на прогнози мережі. Потім ви використаєте отримані знання, щоб навчити нейронну мережу пристосовуватися до нелінійних даних.
Вправа 1
За допомогою віджета, розміщеного нижче, налаштовується нейронна мережа з такою конфігурацією:
- вхідний шар із трьома нейронами, що містять значення
0.00
,0.00
і0.00
; - прихований шар із 4 нейронами;
- вихідний шар з 1 нейроном;
- функція активації ReLU застосовується до всіх вузлів прихованого шару й вихідного вузла.
Перегляньте початкові налаштування мережі (примітка: поки не натискайте кнопки ▶️ або >|), а потім виконайте завдання, наведені під віджетом.
Завдання 1
Значення для трьох вхідних ознак моделі нейронної мережі – 0.00
. Натисніть кожен із вузлів мережі, щоб переглянути всі ініціалізовані значення. Перш ніж натиснути кнопку▶️, дайте відповідь на запитання, наведене нижче.
Тепер натисніть кнопку відтворення (▶️) над мережею і спостерігайте, як заповнюються всі значення прихованого шару й вихідних вузлів. Чи правильною була ваша відповідь?
Натисніть тут, щоб дізнатися більше
Точне вихідне значення, яке ви отримаєте, залежатиме від випадкової ініціалізації параметрів ваги й упередженості. Але оскільки кожен нейрон вхідного шару має значення 0, параметри ваги, що використовуються для обчислення значень вузлів прихованого шару, обнулюються. Наприклад, обчислення першого вузла прихованого шару матиме такий вигляд:
y = ReLU (w11 * 0,00 + w21 * 0,00 + w31 * 0,00 + b)
y = ReLU(b)
Таким чином, значення кожного вузла прихованого шару дорівнюватиме ReLU-значенню упередженості (b), яке становитиме 0, якщо значення b від’ємне, і b, якщо воно дорівнює 0 або додатне.
Значення вихідного вузла обчислюватиметься так:
y = ReLU (w11 * x11 + w21 * x21 + w31 * x31 + w41 * x41 + b)
Завдання 2
Перш ніж змінювати нейронну мережу, дайте відповідь на запитання, наведене нижче.
Тепер змінімо нейронну мережу, додавши новий прихований шар із 3 вузлами так, як описано нижче.
- Натисніть кнопку + зліва біля тексту 1 прихований шар, щоб додати новий такий шар перед вихідним.
- Натисніть кнопку + над новим прихованим шаром двічі, щоб додати до нього ще 2 вузли.
Чи правильною була ваша відповідь?
Натисніть тут, щоб дізнатися більше
Змінюється лише вихідний вузол. Оскільки виведення результатів для цієї нейронної мережі є "прямим" (обчислення відбуваються від початку до кінця), додавання до неї нового шару вплине лише на вузли, розташовані після нього, а не на ті, що передують йому.
Завдання 3
Натисніть другий вузол (зверху) на першому прихованому шарі графіка мережі. Перш ніж вносити будь-які зміни в конфігурацію мережі, дайте відповідь на запитання, наведене нижче.
Тепер натисніть у текстовому полі для параметра ваги w12 (він відображається під першим вхідним вузлом x1), змініть його значення на 5.00
і натисніть Enter.
Зверніть увагу на те, як змінюється графік.
Чи була ваша відповідь правильною? Уважно перевіряйте відповідь: якщо значення вузла не змінилося, чи означає це, що не змінилися основні розрахунки?
Натисніть тут, щоб дізнатися більше
Другий вузол (той, який ви натиснули) – єдиний, на який впливає перший прихований шар. В обчисленнях значень для інших вузлів першого прихованого шару немає w12 як параметра, тому на них це не впливає. Усі вузли другого прихованого шару буде змінено, оскільки їх розрахунки залежать від значення другого вузла першого такого шару. Те саме стосується значення вихідного вузла, оскільки його обчислення залежать від значень вузлів другого прихованого шару.
Ви подумали, що відповідь – "Не вплине на інші вузли", тому що значення вузлів у мережі лишилися такими самими, коли ви змінили значення ваги? Зверніть увагу, що зміни в основних обчисленнях не завжди помітно по значенню вузла [наприклад, і ReLU(0), і ReLU(–5) дають вихідне значення 0]. Не робіть припущень про вплив на мережу, просто дивлячись на те, чи змінилися значення вузлів. Обов’язково переглядайте обчислення.
Вправа 2
Виконуючи вправи на поєднання ознак з модуля "Категорійні дані" ви вручну поєднували ознаки для нелінійних даних. Тепер ви дізнаєтеся, чи можна побудувати нейронну мережу, яка автоматично навчиться пристосовуватися до нелінійних даних під час навчання.
Завдання. Налаштуйте нейронну мережу, яка зможе відокремити помаранчеві точки від синіх на діаграмі нижче. Втрати мають становити менше ніж 0,2 як для навчальних, так і для тестових даних.
Вказівки
В інтерактивному віджеті нижче виконайте дії, наведені нижче.
- Змініть гіперпараметри нейронної мережі, експериментуючи з деякими налаштуваннями конфігурації, указаними нижче.
- Додайте або видаліть приховані шари, натиснувши кнопку + чи – зліва від заголовка ПРИХОВАНІ ШАРИ на діаграмі мережі.
- Додайте або видаліть нейрони з прихованого шару, натиснувши кнопку + чи – над стовпцем прихованого шару.
- Змініть швидкість навчання, вибравши нове значення зі спадного списку Швидкість навчання над діаграмою.
- Змініть функцію активації, вибравши нове значення зі спадного списку Активація над діаграмою.
- Натисніть кнопку відтворення (▶️) над діаграмою, щоб навчати модель нейронної мережі за вказаними параметрами.
- Зверніть увагу на візуалізацію пристосування моделі до даних під час навчання, а також на значення Втрати при тестуванні й Втрати при навчанні, наведені в розділі Вихідні дані.
- Якщо модель не досягає втрат, нижчих ніж 0,2, з тестовими й навчальними даними, натисніть кнопку скидання й повторіть кроки 1–3 з іншим набором налаштувань конфігурації. Повторюйте цей процес, доки не досягнете бажаних результатів.
Натисніть тут, щоб дізнатися наше рішення
Ми змогли досягти втрат, нижчих ніж 0,2, під час і тестування, і навчання. Ось як це зробити:
- додайте 1 прихований шар із 3 нейронами;
- виберіть швидкість навчання 0,01;
- виберіть функцію активації ReLU.