Предположим, вы пытаетесь минимизировать целевую функцию с помощью числа итераций. И текущее значение составляет . В данном наборе данных нет «неснижаемых ошибок», и вы можете минимизировать потери до для ваших тренировочных данных. Теперь у вас есть два способа сделать это.100,00.0
Первый способ - «большая скорость обучения» и несколько итераций. Предположим, что вы можете уменьшить потери на в каждой итерации, а затем, в итерациях, вы можете уменьшить потери до .10,0100.0
Вторым способом будет «медленная скорость обучения», но больше итераций. Предположим, что вы можете уменьшить потери на в каждой итерации, и вам нужно итераций, чтобы иметь 0,0 потери на ваших тренировочных данных.1,0100
Теперь подумайте: равны ли эти два подхода? а если нет, то что лучше в контексте оптимизации и в контексте машинного обучения ?
В литературе по оптимизации два подхода одинаковы. Как они оба сходятся к оптимальному решению . С другой стороны, в машинном обучении они не равны. Потому что в большинстве случаев мы не делаем потерю на тренировке равной что приведет к перенастройке.0
Мы можем думать о первом подходе как о «грубом поиске по сетке уровня», а второй подход - как о «поиске по сетке с точным уровнем». Второй подход обычно работает лучше, но требует больше вычислительных мощностей для большего количества итераций.
Чтобы предотвратить переопределение, мы можем делать разные вещи, первым способом было бы ограничить количество итераций, предположим, что мы используем первый подход, мы ограничиваем количество итераций до 5. В конце, потеря для обучающих данных составляет , (Кстати, это было бы очень странно с точки зрения оптимизации , что означает, что мы можем улучшить наше решение в будущем / оно не сходится, но мы решили этого не делать. При оптимизации обычно мы явно добавляем ограничения или штрафные термины к целевой функции, но обычно не ограничивают количество итераций.)50
С другой стороны, мы также можем использовать второй подход: если мы установим небольшую скорость обучения, скажем, уменьшить потери для каждой итерации, хотя у нас большое количество итераций, скажем, итераций, мы все равно не минимизируем потери до .0,15000.0
Вот почему маленькая скорость обучения в некотором роде равна «большему количеству регуляризаций».
Вот пример использования различной скорости обучения с использованием экспериментальных данных xgboost
. Пожалуйста, проверьте следующие две ссылки, чтобы увидеть, что значит eta
или что n_iterations
значит.
Параметры для Tree Booster
XGBoost Control переоснащение
Для того же количества итераций, скажем, . Небольшая скорость обучения «недостаточно соответствует» (или модель имеет «высокий уклон»), а большая скорость обучения «соответствует» (или модель имеет «высокую дисперсию»).50
PS. доказательством недостаточной подгонки является то, что как обучающий, так и испытательный набор имеют большую ошибку, а кривая ошибок для обучения и тестирования близка друг к другу. Признаком переоснащения является то, что ошибка тренировочного набора очень мала, а тестовый набор очень высок, две кривые находятся далеко друг от друга.