Використовуючи попередньо підготовлений класифікатор CNN та застосуйте його до іншого набору даних зображення


11

Як би ви оптимізувати з заздалегідь навчених neural network застосовувати його в окрему проблему? Ви б просто додали більше шарів до попередньо підготовленої моделі та протестували її на своєму наборі даних?

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

Відповіді:


15

Читати - коли навчання з трансферу є невигідним? (Завдяки @media) (мені здається дуже інформативним, тому додано сюди, щоб зробити цю відповідь повною ...)

Відповідь на ваше запитання .. (починається тут)

Трансферне навчання - це те, що ви шукаєте ..

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

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

Коли точно відрегулювати моделі?

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

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

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

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

Методи тонкої настройки

Нижче наведено декілька загальних рекомендацій щодо тонкої настройки:

  • Поширена практика полягає у врізанні останнього шару (шару softmax) заздалегідь підготовленої мережі та заміни його на наш новий шар softmax, який відповідає нашій власній проблемі. Наприклад, заздалегідь підготовлена ​​мережа в ImageNet постачається з softmax шаром з 1000 категорій.

  • Якщо наше завдання - класифікація на 10 категорій, новий рівень softmax мережі буде складатися з 10 категорій замість 1000 категорій. Потім ми запускаємо розповсюдження в мережі для тонкої настройки попередньо підготовлених ваг. Переконайтеся, що виконується перехресне підтвердження, щоб мережа змогла добре узагальнити.

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

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

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

Джерело моєї відповіді - переклад з цих дивовижних курсів ..

Для подальшого читання,


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

1
Для вилучення функцій не потрібно додавати шар, але кілька шарів, таких як об'єднання та розмір форми, додаються, щоб відповідати тьмам і, можливо, зменшити проміжні значення; Звичайно, швидше тренувати лінійну модель, ніж NN, але ви можете спробувати і те й інше, що найкраще підходить для вашого використання; Розморожування останнього щільного шару та перекваліфікація з кількома додатковими шарами, щоб відповідати вашій проблемі, є звичною практикою
Aditya
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.