Припустимо, ви намагаєтеся мінімізувати цільову функцію за допомогою кількості ітерацій. А поточне значення - . У даному наборі даних немає "невідмінних помилок", і ви можете мінімізувати втрати до для своїх навчальних даних. Тепер у вас є два способи це зробити.0,0100,00,0
Перший спосіб - «велика швидкість навчання» і мало ітерацій. Припустимо, ви можете зменшити втрати на за кожну ітерацію, тоді за ітерацій ви можете зменшити втрати до .10 0,010,0100,0
Другий спосіб - це "повільна швидкість навчання", але більше ітерацій. Припустимо, ви можете зменшити втрати на за кожну ітерацію, і вам потрібно ітерацій, щоб мати 0,0 втрати на ваших навчальних даних.1001,0100
А тепер подумайте над тим: чи рівні два підходи? і якщо ні, що краще в контексті оптимізації та контексту машинного навчання ?
В оптимізаційній літературі два підходи однакові. Оскільки вони обидві сходяться до оптимального рішення . З іншого боку, в машинному навчанні вони не рівні. Тому що в більшості випадків ми не робимо втрати в тренуванні встановленими на що спричинить перенапруження.0
Ми можемо думати про перший підхід як про "пошук грубої сітки рівня", а другий підхід як "пошук сітки тонкого рівня". Другий підхід зазвичай працює краще, але потребує більшої обчислювальної потужності для більшої кількості ітерацій.
Для запобігання надмірної підгонки ми можемо робити різні речі. Першим способом було б обмеження кількості ітерацій. Припустимо, ми використовуємо перший підхід, обмежуємо кількість ітерацій рівним 5. Зрештою, втрата для навчальних даних становить . (BTW, це було б дуже дивно з точки зору оптимізації , це означає, що ми можемо в майбутньому вдосконалити наше рішення / воно не конвергується, але ми вирішили цього не робити. В процесі оптимізації ми зазвичай явно додаємо обмеження або умови пеналізації до цільової функції, але зазвичай не обмежуйте кількість ітерацій.)50
З іншого боку, ми також можемо використовувати другий підхід: якщо ми встановимо, що швидкість навчання буде невеликою, скажімо, зменшить втрату на за кожну ітерацію, хоча у нас є велика кількість ітерацій, наприклад, ітерацій, ми все ще не звели втрати до .500 0,00,15000,0
Ось чому невелика швидкість навчання на зразок дорівнює "більшості регуляризацій".
Ось приклад використання різної швидкості навчання на експериментальних даних із використанням xgboost
. Перевірте два посилання, щоб побачити, що означає eta
та що n_iterations
означає.
Параметри для підсилювача дерева
Набір XGBoost Control
За однакової кількості повторень скажімо . Невелика ступінь навчання - "недостатня відповідність" (або модель має "високу упередженість"), а велика швидкість навчання - "надмірна відповідність" (або модель має "велику дисперсію").50
PS. докази недостатньої придатності є як набір навчань, так і тестування мають великі похибки, а крива помилок для тренувань та тестування близька одна до одної. Ознакою перенапруги є помилка навчального набору дуже низька, а тестовий набір дуже високий, дві криві знаходяться далеко один від одного.