В Keras.js, библиотеке для запуска моделей Keras в браузере на JavaScript, управление параметром learning rate не такое прямое, как в Python-версии Keras. Базовые механизмы оптимизации требуют понимания структуры модели и способов передачи весов и гиперпараметров в браузер.
Learning rate — это ключевой гиперпараметр, определяющий величину шага при обновлении весов нейронной сети. Слишком высокий learning rate приводит к нестабильному обучению и расходимости, слишком низкий — к медленной сходимости.
В Keras.js оптимизаторы создаются на основе заранее обученных моделей. При конвертации модели из Python Keras в формат JSON для Keras.js, learning rate обычно фиксируется на момент сохранения модели. Прямое изменение learning rate через API Keras.js отсутствует, поэтому применяются следующие подходы:
Модификация JSON-файла модели Оптимизатор и его
параметры, включая learning rate, сохраняются в разделе
"optimizer_config" JSON-файла. Для изменения learning rate
нужно:
"optimizer_config" →
"learning_rate"."learning_rate": 0.001.Динамическое обновление через кастомные оптимизаторы Keras.js поддерживает реализацию пользовательских оптимизаторов. Можно создать функцию-обёртку над стандартным SGD или Adam, в которой learning rate вычисляется на основе текущего шага обучения:
function dynamicLearningRate(step) {
const initialLR = 0.01;
const decay = 0.001;
return initialLR / (1 + decay * step);
}
Эта функция позволяет изменять learning rate на каждом шаге обучения, эмулируя поведение learning rate scheduler из Python.
Step Decay (пошаговое уменьшение) Learning rate
уменьшается через фиксированное количество шагов: [ lr = lr_{initial}
drop^{ }] В Keras.js можно обновлять параметр optimizer при каждом
epoch через пользовательскую логику.
Exponential Decay (экспоненциальное снижение) Learning rate уменьшается по формуле: [ lr = lr_{initial} e^{-k epoch}] Реализуется аналогично через динамическое вычисление значения перед каждым шагом оптимизации.
Adaptive Learning Rate (адаптивный метод) В Keras.js поддерживаются оптимизаторы типа Adam и RMSprop, где скорость обучения частично адаптируется автоматически. Для тонкой настройки адаптивного метода можно комбинировать:
// Пример инициализации модели Keras.js с динамическим learning rate
const model = new KerasJS.Model({
filepath: 'model.json',
gpu: true
});
let step = 0;
function trainStep(input, target) {
const lr = dynamicLearningRate(step);
model.optimizer.learning_rate = lr;
model.train({input, target});
step++;
}
callbacks как в
Python Keras. Поэтому любые стратегии изменения learning rate нужно
реализовывать вручную.