Я вижу 2 потенциальных проблем с аргументами, приведенными в вопросе.Это может быть хорошо, если вы действительно хотели использовать их таким образом, и вы действительно знаете, что делаете, но они кажутся немного подозрительными.
1) Всякий раз, когда вы запускаете vw
с несколькими проходамите же данные (--passes <n>
), vw
неявно переключаются в режим удержания с удержанием 1 в 10 примерах.Запрещенные примеры используются только для оценки ошибок, а не для обучения, чтобы избежать чрезмерного соответствия.Если это то, что вы хотели сделать, то хорошо, но если вы не хотите откладывать какие-либо из ваших примеров, вам следует использовать опцию --holdout_off
и помнить, что шансы перенастройки возрастают.
2) Начальная скорость обучения (--learning_rate 1.5
) кажется высокой, она увеличивает шансы на переоснащение.Если вы используете его, потому что в итоге у вас меньше тренировочных потерь, это неправильная вещь.в ML цель состоит не в том, чтобы минимизировать потери при обучении, а в потерях при обобщении.
Кроме того: установка начальной скорости обучения во 2-й партии, кажется, противоречит опции --save_resume
.Цель --save_resume
- запустить новый пакет с низкими (уже распавшимися, как сохранено в модели) скоростями обучения для каждой функции (стиль AdaGrad).Прыжок скорости обучения в начале может сделать первые примеры во 2-й партии гораздо более важными, чем все упавшие функции из 1-й партии.
Совет: вы можете почувствовать, насколько хорошо вы делаете, передавая вывод прогресса в утилиту построения vw-convergence
:
vw -P 1.1 ... data.txt 2>&1 | vw-convergence
(примечание: для vw-конвергенции требуется R
)