Библиотека Synaptic предоставляет мощный инструментарий для работы с нейронными сетями в JavaScript. Одной из ключевых составляющих архитектуры сети является класс Connection, который обеспечивает передачу сигналов между нейронами и слоями. В Synaptic Connection выступает связующим звеном, определяющим весовую величину, направление передачи данных и динамику обучения.
Объект Connection создаётся при соединении двух нейронов или слоёв. Его структура позволяет гибко управлять параметрами передачи сигнала:
let connection = new synaptic.Connection(fromNeuron, toNeuron);
Здесь fromNeuron — нейрон, от которого идёт сигнал, а
toNeuron — нейрон, принимающий сигнал. Connection
автоматически добавляется в массивы исходящих (projected) и
входящих (incoming) соединений соответствующих
нейронов.
from инициирует сигнал,
to его принимает.Connection предоставляет методы для прямого управления весами и влияния гейтинга:
activate(input) — вычисляет выход
соединения с учётом текущего веса и, при наличии гейтера, масштабирует
результат.propagate(rate, target) — корректирует
вес в соответствии с ошибкой target и скоростью обучения
rate. Используется внутри алгоритмов обратного
распространения ошибки.clear() — сбрасывает память соединения
и значения eligibility, что необходимо при инициализации обучения с нуля
или при реинциализации сети.Механизм gating позволяет динамически изменять силу передачи сигнала. Например, нейрон может выступать контроллером для группы соединений, регулируя поток информации в зависимости от состояния сети:
let gaterNeuron = new synaptic.Neuron();
connection.gater = gaterNeuron;
При активации сети вес соединения умножается на текущее значение активации гейтера. Это позволяет строить сложные рекуррентные и модульные сети, где сигналы могут условно блокироваться или усиливаться.
Каждый нейрон содержит два основных массива:
projected — исходящие соединения,
которые нейрон отправляет другим нейронам или слоям.incoming — входящие соединения, через
которые нейрон получает сигнал.Connection автоматически регистрируется в этих массивах при создании, что обеспечивает согласованность архитектуры сети и упрощает процедуру обучения.
Вес соединения можно задавать явно при создании или изменять в процессе обучения:
connection.weight = 0.5; // фиксированное значение
Для случайной инициализации используют функцию генерации случайных чисел:
connection.weight = Math.random() * 2 - 1; // диапазон [-1, 1]
Корректное начальное распределение весов критично для сходимости обучения, особенно в глубоких и рекуррентных сетях.
Connection является фундаментальной единицей передачи информации между нейронами. Его свойства weight, from, to, gater, eligibility и методы управления позволяют реализовывать как простые прямые сети, так и сложные рекуррентные и модульные архитектуры. Правильная настройка соединений и понимание их динамики критически важны для эффективного обучения и стабильной работы нейронной сети в Synaptic.