Що робити, коли моя нейронна мережа погано генералізується?


37

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


Щодо питання

Що робити, коли моя нервова мережа не навчається?

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

Дивіться також виділені теми про Meta:

Чи є загальне питання, на яке ми можемо перенаправляти запитання типу "чому моя нейронна мережа не добре узагальнена?"


4
Якщо ви плануєте опублікувати власну вичерпну відповідь, можливо, було б корисно одночасно розміщувати питання Q і A (користувальницький інтерфейс це дозволяє). Інакше ти заохочуєш інших людей писати відповіді, і ми можемо закінчити кілька відповідей, які частково дублюють один одного ... У будь-якому разі, з нетерпінням чекаю вашої відповіді.
амеба каже, що повернеться Моніка

@amoeba ах, я цього не знав: інтерфейс користувача відкриває спливаюче вікно, коли я намагаюся відповісти на питання, тому я подумав, що питання Q & A неможливо розмістити разом .... Ну, якщо хтось пише краще / більше повна відповідь, ніж те, що я збирався написати, я просто уникатиму додавати дублікат.
DeltaIV

Відповіді:


37

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

Тренуючи нейронну мережу, ви постійно оцінюєте її на наборі мічених даних, що називається навчальним набором . Якщо ваша модель не працює належним чином і, здається, не навчається з навчального набору, у вас ще немає проблеми з узагальненням, натомість зверніться до цієї публікації . Однак, якщо ваша модель є досягнення задовільних результатів на навчальному наборі, але не може виконувати також на раніше невидимих даних (наприклад , перевірки / тестування комплектів), то ви робите є проблеми узагальнення.

Чому ваша модель не узагальнюється належним чином?

Найважливіша частина - розуміння того, чому ваша мережа не працює на загальному рівні. Моделі машинного навчання з високою ємністю мають можливість запам'ятовувати навчальний набір, що може призвести до надмірного оснащення .

Переобладнання - це стан, коли оцінювач почав так добре засвоювати навчальний набір, що він почав моделювати шум у навчальних зразках (крім усіх корисних відносин).

Наприклад, на зображенні нижче ми бачимо, як синя лінія чітко перевершує.

Але чому це погано?

При спробі оцінити нашу модель за новими, раніше небаченими даними (тобто валідацією / тестовим набором), продуктивність моделі буде набагато гіршою, ніж ми очікуємо.

