Библиотека Synaptic представляет нейронную сеть как объект класса Network, который инкапсулирует архитектуру, веса и методы обучения. Этот класс является центральной единицей при создании, конфигурации и эксплуатации нейронных сетей в JavaScript.
Экземпляр Network можно создать двумя способами:
Из заранее определённых слоёв
const { Layer, Network } = require('synaptic');
const inputLayer = new Layer(3);
const hiddenLayer = new Layer(4);
const outputLayer = new Layer(2);
inputLayer.project(hiddenLayer);
hiddenLayer.project(outputLayer);
const myNetwork = new Network({
input: inputLayer,
hidden: [hiddenLayer],
output: outputLayer
});
Здесь ключевым моментом является явное определение слоёв и их взаимосвязей через метод project. Такой подход даёт полную свободу в построении архитектуры, включая многослойные и рекуррентные сети.
С использованием встроенных сетей Synaptic предоставляет готовые архитектуры, например, Perceptron или LSTM, которые уже реализованы как наследники Network.
const { Architect } = require('synaptic');
const perceptron = new Architect.Perceptron(3, 4, 2);
Внутри Architect.Perceptron автоматически создаются слои и связи между ними, что упрощает создание стандартной прямой сети.
Объект Network включает следующие ключевые компоненты:
Каждый слой содержит нейроны (Neuron), которые имеют следующие важные свойства:
Методы класса Network взаимодействуют напрямую с этими слоями и нейронами, обеспечивая гибкость и контроль над процессом обучения и предсказания.
Метод activate используется для прямого распространения входного сигнала через сеть:
const input = [0.5, 0.3, 0.9];
const output = myNetwork.activate(input);
console.log(output);
[ a_j = f(i w{ij} a_i + b_j)]
где (a_i) — активация входных нейронов, (w_{ij}) — вес связи, (b_j) — смещение, (f) — функция активации.
Для обучения сети используется метод propagate:
const target = [0, 1];
myNetwork.propagate(0.1, target);
[ w_{ij} = _j a_i]
(_j) — локальная ошибка нейрона, () — скорость обучения.
Важно, что Network не привязан к конкретной функции ошибки — можно реализовать собственную функцию потерь при необходимости, модифицируя propagate или создавая свои методы обучения.
Сетевые веса и структура могут быть сохранены и восстановлены через JSON:
const exported = myNetwork.toJSON();
const restoredNetwork = Network.fromJSON(exported);
Класс Network подходит для любых типов сетей:
Методы activate, propagate, а также экспорт/импорт JSON создают универсальный инструмент для прототипирования, обучения и интеграции нейронных сетей в JavaScript-проекты.
Network предоставляет возможности для:
Такой контроль позволяет настраивать поведение сети под специфические задачи, не ограничиваясь стандартными методами.
Класс Network в Synaptic является полноценной моделью нейронной сети, объединяющей архитектуру, вычислительные алгоритмы и методы управления состоянием сети. Это делает его центральным инструментом для любых проектов с нейросетями на JavaScript.