Як зменшити переобладнання за допомогою обмежень ваги в Керасі

Останнє оновлення 25 серпня 2020 року

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

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

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

Після завершення цього підручника ви дізнаєтесь:

  • Як створити обмеження векторної норми за допомогою API Keras.
  • Як додати обмеження ваги до шарів MLP, CNN та RNN за допомогою API Keras.
  • Як зменшити переобладнання, додавши обмеження ваги до існуючої моделі.

Почніть свій проект з моєю новою книгою «Краще глибоке навчання», включаючи покрокові підручники та файли вихідного коду Python для всіх прикладів.

Давайте розпочнемо.

  • Оновлено березень/2019: виправлена ​​помилка при використанні рівності замість призначення в деяких прикладах використання.
  • Оновлено жовтень/2019: Оновлено для Keras 2.3 та TensorFlow 2.0.

обмежень

Як зменшити переобладнання в глибоких нейронних мережах з обмеженнями ваги в Керасі
Фото Ian Sane, деякі права захищені.

Огляд підручника

Цей підручник розділений на три частини; вони є:

  1. Обмеження ваги в Керасі
  2. Обмеження ваги шарів
  3. Приклад обмеження ваги

Обмеження ваги в Керасі

API Keras підтримує обмеження ваги.

Обмеження визначаються для кожного шару, але застосовуються та застосовуються для кожного вузла всередині шару.

Використання обмеження, як правило, передбачає встановлення аргументу kernel_constraint на рівні для вхідних ваг та обмеження bias_constraint для ваг зміщення.

Як правило, обмеження ваги не використовуються для ваг зміщення.

Набір різних векторних норм може бути використаний як обмеження, надані як класи в модулі keras.constraints. Вони є:

  • Максимальна норма (max_norm), щоб змусити ваги мати величину на рівні або нижче заданої межі.
  • Невід’ємна норма (non_neg), щоб змусити ваги мати позитивну величину.
  • Одинична норма (unit_norm), щоб змусити ваги мати величину 1,0.
  • Норма мінімум-макс (min_max_norm), щоб змусити ваги мати величину між діапазоном.

Наприклад, обмеження можна імпортувати та інстанціювати: