Synaptic — это библиотека для построения нейронных сетей на JavaScript, предоставляющая гибкий инструментарий для создания как простых, так и сложных моделей. В основе библиотеки лежит концепция нейронных сетей с произвольной архитектурой, что позволяет строить однослойные и многослойные сети с полной кастомизацией связей между нейронами.
Базовыми строительными блоками являются:
Для предсказания числового ряда наиболее часто используется многослойный перцептрон (MLP). Такая сеть состоит из:
Пример создания сети с Synaptic:
const { Layer, Network, Trainer } = require('synaptic');
const inputLayer = new Layer(5); // 5 предыдущих чисел
const hiddenLayer = new Layer(10);
const outputLayer = new Layer(1);
inputLayer.project(hiddenLayer);
hiddenLayer.project(outputLayer);
const myNetwork = new Network({
input: inputLayer,
hidden: [hiddenLayer],
output: outputLayer
});
Для обучения сети числовому ряду данные необходимо преобразовать в
пары вход → выход. Например, для ряда
[1, 2, 3, 4, 5, 6] с использованием окна в 3 элемента:
| Вход | Выход |
|---|---|
| [1,2,3] | 4 |
| [2,3,4] | 5 |
| [3,4,5] | 6 |
Важно нормализовать данные, чтобы все значения находились в диапазоне
[0,1] или [-1,1], так как это улучшает
сходимость сети:
const normalize = (arr) => arr.map(x => x / Math.max(...arr));
Synaptic предоставляет Trainer для удобного обучения
сети с использованием алгоритма обратного распространения ошибки.
Основные параметры обучения:
0.01–0.1.Пример тренировки сети:
const trainer = new Trainer(myNetwork);
trainer.train(
[
{ input: [0.166, 0.333, 0.5], output: [0.666] },
{ input: [0.333, 0.5, 0.666], output: [0.833] }
],
{
rate: 0.05,
iterations: 5000,
error: 0.005,
shuffle: true
}
);
После обучения можно использовать метод activate для
получения прогноза:
const nextValue = myNetwork.activate([0.5, 0.666, 0.833]);
console.log(nextValue); // значение в диапазоне [0,1]
При необходимости результат следует денормализовать, чтобы вернуть исходный масштаб:
const denormalize = (value, max) => value * max;
Для повышения качества предсказаний применяются следующие подходы:
sigmoid или tanh помогают управлять выходными
значениями.Ключевой принцип работы с числовыми рядами — использование скользящего окна. Размер окна определяет, сколько предыдущих элементов сеть учитывает для прогноза следующего. Практика показывает, что оптимальный размер окна подбирается экспериментально: слишком маленькое окно не захватывает зависимости, слишком большое — усложняет обучение.
Synaptic предоставляет полный инструментарий для построения и обучения нейронных сетей для задач предсказания числовых рядов. Ключевыми этапами являются: построение сети с подходящей архитектурой, нормализация и подготовка данных, обучение методом обратного распространения ошибки и использование сети для прогноза с последующей денормализацией результатов. Правильная настройка параметров сети и использование оконного метода позволяют достигать высокой точности предсказаний.