Как установить минимальное количество эпох в Optuna SuccessiveHalvingPruner()?

#tensorflow #tf.keras #pruning #optuna

#tensorflow #тф.керас #обрезка #оптуна

Вопрос:

Я использую Optuna 2.5 для оптимизации пары гиперпараметров в модели tf.keras CNN. Я хочу использовать обрезку, чтобы оптимизация пропускала менее перспективные углы пространства гиперпараметров. Я использую что-то вроде этого:

 study0 = optuna.create_study(study_name=study_name,
                             storage=storage_name,
                             direction='minimize', 
                             sampler=TPESampler(n_startup_trials=25, multivariate=True, seed=123),
                             pruner=optuna.pruners.SuccessiveHalvingPruner(min_resource='auto',
                             reduction_factor=4, min_early_stopping_rate=0),
                             load_if_exists=True)
 

Иногда модель останавливается через 2 эпохи, в других случаях она останавливается через 12 эпох, 48 и так далее. Чего я хочу, так это убедиться, что модель всегда тренируется не менее 30 эпох, прежде чем ее обрезают. Я предполагаю, что параметр min_early_stopping_rate может иметь некоторый контроль над этим, но я попытался изменить его с 0 на 30, и тогда модели никогда не будут обрезаны. Может кто-нибудь объяснить мне немного лучше, чем документация Optuna, что эти параметры в самом SuccessiveHalvingPruner() деле делают (специально min_early_stopping_rate )?
Спасибо

Ответ №1:

min_resource в пояснении к документации говорится

Пробная версия никогда не обрезается, пока не выполнит min_resource * reduction_factor ** min_early_stopping_rate шаги.

Итак, я полагаю, что нам нужно заменить значение min_resource на определенное число в зависимости от reduction_factor и min_early_stopping_rate .