Библиотека Synaptic предоставляет гибкий и низкоуровневый доступ к построению нейронных сетей в JavaScript. Ключевыми элементами архитектуры сети являются нейроны и соединения, которые формируют топологию сети. Важнейшими характеристиками этих объектов являются веса соединений, уникальные идентификаторы (ID) и ряд служебных полей, обеспечивающих корректное функционирование сети.
Вес соединения (weight) определяет силу влияния сигнала,
передаваемого от одного нейрона к другому. В Synaptic соединения между
нейронами создаются автоматически при добавлении связей через метод
project или вручную при создании объектов
Connection.
Ключевые особенности веса:
[-1, 1].Trainer.train) или
эволюционные методы.Пример доступа и изменения веса:
const synaptic = require('synaptic');
const { Layer, Network } = synaptic;
const inputLayer = new Layer(2);
const outputLayer = new Layer(1);
inputLayer.project(outputLayer);
// Получение веса первого соединения
const connection = inputLayer.connections.projected[0];
console.log(connection.weight);
// Изменение веса
connection.weight = 0.5;
Особое внимание уделяется тому, что веса являются
динамическими величинами, которые напрямую влияют на выход сети. При
сохранении и восстановлении сети через
toJSON/fromJSON веса сохраняются и
восстанавливаются точно.
Каждый нейрон и каждое соединение имеют уникальный идентификатор
ID. В Synaptic идентификаторы используются для:
ID присваиваются автоматически при создании объекта и представляют собой числовые значения или строки, гарантируя уникальность в пределах сети.
Пример:
const neuron = new Layer.Neuron();
console.log(neuron.ID); // Например, 'neuron_1'
const connection = new Layer.Connection(neuron, anotherNeuron);
console.log(connection.ID); // Например, 'connection_1'
Использование ID важно при работе с кастомными алгоритмами обучения или при необходимости точного контроля структуры сети.
Synaptic содержит ряд внутренних полей, не предназначенных для прямого изменения, но критичных для работы сети. К ним относятся:
activation – текущее значение
активации нейрона. Изменяется после вызова метода
activate.bias – смещение нейрона, добавляемое к
сумме входных сигналов перед активацией.squash – функция активации,
используемая нейроном (Layer.squash.TANH,
LOGISTIC, IDENTITY и др.).projected / connections –
массивы исходящих и входящих соединений нейрона.connected – информация о связях
нейрона с другими слоями.error – величина ошибки, используемая
в обучении методом обратного распространения.Служебные поля соединений включают:
from / to – ссылки на
исходный и целевой нейрон.gain – множитель влияния сигнала
(обычно 1, но может изменяться в кастомных реализациях).weight – текущий вес соединения.enabled – булево значение,
указывающее, активно ли соединение в вычислениях.Пример работы со служебными полями:
const connection = inputLayer.connections.projected[0];
console.log(connection.from.ID); // ID нейрона источника
console.log(connection.to.ID); // ID нейрона назначения
console.log(connection.weight); // Вес соединения
console.log(connection.gain); // Коэффициент усиления
Эти поля позволяют реализовывать продвинутые техники обучения и адаптации сети, включая динамическое включение/отключение связей или настройку функций активации для отдельных нейронов.
activation и
error без необходимости.gain и enabled для реализации нейронов с
переменной связностью.Эффективное управление весами, идентификаторами и служебными полями позволяет создавать нейронные сети Synaptic любой сложности, от простых многослойных перцептронов до рекуррентных и адаптивных структур.