Метод fit: параметры и возвращаемые значения

Метод fit в Keras.js является ключевым инструментом для обучения моделей на предоставленных данных. Он позволяет настраивать обучение нейронной сети, определять количество эпох, размер пакета данных и другие параметры, влияющие на качество и скорость обучения. В Keras.js, как и в оригинальном Keras на Python, fit обеспечивает гибкий интерфейс для работы с различными типами входных данных и задачами машинного обучения.


Основные параметры метода fit

  1. x Входные данные для обучения модели. Может быть представлено:

    • массивом чисел (Array),
    • TypedArray (например, Float32Array),
    • объектом с ключами-именами входов для моделей с несколькими входами.

    Размерность массива должна соответствовать ожидаемой архитектуре модели, например для полносвязной сети [количество_образцов, количество_фич].

  2. y Целевые данные (метки). Формат аналогичен x:

    • одномерный массив для задач классификации с одной меткой,
    • двумерный массив для one-hot кодирования классов,
    • объект для моделей с несколькими выходами.
  3. batchSize Определяет количество образцов, используемых для одной итерации обучения. Особенности:

    • Меньший размер батча увеличивает частоту обновлений весов, но может замедлить обучение.
    • Больший размер батча снижает шум градиента, но требует больше памяти.
  4. epochs Количество полных проходов по всему набору данных. Каждый проход включает все батчи. Важно: правильный выбор числа эпох критичен для предотвращения переобучения.

  5. shuffle Логическое значение, указывающее, перемешивать ли данные перед каждой эпохой.

    • true помогает улучшить обобщающую способность модели,
    • false может использоваться для последовательных данных (например, временные ряды).
  6. validationData Данные для проверки модели во время обучения. Представлены как массив [x_val, y_val]. Позволяет отслеживать метрики на отложенном наборе данных и предотвращать переобучение.

  7. callbacks Массив функций обратного вызова, которые вызываются на различных этапах обучения:

    • onEpochEnd, onBatchEnd, onTrainBegin и onTrainEnd. Используется для динамического контроля обучения, сохранения весов и визуализации прогресса.

Возвращаемые значения метода fit

Метод fit возвращает объект с историей обучения (History). Основные поля:

  • history — объект, содержащий массивы значений метрик и функции потерь по эпохам. Структура обычно следующая:
{
  loss: [0.693, 0.587, 0.512, ...],
  accuracy: [0.50, 0.62, 0.71, ...],
  val_loss: [0.680, 0.590, 0.520, ...],
  val_accuracy: [0.52, 0.63, 0.70, ...]
}
  • params — объект с настройками обучения: batchSize, epochs, samples, steps, и др.
  • model — ссылка на обученную модель, что позволяет сразу использовать метод predict без повторной инициализации.

Важные моменты при использовании fit

  • Для больших наборов данных рекомендуется использовать batchSize не меньше 32 и не больше 512, исходя из объема доступной памяти.
  • Передача validationData позволяет контролировать переобучение, особенно если количество эпох велико.
  • Метод fit поддерживает как синхронное, так и асинхронное обучение через промисы, что удобно в браузерной среде:
model.fit(x_train, y_train, {batchSize: 64, epochs: 10})
  .then(history => console.log(history.history.loss));
  • Использование shuffle: true критично для задач классификации с несбалансированными классами.
  • История обучения помогает построить графики изменения потерь и точности для анализа эффективности обучения.

Настройка оптимизатора и метрик

Хотя метод fit напрямую не принимает оптимизатор, метрики или функцию потерь, их необходимо задавать при компиляции модели через метод compile:

model.compile({
  optimizer: 'adam',
  loss: 'categoricalCrossentropy',
  metrics: ['accuracy']
});

Перед запуском fit это обеспечивает корректное вычисление градиентов и метрик, возвращаемых в объекте History.


Работа с асинхронным обучением

Keras.js ориентирован на работу в браузере, что делает асинхронность ключевым аспектом. Метод fit возвращает промис, позволяющий выполнять последующие действия после завершения обучения, например:

  • обновление интерфейса в реальном времени,
  • сохранение весов в IndexedDB,
  • динамическую визуализацию метрик.

Это особенно важно для больших моделей, где обучение может занимать несколько секунд или минут на клиентской машине.


Выводы по параметрам и возвращаемым значениям

Метод fit в Keras.js сочетает гибкость и удобство работы с данными, позволяя детально управлять процессом обучения. Понимание каждого параметра, а также структуры возвращаемого объекта, обеспечивает эффективное использование ресурсов и высокую точность обучения моделей нейронных сетей на стороне клиента.