Synaptic — это чисто JavaScript-библиотека для создания и обучения искусственных нейронных сетей (ИНС), не зависящая от внешних фреймворков. Она реализует широкий спектр архитектур и предоставляет инструменты для гибкой настройки сети, обучения и прогнозирования. Основной принцип работы — моделирование нейронов и синаптических связей между ними, с возможностью обучения на основе алгоритма обратного распространения ошибки.
Библиотека оперирует следующими ключевыми компонентами:
Для создания простой сети с одним скрытым слоем используется следующий подход:
const { Layer, Network } = require('synaptic');
const inputLayer = new Layer(2);
const hiddenLayer = new Layer(3);
const outputLayer = new Layer(1);
inputLayer.project(hiddenLayer);
hiddenLayer.project(outputLayer);
const myNetwork = new Network({
input: inputLayer,
hidden: [hiddenLayer],
output: outputLayer
});
Ключевые моменты:
project устанавливает синаптические соединения между
слоями.Network можно явно указать входные,
скрытые и выходные слои, что упрощает управление архитектурой.Для обучения сети используется объект Trainer. Основной
алгоритм — обратное распространение ошибки. В Synaptic можно задавать
параметры обучения:
const { Trainer } = require('synaptic');
const trainer = new Trainer(myNetwork);
trainer.train([
{ input: [0,0], output: [0] },
{ input: [0,1], output: [1] },
{ input: [1,0], output: [1] },
{ input: [1,1], output: [0] }
], {
rate: 0.1, // скорость обучения
iterations: 20000, // количество эпох
error: 0.005, // допустимая ошибка
shuffle: true, // случайная перестановка данных
log: 1000 // вывод прогресса каждые 1000 итераций
});
Особенности обучения:
rate регулирует скорость корректировки весов.iterations определяет максимальное количество
итераций.error задает порог ошибки для остановки обучения.shuffle предотвращает заучивание
последовательностей.Synaptic использует массивы чисел для представления
входных и выходных сигналов. Входные данные подаются в слой
input, а выходной слой формирует результат. Для
прогнозирования используется метод activate:
const output = myNetwork.activate([1, 0]);
console.log(output);
Метод возвращает массив чисел, соответствующий количеству нейронов выходного слоя.
const json = myNetwork.toJSON();
const restoredNetwork = Network.fromJSON(json);
Synaptic предоставляет несколько стандартных функций активации:
Каждая функция влияет на скорость сходимости и диапазон выходных значений нейронов, поэтому выбор функции активации критически важен.
Библиотека подходит для:
Synaptic обеспечивает баланс между гибкостью и простотой использования, позволяя строить как простые модели для обучения, так и сложные сети для исследовательских целей.