Batch Normalization
Оновлено: 31.07.2023
Що таке пакетна нормалізація?
Пакетна нормалізація - це підхід до глибокого навчання, який, як було доведено, значно підвищує ефективність і надійність нейромережевих моделей. Він особливо корисний для навчання дуже глибоких мереж, оскільки може допомогти зменшити внутрішній зсув коваріацій, який може виникнути під час навчання.
- Базова нормалізація - це навчання під наглядомметод нормалізації міжшарових виходів нейронної мережі. В результаті наступний шар отримує "перезавантаження" розподілу виходу від попереднього шару, що дозволяє йому більш ефективно аналізувати дані.
Термін "внутрішній зсув коваріати" використовується для опису ефекту, який оновлення параметрів шарів, розташованих вище, має на розподіл вхідних даних для поточного шару під час навчання з глибоким навчанням. Це може ускладнити процес оптимізації та уповільнити збіжність моделі.
Оскільки нормалізація гарантує, що жодне значення активації не буде занадто високим або занадто низьким, і оскільки вона дозволяє кожному шару навчатися незалежно від інших, ця стратегія призводить до швидшого навчання.
Стандартизуючи вхідні дані, можна зменшити рівень "відсіву" (кількість інформації, втраченої між етапами обробки). Це, зрештою, призводить до значного підвищення точності в цілому.
Як працює пакетна нормалізація?
Пакетна нормалізація - це метод, який використовується для покращення продуктивності мережі глибокого навчання, спочатку видаляючи середнє значення пакету, а потім розбиваючи його на стандартне відхилення пакету.
Стохастичний градієнтний спуск використовується для виправлення цієї стандартизації, якщо функція втрат занадто велика, шляхом зсуву або масштабування виходів на параметр, який, у свою чергу, впливає на точність ваг у наступному шарі.
При застосуванні до шару пакетна нормалізація множить його вихідні дані на параметр стандартного відхилення (гамма) і додає до них середній параметр (бета) як вторинний параметр, що навчається. Дані можна "денормалізувати", налаштувавши лише ці дві ваги для кожного виходу, завдяки синергії між пакетною нормалізацією та градієнтними спусками. Зменшення втрат даних та покращення стабільності мережі є результатом коригування інших вагових коефіцієнтів.
Метою пакетної нормалізації є стабілізація процесу навчання та покращення здатності моделі до узагальнення. Вона також може допомогти зменшити потребу в ретельній ініціалізації ваг моделі і дозволяє використовувати більш високі швидкості навчання, що може прискорити процес навчання.
Пакетна нормалізація є поширеною практикою перед активацією функції шару, і вона часто використовується в тандемі з іншими методами нормалізації, такими як відсікання. Це широко використовувана техніка в сучасному глибокому навчанні, яка довела свою ефективність у різних завданнях, включаючи класифікацію зображень, обробку природної мови та машинний переклад.
Переваги пакетної нормалізації
- Стабілізація процесу навчання. Пакетна нормалізація може допомогти зменшити внутрішній зсув коваріацій, який відбувається під час навчання, що може покращити стабільність процесу навчання і полегшити оптимізацію моделі.
- Покращує узагальнення. Нормалізуючи активації шару, пакетна нормалізація може допомогти зменшити перенавчання та покращити здатність моделі до узагальнення.
- Зменшує потребу в ретельній ініціалізації. Пакетна нормалізація може допомогти зменшити чутливість моделі до початкових ваг, що полегшує навчання моделі.
- Дозволяє підвищити швидкість навчання. Пакетна нормалізація може дозволити використовувати вищі швидкості навчання, що може пришвидшити процес навчання.
Перенастроювання пакетної нормалізації
Хоча пакетна нормалізація може допомогти зменшити перенавчання, вона не є гарантією того, що модель не буде перенавчатися. Перенавчання все одно може відбутися, якщо модель занадто складна для обсягу навчальних даних, якщо в даних багато шуму або якщо є інші проблеми з процесом навчання. Важливо використовувати інші методи регуляризації, такі як відсіювання, і стежити за роботою моделі на валідаційному наборі під час навчання, щоб переконатися, що вона не перенавчається.
Рівняння пакетної нормалізації
Під час навчання активації шару нормалізуються для кожної міні-партії даних за допомогою наступних рівнянь:
- Середнє: середнє = 1/m ∑i=1 - m xi
- Дисперсія: дисперсія = 1/m ∑i=1 - m (xi - середнє)^2
- Нормовані активації: yi = (xi - середнє) / sqrt(дисперсія + ε)
- Масштабовані та зсунуті активації: zi = γyi + β, де γ та β є вивченими параметрами
Під час виведення активації шару нормалізуються за допомогою середнього значення та дисперсії активацій, розрахованих під час навчання, а не за допомогою середнього значення та дисперсії міні-партії:
- Нормовані активації: yi = (xi - середнє) / sqrt(дисперсія + ε)
- Масштабовані та зсунуті активації: zi = γyi + β
Базова нормалізація у PyTorch
У PyTorch пакетну нормалізацію можна реалізувати за допомогою модуля BatchNorm2d, який можна застосувати на виході згорткового шару. Наприклад:
імпортувати torch.nn як nn model = nn. Sequential( nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, padding=1), nn.BatchNorm2d(num_features=16), nn.ReLU(), # ... )
Модуль BatchNorm2d приймає кількість каналів (тобто кількість ознак) у вхідних даних як аргумент і застосовує пакетну нормалізацію за просторовими розмірами (висотою і шириною) вхідних даних. Модуль BatchNorm2d також має параметри для масштабування та зсуву нормалізованих активацій, які навчаються і оновлюються під час навчання.