Библиотека Synaptic в JavaScript предоставляет мощные средства для создания и обучения нейронных сетей. Центральным компонентом для удобного проектирования сетей является класс Architect, который позволяет быстро создавать нейронные сети с заранее определёнными архитектурами.
Класс Architect — это абстракция, объединяющая несколько слоёв нейронной сети в одну структуру. Он автоматически создаёт все необходимые нейроны и соединения между ними, что избавляет от ручного добавления каждого нейрона и каждой связи.
Синтаксис создания сети через Architect выглядит следующим образом:
const { Architect } = require('synaptic');
const network = new Architect.Perceptron(2, 3, 1);
Здесь создаётся перцептрон с двумя входными нейронами, тремя скрытыми и одним выходным. Архитектура сети задаётся в виде аргументов конструктора: каждый аргумент определяет количество нейронов в соответствующем слое. Первое число — входной слой, последующие — скрытые слои, последнее — выходной слой.
Perceptron — самая простая и классическая архитектура многослойной сети. Основные особенности:
Пример создания и обучения перцептрона:
const myPerceptron = new Architect.Perceptron(2, 4, 1);
// Обучающие данные XOR
const trainingSet = [
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] },
];
const trainer = new Trainer(myPerceptron);
trainer.train(trainingSet, {
rate: 0.2,
iterations: 20000,
error: 0.005,
shuffle: true
});
Для работы с последовательными данными используется LSTM, архитектура с рекуррентными нейронами, способная хранить долгосрочные зависимости.
Создание сети LSTM:
const lstmNetwork = new Architect.LSTM(3, 5, 2);
Параметры конструктора:
Особенности LSTM:
Можно создавать глубокие рекуррентные сети с несколькими LSTM-слоями:
const deepLSTM = new Architect.LSTM(4, 6, 6, 2);
В этом примере два скрытых слоя с 6 нейронами каждый. Такая структура позволяет сети лучше моделировать сложные зависимости во входных данных.
Liquid — менее известная, но мощная архитектура, имитирующая динамику нейронных сетей мозга. Используется для моделирования потоков данных и реакций на сложные стимулы.
Создание сети Liquid:
const liquidNet = new Architect.Liquid(3, 5, 2);
Особенности:
const json = myPerceptron.toJSON();
const restoredNetwork = Architect.fromJSON(json);
Использование Architect значительно упрощает процесс проектирования нейронных сетей в Synaptic и позволяет сосредоточиться на обучении и анализе данных, а не на низкоуровневых деталях построения сети.