Я проверил некоторые известные фреймворки с открытым исходным кодом с реализациями SGD — scikit-learn, vowpal-wabbit и тензор -поток.
Все они оставляют пользователю задачу решить, сколько итераций! scikit требует, чтобы пользователь указал это явно, vowpal по умолчанию предполагает 1 эпоху (проходит через все примеры), но позволяет изменить любое количество эпох, а тензор реализует только один шаг для одного примера, оставляя весь цикл итерации пользователю. .
Почему это? Задача принятия решения о расторжении договора вовсе не тривиальна — следует ли ее решать, когда убыток не становится лучше? средние потери за последние N итераций? Должен ли пользователь использовать примеры проверки/удержания для измерения потерь? А может дело вовсе не в потерях и стоит проверить, не сильно ли меняются оптимизированные веса? Должны ли мы проверять завершение после каждого примера или время от времени?
Был бы рад, если бы кто-то пролил свет на это дизайнерское решение, я что-то упустил, и это нельзя сделать внутри? Теория в этой области сложна, и я надеялся на некоторую поддержку со стороны фреймворков.
--early_terminate
. - person Martin Popel   schedule 02.03.2016