Keras.js предоставляет возможность запускать модели, созданные с помощью Keras, прямо в браузере на языке JavaScript. Особое внимание уделяется работе с последовательными данными, такими как временные ряды, текстовые данные или сигналы. Для этого используются специализированные рекуррентные слои: SimpleRNN, LSTM и GRU.
SimpleRNN — базовый рекуррентный слой, реализующий стандартную рекуррентную нейронную сеть. Он обрабатывает последовательность по шагам времени, поддерживая внутреннее скрытое состояние.
Основные параметры:
units — число нейронов в скрытом состоянии.activation — функция активации, применяемая к выходу
слоя (tanh по умолчанию).use_bias — использование смещения (по умолчанию
true).return_sequences — если true, слой
возвращает полную последовательность выходов, а не только последний
шаг.return_state — возвращает скрытое состояние последнего
временного шага.go_backwards — обработка последовательности в обратном
порядке.Пример использования в Keras.js:
const modelConfig = {
layers: [
{
type: 'simpleRNN',
config: {
units: 50,
activation: 'tanh',
returnSequences: true
}
}
]
};
Особенности SimpleRNN:
LSTM — усовершенствованная рекуррентная архитектура, способная сохранять информацию на длительных интервалах благодаря механизму входных, выходных и забывающих ворот.
Основные параметры:
units — число нейронов в скрытом состоянии.activation — функция активации для выхода
(tanh по умолчанию).recurrent_activation — функция активации для
рекуррентных ворот (sigmoid по умолчанию).use_bias — использование смещения.return_sequences — возвращает всю последовательность
выходов.return_state — возвращает скрытое и ячейковое
состояния.go_backwards — обработка последовательности в обратном
порядке.unit_forget_bias — добавление единицы к забывающему
вороту, улучшает обучение.Структура LSTM:
Пример конфигурации для Keras.js:
const lstmLayer = {
type: 'lstm',
config: {
units: 100,
activation: 'tanh',
recurrentActivation: 'sigmoid',
returnSequences: true
}
};
Особенности LSTM:
GRU — упрощённая версия LSTM с объединёнными входными и забывающими воротами, что уменьшает число параметров и ускоряет обучение.
Основные параметры:
units — число нейронов в скрытом состоянии.activation — функция активации для выхода.recurrent_activation — функция активации для
ворот.use_bias — использование смещения.return_sequences — возвращение полной
последовательности выходов.return_state — возвращает скрытое состояние последнего
временного шага.go_backwards — обработка последовательности в обратном
порядке.Пример конфигурации GRU в Keras.js:
const gruLayer = {
type: 'gru',
config: {
units: 64,
activation: 'tanh',
recurrentActivation: 'sigmoid',
returnSequences: true
}
};
Особенности GRU:
| Слой | Плюсы | Минусы | Применение |
|---|---|---|---|
| SimpleRNN | Простая реализация, быстро обучается | Затухающий градиент, слаб для длинных последовательностей | Короткие последовательности, тестовые модели |
| LSTM | Сохраняет долгосрочные зависимости | Сложнее, больше вычислений | Длинные последовательности, тексты, временные ряды |
| GRU | Быстрее LSTM, меньше параметров | Иногда хуже LSTM на очень длинных данных | Средние и длинные последовательности, быстрые модели |
return_sequences,
return_state, go_backwards).Эти рекуррентные слои являются фундаментом работы с последовательными данными в Keras.js и позволяют переносить сложные модели нейронных сетей в браузер с минимальными изменениями.