В Keras.js колбэки представляют собой объекты, которые позволяют вмешиваться в процесс обучения модели на различных этапах: перед каждой эпохой, после каждой эпохи или после обработки определённого количества батчей. Они обеспечивают гибкое управление обучением, автоматическое сохранение состояния модели и оптимизацию процесса подбора гиперпараметров. Рассмотрим наиболее часто используемые стандартные колбэки.
Назначение: остановка обучения модели при отсутствии улучшения метрики в течение заданного количества эпох.
Основные параметры:
monitor – метрика, за которой осуществляется
наблюдение. Например, 'val_loss' или
'accuracy'.min_delta – минимальное изменение контролируемой
метрики, которое считается улучшением. Значение по умолчанию
0.patience – количество эпох без улучшения, после
которого обучение будет остановлено.verbose – уровень вывода сообщений (0 – тихий режим, 1
– подробный вывод).mode – способ интерпретации метрики: 'min'
для метрик, которые нужно минимизировать (loss),
'max' для метрик, которые нужно максимизировать
(accuracy), 'auto' для автоматического
определения.Пример использования:
const earlyStopping = new KerasJS.callbacks.EarlyStopping({
monitor: 'val_loss',
min_delta: 0.001,
patience: 10,
verbose: 1,
mode: 'min'
});
model.fit(xTrain, yTrain, {
epochs: 100,
validationData: [xVal, yVal],
callbacks: [earlyStopping]
});
Особенности:
Назначение: сохранение текущего состояния модели во время обучения, что позволяет восстанавливать обучение после прерывания или сохранять лучшую версию модели.
Основные параметры:
filepath – путь к файлу для сохранения модели. Может
содержать шаблоны с номером эпохи {epoch} или значением
метрики {val_loss:.2f}.monitor – метрика, по которой выбирается лучшая
модель.verbose – уровень логирования (0 или 1).save_best_only – сохранять только модель с наилучшей
метрикой.mode – 'auto', 'min',
'max' (аналогично EarlyStopping).save_weights_only – если true, сохраняются
только веса модели без структуры.Пример использования:
const checkpoint = new KerasJS.callbacks.ModelCheckpoint({
filepath: 'model_epoch_{epoch:02d}_val_loss_{val_loss:.2f}.h5',
monitor: 'val_loss',
save_best_only: true,
verbose: 1,
mode: 'min'
});
model.fit(xTrain, yTrain, {
epochs: 50,
validationData: [xVal, yVal],
callbacks: [checkpoint]
});
Особенности:
Назначение: динамическая адаптация скорости
обучения. Уменьшает learning rate, если заданная метрика
перестала улучшаться, что помогает модели достигать более точной
оптимизации.
Основные параметры:
monitor – метрика для отслеживания
(val_loss или accuracy).factor – коэффициент уменьшения скорости обучения,
например 0.1 уменьшает LR в 10 раз.patience – количество эпох без улучшений, после которых
LR будет уменьшен.verbose – вывод информации (0 или 1).mode – 'auto', 'min',
'max'.min_delta – минимальное изменение метрики для признания
улучшения.cooldown – количество эпох, в течение которых не
происходит снижение LR после последнего уменьшения.min_lr – минимально допустимое значение LR.Пример использования:
const reduceLR = new KerasJS.callbacks.ReduceLROnPlateau({
monitor: 'val_loss',
factor: 0.5,
patience: 5,
verbose: 1,
min_lr: 1e-6
});
model.fit(xTrain, yTrain, {
epochs: 50,
validationData: [xVal, yVal],
callbacks: [reduceLR]
});
Особенности:
Эти три колбэка — фундаментальные инструменты для управления процессом обучения. Их комбинирование позволяет:
EarlyStopping).ModelCheckpoint).ReduceLROnPlateau).Использование этих колбэков повышает стабильность и эффективность обучения глубоких нейронных сетей в Keras.js, особенно при работе с ограниченными ресурсами или большими объемами данных.