Self-connections — это связи нейрона с самим собой, которые позволяют нейронной сети сохранять информацию о предыдущем состоянии активации отдельного нейрона. В библиотеке Synaptic self-connections реализуются через объект Connection, где исходный и целевой нейрон совпадают. Такие соединения создают локальную рекуррентность и используются для моделирования короткой памяти на уровне отдельных нейронов.
В Synaptic для создания self-connection достаточно явно задать нейрон в качестве как источника, так и приёмника:
const { Neuron, Layer } = require('synaptic');
let neuron = new Neuron();
// Создание self-connection
neuron.project(neuron, {
weight: 0.5
});
Ключевые параметры:
weight — начальный вес соединения. От него зависит,
насколько предыдущая активация нейрона влияет на текущую.gater (опционально) — нейрон, который будет управлять
силой сигнала на self-connection. Этот механизм позволяет реализовать
динамическую модуляцию рекуррентного эффекта.Рекуррентность на уровне связей расширяет концепцию self-connection
на группы нейронов. В Synaptic это реализуется через метод
project, который позволяет создавать циклические соединения
между слоями или отдельными нейронами:
let layer1 = new Layer(3);
let layer2 = new Layer(3);
// Полная рекуррентная проекция между слоями
layer1.project(layer2, Layer.connectionType.ALL_TO_ALL);
layer2.project(layer1, Layer.connectionType.ALL_TO_ALL);
Особенности:
Self-connections можно модифицировать с помощью gater-нейронов, которые управляют величиной сигнала на связи. Это позволяет реализовать механизмы, аналогичные тем, что используются в LSTM и GRU, но на уровне отдельного нейрона:
let gatingNeuron = new Neuron();
let neuron = new Neuron();
let connection = neuron.project(neuron);
gatingNeuron.gate(connection);
В этом случае значение активации gatingNeuron определяет
силу сигнала, проходящего через self-connection
neuron → neuron.
Кратковременная память Self-connections позволяют нейрону «помнить» собственное предыдущее состояние, что полезно для предсказания временных рядов или обработки последовательностей.
Моделирование осцилляций Нейронные цепи с self-connections могут создавать устойчивые или затухающие колебания активации, что имитирует биологические ритмы.
Управление динамикой сети Через гейтирование можно регулировать, когда нейрон «включает» или «выключает» влияние предыдущей активации, создавая механизмы условного запоминания.
Self-connections и рекуррентные связи легко интегрируются с объектами Layer. Для слоя можно создавать self-connections для каждого нейрона:
layer.neurons().forEach(neuron => neuron.project(neuron));
Также можно комбинировать self-connections и рекуррентные связи между слоями для построения гибких рекуррентных сетей с контролируемым внутренним состоянием.
Self-connections и рекуррентность на уровне связей дают нейронной сети возможность хранить локальную информацию, формировать динамическое поведение и создавать сложные временные паттерны без усложнения архитектуры слоев. Их использование расширяет возможности Synaptic при моделировании как биологически вдохновленных систем, так и задач прогнозирования временных рядов.