Чому точність перевірки коливається
У мене є чотиришарова CNN для прогнозування реакції на рак за допомогою даних МРТ. Я використовую активації ReLU для введення нелінійностей. Точність та втрати поїзда монотонно збільшуються та зменшуються відповідно. Але моя точність тестування починає шалено коливатися. Я намагався змінити швидкість навчання, зменшити кількість шарів. Але це не зупиняє коливань. Я навіть прочитав цю відповідь і намагався дотримуватися вказівок у цій відповіді, але знову не везло. Хтось може допомогти мені зрозуміти, де я помиляюся?

Як я розумію визначення точності, точність (% точок даних, ранжированих правильно) є менш кумулятивною, ніж, скажімо, MSE (середня квадратична помилка). Ось чому ви бачите, що ваші втрати швидко зростають, тоді як точність коливається.
Інтуїтивно це в основному означає, що деякі приклади класифіковані хаотично, що створює коливання, оскільки кількість правильних випадкових відгадок завжди коливається (уявіть точність, коли деталь завжди повинна повертати "головки"). В основному, чутливість до шуму (коли класифікація дає випадковий результат) є загальним визначенням переобладнання (див. Wikipedia):
У статистиці та машинному навчанні одним із найпоширеніших завдань є пристосування "моделі" до навчального набору даних, щоб ви могли робити надійні прогнози щодо загальних нетренованих даних. Переобладнавши, статистична модель описує випадкову помилку або шум замість основного зв'язку
Ще одним доказом переоснащення є те, що, коли ваша втрата збільшується, втрати вимірюються точніше, вони більш чутливі до гучного прогнозування, якщо вони не перевизначені сигмовидними/пороговими значеннями (що, здається, є вашою справою щодо втрат). Інтуїтивно ви можете уявити ситуацію, коли мережа занадто впевнена у результатах (коли вона помилкова), тому вона дає значення, далеке від порогового, у випадку випадкової неправильної класифікації.
Що стосується Вашого випадку, Ваша модель неправильно упорядкована, можливі причини:
- недостатньо точок даних, занадто велика ємність
- замовляв
- відсутність/погане масштабування/нормалізація функцій
- швидкість навчання: занадто велика, тому SGD стрибає занадто далеко і пропускає територію, близьку до місцевих мінімумів. Це був би крайній випадок "недооборудования" (нечутливості до самих даних), але міг би генерувати (якийсь) "низькочастотний" шум на виході шляхом скремблювання вхідних даних - всупереч інтуїції. як завжди вгадувати голови, щоб передбачити частину. Як зазначив @JanKukacka, потрапляння в зону "занадто близько до" мінімуму може призвести до переобладнання, тому, якщо воно занадто мало, воно стане чутливим до "високочастотного" шуму у ваших даних. має бути десь посередині. α 'role = "презентація"> α α' role = "презентація"> α α 'role = "презентація"> α
- отримати більше точок даних (або штучно розширити набір існуючих точок)
- грати з гіперпараметрами (наприклад, збільшити/зменшити ємність або термін регуляризації)
- регуляризація: спробуйте кинути, зупинитися раніше і т.д.