Є багато емпіричних доказів того, що досить глибокі нейронні мережі можуть запам'ятовувати випадкові мітки на величезних наборах даних (Chiyuan Zhang, Samy Bengio, Moritz Hardt, Benjamin Recht, Oriol Vinyals, "Розуміння глибокого навчання вимагає переосмислення узагальнення"). Таким чином, в принципі, отримуючи достатньо велику NN, ми завжди можемо зменшити помилку тренувань до надзвичайно малих значень, обмежених на практиці числовою точністю, незалежно від того, наскільки безглуздим є завдання.
Що стосується помилки узагальнення, то це зовсім інше . Ми не можемо бути впевнені, що для кожної навчальної задачі існує модель, що навчається, яка може засвоювати помилку узагальнення як можна менше. З цієї причини перший крок - це
1. Правильно поставте свої очікування
Знайдіть поважну довідку, яка говорить про те, що існує архітектура, яка може дійти до помилки узагальнення, яку ви шукаєте, у вашому наборі даних або на найбільш подібній, на яку ви можете знайти посилання. Наприклад, дивіться тут
Які існують сучасні конволюційні нейронні мережі?
щоб знайти поточну (на момент відповіді) SOTA (State Of The Art) продуктивність для CNN для різних завдань. Перш ніж тренуватися на власному наборі даних, перед тим, як тренуватися на власному наборі даних, спробуйте відтворити такі результати на цих наборах даних, як тест на правильність роботи всієї вашої інфраструктури.
2. Переконайтеся, що ваша тренувальна процедура є бездоганною
Усі перевірки, описані у відповідях на питання
Що робити, коли моя нервова мережа не навчається?
щоб переконатися, що ваша навчальна процедура нормальна, є необхідною умовою для успішного зменшення помилки узагальнення (якщо ваш NN не навчається, він не може навчитися узагальнювати). Ці перевірки включають серед іншого:
- одиничні тести
- перевірка набору даних (ознайомтеся з кількома випадковими зразками введення / мітки як для навчального набору, так і для тестового набору, і перевірте, чи правильні мітки; перевірити ширину та розмір вхідних зображень; перемішайте зразки в навчальному / тестовому наборі та побачите, чи це впливає результати тощо)
- тести рандомізації
- стандартизуйте версію попередньої обробки та пакети
- вести журнал чисельних експериментів
3. Спробуйте досягти суперконвергенції
«Суперконвергенція: дуже швидке навчання нейронних мереж за допомогою великих курсів навчання» Леслі Н. Сміт та Ніколая Топіна показує, що в деяких випадках поєднання великих темпів навчання з методом циклічного навчання Леслі Н. Сміт виступає як регулятор , прискорюючи конвергенцію на порядок і зменшуючи потребу в широкій регуляризації. Таким чином, це добре спробувати раніше
4. Установка регуляризації на MAXXX
Регуляризація часто збільшує час тренувань (погано), збільшує помилку тренувань і зменшує помилку узагальнення (добре), але занадто велика регуляризація може фактично збільшити обидві помилки (недостатність). З цієї причини і через збільшення часу на тренування часто краще впроваджувати різні методи регуляризації по черзі, після того , як ви успішно встигли переобладнати навчальний набір. Зауважте, що сама регуляризація не обов'язково означає, що ваша помилка узагальнення зменшиться: модель повинна мати достатньо велику ємність для досягнення хороших властивостей узагальнення. Це часто означає, що вам потрібна досить глибока мережа, перш ніж ви зможете побачити переваги регуляризації.
Найдавніші методи регуляризації - це, мабуть, рання зупинка та зниження ваги. Деякі з інших:
- m = 16
- використовуйте SGD, а не адаптивні оптимізатори: це вже охоплене @shimao, тому я згадую лише заради повноти
- використовувати відмінювання: якщо ви використовуєте LSTM, використовуйте стандартні відсічі лише для вхідних та вихідних одиниць рівня LSTM. Для періодичних одиниць (воріт) використовують періодичні випади, як вперше показав Ярін Гал у своєму докторантурі. теза . Однак якщо ви використовуєте CNN, зараз випадання використовується рідше. Натомість ви схильні ...
- ... використовувати пакетну нормалізацію: найсвіжіші архітектури CNN відмовляються від виходу на користь пакетної нормалізації. Це може бути просто придумкою, або це може бути пов’язано з тим, що, очевидно, нормалізація випадання та партії не грає добре разом (Сян Лі, Шуо Чен, Сяолін Ху, Цзянь Ян, розуміння дисгармонії між випаданням та нормалізацією партії за варіантом Зсув ). Оскільки пакетна норма є більш ефективною, ніж випадання, коли у вас є величезні набори даних, це може бути причиною того, що випадання не вийшло з користі для архітектур CNN. Якщо ви використовуєте пакетну нормалізацію, переконайтеся, що розподіл ваг і ухилів для кожного шару виглядає приблизно нормально нормально. Для РНН реалізація партії норми є складною: нормалізація ваги (Тім Саліманс, Дідерік П. Кінгма,Нормалізація ваги: проста перепараметризація для прискорення навчання глибоких нейронних мереж ) є життєздатною альтернативою.
- використовуйте збільшення даних: воно також має ефект регуляризації.
5. Гіперпараметр / пошук архітектури
Якщо нічого іншого не допомагає, вам доведеться протестувати кілька різних параметрів гіперпараметра (тут може допомогти Байєсова оптимізація) або кілька різних архітектурних змін (наприклад, можливо, у вашій архітектурі GAN та для набору даних, над яким ви працюєте, пакетна норма працює лише в генератор, але коли його також додають до дискримінатора, це стає гірше). Обов’язково слідкуйте за результатами цих довгих і нудних експериментів у добре впорядкованому журналі.
PS для GAN не має сенсу говорити про помилку узагальнення: вищенаведений приклад мав на увазі лише як вказівку на те, що в Deep Learning все ще багато алхімії, і речі, які, як ви очікували, спрацюють нормально, іноді не 'т, або, навпаки, щось, що спрацювало нормально багато разів, раптом нападає на вас за новим набором даних.