Последовательная модель Sequential

Sequential — это базовый тип модели в Keras.js, предназначенный для построения линейных стеков слоев. Каждый слой последовательно соединяется с предыдущим, образуя простую и предсказуемую архитектуру нейронной сети. Такая модель удобна для большинства стандартных задач классификации и регрессии.

Создание модели

Для создания последовательной модели используется конструктор Sequential. В качестве аргумента можно передать массив слоев или добавлять их по одному методом add.

const model = new KerasJS.Sequential();
model.add(new KerasJS.layers.Dense({ units: 128, inputShape: [784], activation: 'relu' }));
model.add(new KerasJS.layers.Dense({ units: 10, activation: 'softmax' }));
  • Dense — полносвязный слой, где каждый нейрон соединён со всеми нейронами предыдущего слоя.
  • units — количество нейронов в слое.
  • inputShape — размерность входных данных для первого слоя.
  • activation — функция активации.

Основные типы слоев

  1. Dense — классический полносвязный слой, применяется в большинстве задач.
  2. Conv2D — сверточный слой для работы с изображениями, принимает параметры filters, kernelSize и strides.
  3. MaxPooling2D — слой подвыборки для уменьшения размерности, параметры poolSize и strides.
  4. Flatten — преобразует многомерный вход в одномерный массив для передачи в Dense.
  5. Dropout — регуляризация, случайное отключение части нейронов для предотвращения переобучения.

Каждый слой можно настраивать независимо, создавая гибкую архитектуру под конкретную задачу.

Компиляция модели

Перед обучением модель необходимо скомпилировать. Компиляция задаёт алгоритм оптимизации, функцию потерь и метрики для оценки.

model.compile({
  optimizer: 'adam',
  loss: 'categoricalCrossentropy',
  metrics: ['accuracy']
});
  • optimizer — метод оптимизации, например 'sgd', 'adam' или 'rmsprop'.
  • loss — функция потерь. Для многоклассовой классификации используется 'categoricalCrossentropy'.
  • metrics — список метрик, которые будут отслеживаться при обучении, чаще всего 'accuracy'.

Обучение модели

Метод fit позволяет обучить модель на входных данных. В Keras.js данные передаются в виде TypedArray (например, Float32Array).

const xTrain = new Float32Array([...]); // размер [numSamples, 784]
const yTrain = new Float32Array([...]); // размер [numSamples, 10]

await model.fit(xTrain, yTrain, {
  batchSize: 32,
  epochs: 20,
  shuffle: true
});
  • batchSize — количество примеров, обрабатываемых за один шаг обучения.
  • epochs — количество полных проходов по всему набору данных.
  • shuffle — перемешивание данных перед каждой эпохой.

Обучение возвращает объект с историей метрик, что позволяет отслеживать процесс и визуализировать кривые обучения.

Прогнозирование и оценка

После обучения модель можно использовать для предсказаний методом predict.

const xTest = new Float32Array([...]);
const predictions = model.predict(xTest);
  • Возвращается массив предсказанных значений. Для многоклассовой классификации — вероятности для каждого класса.

Для оценки точности на тестовой выборке используется метод evaluate:

const results = model.evaluate(xTest, yTest);
console.log('Loss:', results.loss, 'Accuracy:', results.accuracy);

Сохранение и загрузка модели

Keras.js поддерживает сохранение весов и конфигурации модели в JSON формате.

const modelJSON = model.toJSON(); // экспорт конфигурации
await model.save('localstorage://my-model'); // сохранение весов

Загрузка модели:

const loadedModel = new KerasJS.Sequential();
await loadedModel.load('localstorage://my-model');

Это позволяет разрабатывать модели в браузере и использовать их повторно без пересоздания.

Важные нюансы

  • Совместимость слоев: все слои в Sequential должны быть совместимы по размерности. Ошибка возникает при несоответствии входного и выходного формата.
  • Первая размерность входа: для первого слоя обязательно указывать inputShape.
  • Функции активации: для многоклассовой классификации на выходном слое лучше использовать softmax, для бинарной — sigmoid.
  • Переобучение: использование Dropout и регуляризации помогает уменьшить переобучение, особенно при небольших данных.

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