Зворотне поширення – найтиповіший алгоритм навчання нейронних мереж. Він дає змогу застосувати градієнтний спуск для багатошарових нейронних мереж. Багато бібліотек коду для машинного навчання (наприклад, Keras) обробляють зворотне поширення автоматично, тому не потрібно виконувати обчислення самостійно. Перегляньте відео нижче, щоб дізнатися про те, як працює зворотне поширення.
Практичні поради щодо навчання нейронних мереж
У цьому розділі пояснюються випадки невдалого застосування зворотного поширення й найтиповіший спосіб регуляризації нейронної мережі.
Проблема зникання градієнтів
Градієнти нижніх шарів нейронної мережі (тих, що ближче до вхідного шару) можуть стати дуже малими. У глибинних мережах (тих, що мають більше ніж один прихований шар) обчислення цих градієнтів може передбачати добуток багатьох малих членів.
Коли значення градієнта наближається до 0 для нижніх шарів, вважається, що градієнти "зникають". Шари з градієнтами, що зникають, або взагалі не навчаються, або роблять це дуже повільно.
Щоб запобігти зникненню градієнтів, можна скористатися функцією активації ReLU.
Проблема вибуху градієнтів
Якщо значення ваги в мережі дуже великі, то градієнти для нижніх шарів складаються з добутків багатьох великих членів. У цьому разі градієнти можуть вибухати: ставати завеликими для досягнення збіжності.
Щоб запобігти градієнтам, що вибухають, можна застосувати пакетну нормалізацію, а також зменшити швидкість навчання.
Проблема мертвого стану об’єктів ReLU
Коли зважена сума для об’єкта ReLU падає нижче 0, він може стати неактивним. Він виводить 0, через що не впливає на вихідні дані мережі, і градієнти більше не можуть проходити через нього під час зворотного поширення. Оскільки джерело градієнтів перекрито, вхідні дані функції ReLU можуть ніколи не змінитися настільки, щоб зважена сума знову стала більшою за 0.
Якщо зменшити швидкість навчання, можна запобігти "вмиранню" об’єктів ReLU.
Регуляризація методом виключення
Регуляризація методом виключення – ще одна форма регуляризації, яка стане в пригоді для нейронних мереж. Вона працює, випадковим чином "виключаючи" результати активації об’єктів у мережі для одного кроку градієнта. Що більше даних виключено, то сильнішою вважається регуляризація.
- 0,0 – немає регуляризації методом виключення.
- 1,0 – виключення всіх вузлів. Модель нічому не навчається.
- Значення від 0,0 до 1,0 корисніші.