Як попередити перенапруження?

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

  • Параметр норми штрафних санкцій . Вони додають додатковий термін до функції оновлення ваги кожної моделі, що залежить від норми параметрів. Метою цього терміна є протидія фактичному оновленню (тобто обмежити кількість кожної ваги, яку можна оновити). Це робить моделі більш надійними для виснаження та шуму. Прикладами таких регуляризацій є регуляризація L1 та L2 , яку можна знайти на регресорах Лассо , Рідж та Еластична мережа .
    Оскільки кожен (повністю пов'язаний) шар у нейронній мережі функціонує так само, як і проста лінійна регресія, вони використовуються в нейронних мережах. Найбільш поширене використання - регуляризація кожного шару окремо.
    реалізація керас .

  • Рання зупинка . Ця методика намагається передчасно зупинити навчальний етап оцінювача, в той момент, коли він навчився витягувати всі значущі зв'язки з даних, перш ніж почати моделювати його шум. Це робиться шляхом контролю за втрати перевірки (або перевірки метрики за вашим вибором) і завершення фази навчання , коли ця метрика упори поліпшується . Таким чином ми даємо оцінювачу достатньо часу, щоб засвоїти корисну інформацію, але недостатньо, щоб навчитися шуму.
    реалізація керас .

  • Специфічні регуляризації нейронної мережі . Деякі приклади:
    • Випадання . Випадання - цікава техніка, яка працює напрочуд добре. Випадання застосовується між двома послідовними шарами в мережі. При кожній ітерації заданий відсоток з'єднань (вибраних випадковим чином), що з'єднують два шари, випадає . Це змушує наступний шар покладатися на всі його з'єднання з попереднім шаром.
      реалізація керас
    • Трансферне навчання . Це особливо використовується в глибокому навчанні. Це робиться шляхом ініціалізації ваг вашої мережі до іншої мережі з тією ж архітектурою, попередньо навченої на великому, загальному наборі даних.
    • Інші речі, які можуть обмежувати перевитрати в глибоких нейронних мережах, це: Нормалізація партії , яка може діяти як регулятор, а в деяких випадках (наприклад, початкові модулі) працює, а також відпадає; відносно невеликі партії в SGD, що також може запобігти надмірне оснащення; додавання невеликих випадкових шумів до ваг у прихованих шарах.

Ще одним способом запобігання надмірного розміру, крім обмеження можливостей моделі, є підвищення якості ваших даних. Найбільш очевидним вибором буде зовнішнє / видалення шуму , однак на практиці їх корисність обмежена. Більш поширеним способом (особливо у завданнях, пов’язаних із зображенням) є збільшення даних . Тут ми намагаємось випадковим чином трансформувати приклади тренінгу, щоб, хоча вони здаються, що модель є різною, вони передають однакову семантичну інформацію (наприклад, гортання ліво-право на зображення).
Огляд збільшення даних

Практичні пропозиції:

  • На сьогоднішній день найефективнішою технікою регуляризації є випадання , що означає, що вона повинна бути першою, яку ви повинні використовувати. Однак вам не потрібно (і, мабуть, не слід) розміщувати випадання всюди! Найбільш схильні шари до переобладнання - це шари повністю з'єднані (FC), оскільки вони містять найбільше параметрів. Випадання слід наносити на ці шари (впливаючи на їх з'єднання з наступним шаром).
  • Пакетна нормалізація , окрім ефекту регуляризації, допомагає вашій моделі кількома іншими способами (наприклад, прискорює конвергенцію, дозволяє використовувати більш високі показники навчання). Це теж слід використовувати в шарах ФК.
  • Як вже згадувалося раніше, також може бути корисно зупинити свою модель раніше на етапі тренувань, ніж заплановано. Проблема з ранньою зупинкою полягає в тому, що немає гарантії того, що в будь-який момент модель знову не почне вдосконалюватися. Більш практичний підхід, ніж рання зупинка, - це зберігання ваг моделі, які досягають найкращих показників на наборі перевірки. Однак будьте обережні, оскільки це не об'єктивна оцінка ефективності вашої моделі (просто краща за навчальний набір). Ви також можете перевиконати набір для перевірки. Детальніше про це пізніше.
    реалізація керас
  • У деяких програмах (наприклад, пов'язані із зображеннями) дуже рекомендується дотримуватися вже створеної архітектури (наприклад, VGG, ResNet, Inception), для якої можна знайти ваги ImageNet. Універсальний характер цього набору даних дозволяє в свою чергу функції бути загальними для використання у будь-яких завданнях, пов’язаних із зображенням. Окрім того, що буде надмірно сильним, це значно скоротить час навчання.
    Ще одне використання подібної концепції полягає в наступному: якщо у вашому завданні не так багато даних, але ви можете знайти ще одне подібне завдання, яке є, ви можете використовувати трансферне навчання для зменшення перевитрати. Спочатку навчіть свою мережу до завдання, яке має більший набір даних, а потім спробуйте налагодити йогомодель до тієї, яку ви спочатку хотіли. Початкова підготовка, в більшості випадків, зробить вашу модель більш надійною для нарядження.
  • Розширення даних . Хоча це завжди допомагає мати більший набір даних, методи збільшення даних мають свої недоліки. Більш конкретно, ви повинні бути обережними, щоб не збільшувати їх занадто сильно , оскільки це може зіпсувати смисловий зміст даних. Наприклад, при збільшенні зображення, якщо ви перекладаєте / змінюєте / масштабуєте або регулюєте яскравість / контрастність зображення, ви втратите велику частину інформації, яку він містить. Крім того, схеми нарощування потрібно застосовувати для кожного завдання спеціально (наприклад, в розпізнаванні від руки написані цифри, як правило, вирівнюються і не повинні занадто сильно обертатись; вони також не повинні перевертатися в будь-якому напрямку, оскільки вони не горизонтально / вертикально симетричні. Те саме стосується медичних зображень).
    Коротше кажучи, будьте обережні, щоб не створювати нереалістичні зображення шляхом збільшення даних. Крім того, збільшений розмір набору даних потребує більш тривалого часу на навчання. Особисто я починаю розглядати питання над збільшенням даних, коли бачу, що моя модель досягає майже втрат на навчальному наборі.0

9

Є багато емпіричних доказів того, що досить глибокі нейронні мережі можуть запам'ятовувати випадкові мітки на величезних наборах даних (Chiyuan Zhang, Samy Bengio, Moritz Hardt, Benjamin Recht, Oriol Vinyals, "Розуміння глибокого навчання вимагає переосмислення узагальнення"). Таким чином, в принципі, отримуючи достатньо велику NN, ми завжди можемо зменшити помилку тренувань до надзвичайно малих значень, обмежених на практиці числовою точністю, незалежно від того, наскільки безглуздим є завдання.

Що стосується помилки узагальнення, то це зовсім інше . Ми не можемо бути впевнені, що для кожної навчальної задачі існує модель, що навчається, яка може засвоювати помилку узагальнення як можна менше. З цієї причини перший крок - це

1. Правильно поставте свої очікування

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

Які існують сучасні конволюційні нейронні мережі?

щоб знайти поточну (на момент відповіді) SOTA (State Of The Art) продуктивність для CNN для різних завдань. Перш ніж тренуватися на власному наборі даних, перед тим, як тренуватися на власному наборі даних, спробуйте відтворити такі результати на цих наборах даних, як тест на правильність роботи всієї вашої інфраструктури.

2. Переконайтеся, що ваша тренувальна процедура є бездоганною

Усі перевірки, описані у відповідях на питання

Що робити, коли моя нервова мережа не навчається?

щоб переконатися, що ваша навчальна процедура нормальна, є необхідною умовою для успішного зменшення помилки узагальнення (якщо ваш NN не навчається, він не може навчитися узагальнювати). Ці перевірки включають серед іншого:

  • одиничні тести
  • перевірка набору даних (ознайомтеся з кількома випадковими зразками введення / мітки як для навчального набору, так і для тестового набору, і перевірте, чи правильні мітки; перевірити ширину та розмір вхідних зображень; перемішайте зразки в навчальному / тестовому наборі та побачите, чи це впливає результати тощо)
  • тести рандомізації
  • стандартизуйте версію попередньої обробки та пакети
  • вести журнал чисельних експериментів

3. Спробуйте досягти суперконвергенції

«Суперконвергенція: дуже швидке навчання нейронних мереж за допомогою великих курсів навчання» Леслі Н. Сміт та Ніколая Топіна показує, що в деяких випадках поєднання великих темпів навчання з методом циклічного навчання Леслі Н. Сміт виступає як регулятор , прискорюючи конвергенцію на порядок і зменшуючи потребу в широкій регуляризації. Таким чином, це добре спробувати раніше

4. Установка регуляризації на MAXXX

Регуляризація часто збільшує час тренувань (погано), збільшує помилку тренувань і зменшує помилку узагальнення (добре), але занадто велика регуляризація може фактично збільшити обидві помилки (недостатність). З цієї причини і через збільшення часу на тренування часто краще впроваджувати різні методи регуляризації по черзі, після того , як ви успішно встигли переобладнати навчальний набір. Зауважте, що сама регуляризація не обов'язково означає, що ваша помилка узагальнення зменшиться: модель повинна мати достатньо велику ємність для досягнення хороших властивостей узагальнення. Це часто означає, що вам потрібна досить глибока мережа, перш ніж ви зможете побачити переваги регуляризації.

Найдавніші методи регуляризації - це, мабуть, рання зупинка та зниження ваги. Деякі з інших:

  • м=16
  • використовуйте SGD, а не адаптивні оптимізатори: це вже охоплене @shimao, тому я згадую лише заради повноти
  • використовувати відмінювання: якщо ви використовуєте LSTM, використовуйте стандартні відсічі лише для вхідних та вихідних одиниць рівня LSTM. Для періодичних одиниць (воріт) використовують періодичні випади, як вперше показав Ярін Гал у своєму докторантурі. теза . Однак якщо ви використовуєте CNN, зараз випадання використовується рідше. Натомість ви схильні ...
  • ... використовувати пакетну нормалізацію: найсвіжіші архітектури CNN відмовляються від виходу на користь пакетної нормалізації. Це може бути просто придумкою, або це може бути пов’язано з тим, що, очевидно, нормалізація випадання та партії не грає добре разом (Сян Лі, Шуо Чен, Сяолін Ху, Цзянь Ян, розуміння дисгармонії між випаданням та нормалізацією партії за варіантом Зсув ). Оскільки пакетна норма є більш ефективною, ніж випадання, коли у вас є величезні набори даних, це може бути причиною того, що випадання не вийшло з користі для архітектур CNN. Якщо ви використовуєте пакетну нормалізацію, переконайтеся, що розподіл ваг і ухилів для кожного шару виглядає приблизно нормально нормально. Для РНН реалізація партії норми є складною: нормалізація ваги (Тім Саліманс, Дідерік П. Кінгма,Нормалізація ваги: ​​проста перепараметризація для прискорення навчання глибоких нейронних мереж ) є життєздатною альтернативою.
  • використовуйте збільшення даних: воно також має ефект регуляризації.

5. Гіперпараметр / пошук архітектури

Якщо нічого іншого не допомагає, вам доведеться протестувати кілька різних параметрів гіперпараметра (тут може допомогти Байєсова оптимізація) або кілька різних архітектурних змін (наприклад, можливо, у вашій архітектурі GAN та для набору даних, над яким ви працюєте, пакетна норма працює лише в генератор, але коли його також додають до дискримінатора, це стає гірше). Обов’язково слідкуйте за результатами цих довгих і нудних експериментів у добре впорядкованому журналі.

PS для GAN не має сенсу говорити про помилку узагальнення: вищенаведений приклад мав на увазі лише як вказівку на те, що в Deep Learning все ще багато алхімії, і речі, які, як ви очікували, спрацюють нормально, іноді не 'т, або, навпаки, щось, що спрацювало нормально багато разів, раптом нападає на вас за новим набором даних.


5

Перелік часто використовуваних методів регуляризації, які я бачив у літературі:

  1. Використання пакетної нормалізації, що є напрочуд ефективним регуляризатором до того моменту, коли я рідко бачу, як випадає вже використовується, тому що це просто не потрібно.
  2. Невелика кількість розпаду ваги.
  3. Деякі новітні методи регуляризації включають в себе Shake-Shake ("Шейк-Шейк-регуляризація" Ксав'є Гасталді) та Cutout ("Поліпшена регуляризація конволюційних нейронних мереж з вирізом" Терренса ДеВріса та Грем У. Тейлора). Зокрема, простота, з якою можна реалізувати виріз, робить її дуже привабливою. Я вважаю, що це працює краще, ніж випадання, але я не впевнений.
  4. Якщо можливо, віддайте перевагу повністю згортковій архітектурі архітектурам із повністю пов'язаними шарами. Порівняйте VGG-16, який має 100 мільйонів параметрів в одному повністю з'єднаному шарі, з Resnet-152, який має в 10 разів більше шарів і ще менше параметрів.
  5. Віддайте перевагу SGD іншим оптимізаторам, таким як Rmsprop і Adam. Показано, що він узагальнює краще. ("Покращення продуктивності генералізації шляхом переходу з Адама на SGD" Нітіш Ширіш Кескар та Річард Сочер)

0

Я відчуваю, що Djib2011, дають великі моменти щодо автоматизованих методів, але вони насправді не вирішують основної проблеми, як ми можемо знати, чи використовував метод для зменшення перевитрати свою роботу. Отож, як важливу виноску до відповіді DeltaIV, я хотів включити це на основі останніх досліджень за останні 2 роки. Переобладнання для нейронних мереж стосується не надмірного запам’ятовування моделі, а й неможливості моделей вивчати нові речі або мати справу з аномаліями.

Виявлення переоснащення в моделі чорного ящика: інтерпретаційність моделі безпосередньо пов'язана з тим, наскільки добре ви можете сказати здатності моделей узагальнювати. Таким чином, багато інтерпретаційних сюжетів є методами виявлення перевитрати і можуть підказати, наскільки добре працює будь-який із запропонованих вище методів. Діаграми інтерпретаційності безпосередньо виявляють це, особливо якщо порівнювати графіки результатів перевірки та тестування. Глави 5 та 6 цієї неопублікованої книги розповідають про останні досягнення в галузі виявлення надлишкового обладнання: інтерпретоване моделювання

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

  1. Визначення вибору функцій : Чим менше число параметрів і менше функцій, тим ваша модель має кращу. Тож якщо ви включите лише важливі з 100 мільйонів (можливо, замість цього 75 мільйонів), у вас буде краща узагальнююча модель. Проблема полягає в тому, що багато нейронних мереж не є ідеальними в підборі особливостей, особливо коли є номер 2. Bootstrap або Boosting принципово не можуть виправити і те й інше (може лише версія, яка називається wild bootstrap). Простіше кажучи, якщо ви надаєте вам дані про невронну мережу, то вони видадуть вам бажання. (Згадана вище нормалізація L2 дуже добре допомагає в цьому)

  2. Виявлення та боротьба з аномаліями: Чим менше "застарілих", тим узагальненіша модель. Під "чужими людьми" ми не маємо на увазі лише старі люди в даних. Отримані в даних дані (на зразок виду, який ви бачите з графіком поля) - це занадто вузьке визначення для нейронних мереж. Потрібно враховувати також і ті, що випадають з похибки в моделі, яку називають впливом, а також інші аномалії. Тому важливо виявити аномалії перед запуском мережі. Нейронна сітка може бути надійною щодо одного типу аномалії, але міцною не проти всіх інших типів. Методи зустрічного прикладу, методи критики та методи змагальних прикладів та схеми впливу впливають на те, щоб допомогти вам виявити людей, що переживають, а потім з'ясувати, як їх врахувати. (Тобто змінити параметри або навіть видалити частину даних)

  3. Стратифікований відбір проб, передискретизація та недооцінка на основі статистичних чи етичних міркувань : Я хотів би, щоб я був експертом в області надмірного простору, але я не знаю про стратифіковану вибірку. Кластеризація важливих факторів, таких як (раса, стать, стать), а потім здійснення стратифікованої вибірки кластером, є життєво важливим для того, щоб не перевищувати, якщо враховувати великі дані. Під час виявлення зображень у деяких сферах законодавчо необхідна стратифікована вибірка в поєднанні з кластеризацією, щоб уникнути расової дискримінації. Згадана вище книга коротко розповідає про способи цього зробити.

PS Чи потрібно включати більше посилань?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.