Параметры слоёв: units, activation, input_shape

Kераs.js представляет собой JavaScript-обёртку для использования моделей, обученных в Keras, в браузере. Работа с ней строится на понимании структуры слоёв и ключевых параметров, определяющих поведение нейронной сети. Рассмотрим три фундаментальных параметра: units, activation и input_shape.


units — количество нейронов в слое

Параметр units определяет количество выходных нейронов в слое. В полносвязных слоях (Dense) каждый нейрон получает входные данные от всех нейронов предыдущего слоя и производит отдельное преобразование.

Особенности использования:

  • Определяет размерность выхода слоя. Например, слой Dense с units: 64 будет возвращать массив длиной 64 для каждого входного примера.

  • Влияет на мощность модели. Увеличение units повышает способность слоя обучать сложные зависимости, но одновременно увеличивает количество параметров и риск переобучения.

  • Применение в Keras.js:

    const denseLayer = {
        class_name: "Dense",
        config: {
            units: 128
        }
    };
  • Соотношение с предыдущим слоем: Важным моментом является совместимость units с размерностью входа: если входной слой имеет 256 признаков, а units = 128, то матрица весов будет размером (256, 128).


activation — функция активации нейронов

Параметр activation задаёт нелинейное преобразование, применяемое к выходам нейронов. Выбор функции активации критически влияет на способность сети моделировать сложные зависимости.

Основные функции активации в Keras.js:

  • relu (Rectified Linear Unit) Простая и эффективная функция: f(x) = max(0, x). Применяется в большинстве скрытых слоёв для ускорения сходимости.

  • sigmoid Преобразует значение в диапазон (0, 1). Используется для бинарной классификации.

  • softmax Применяется на выходных слоях многоклассовой классификации. Преобразует вектор выходов в вероятностное распределение.

  • tanh Выходы находятся в диапазоне [-1, 1]. Иногда полезна при работе с нормализованными данными.

Пример конфигурации слоя:

const denseLayer = {
    class_name: "Dense",
    config: {
        units: 64,
        activation: "relu"
    }
};

Особенности работы в Keras.js:

  • Keras.js использует заранее обученные модели, поэтому функция активации должна совпадать с используемой при обучении в Keras.
  • При некорректной функции активации может возникнуть ошибка при выполнении предсказаний.

input_shape — форма входных данных

input_shape задаёт размерность входных данных слоя. Этот параметр особенно важен для первого слоя сети, так как Keras.js не вычисляет его автоматически в рантайме браузера.

Принципы использования:

  • Одномерные данные: Для вектора признаков длиной 100:

    input_shape: [100]
  • Изображения: Для изображений размером 28x28 пикселей с одним каналом:

    input_shape: [28, 28, 1]
  • Последовательности: Для текстовых последовательностей длиной 50 слов с векторизацией 300:

    input_shape: [50, 300]
  • Применение в первом слое Dense:

const inputLayer = {
    class_name: "Dense",
    config: {
        units: 128,
        activation: "relu",
        input_shape: [256]
    }
};

Особенности:

  • Параметр input_shape указывается только в первом слое модели. Последующие слои автоматически определяют размерность входа по выходу предыдущего слоя.
  • Несоответствие input_shape и фактических данных приводит к ошибкам выполнения в браузере.

Взаимосвязь параметров

  • units определяет, сколько признаков будет на выходе слоя.
  • activation накладывает нелинейность на эти признаки.
  • input_shape гарантирует корректное соответствие входных данных размерности слоя.

Эффективная настройка этих трёх параметров позволяет управлять архитектурой сети, её мощностью и скоростью сходимости, особенно при переносе модели в браузер через Keras.js.


Рекомендации по конфигурации

  • Минимизировать размер входных данных: уменьшает время предсказания в браузере.
  • Выбирать функцию активации согласно типу задачи: relu для скрытых слоёв, sigmoid или softmax для выхода.
  • Сбалансировать units: слишком большое значение замедляет работу и увеличивает память, слишком маленькое — снижает точность модели.

Использование этих параметров в Keras.js требует точного соответствия конфигурации исходной модели Keras, что обеспечивает корректную работу предсказаний в веб-среде.