В нейронных сетях термин самоактивация (self-activation) относится к ситуации, когда выход нейрона частично влияет на его собственный вход. Это создаёт возможность поддержания состояния нейрона во времени, что особенно важно для моделирования динамических систем и кратковременной памяти. Рекуррентные связи (recurrent connections) — это связи, при которых нейрон передаёт информацию не только в следующий слой, но и обратно самому себе или предыдущим слоям.
В библиотеке Synaptic рекуррентные связи реализуются
через класс Layer с методами project и
set для соединения слоёв и нейронов между собой, включая
самопроекции.
Базовая структура нейрона в Synaptic определяется классом
Neuron. Для включения самоактивации необходимо соединить
выход нейрона с его входом через синапс:
const synaptic = require('synaptic');
const { Neuron } = synaptic;
let neuron = new Neuron();
// Создание самопроекции
neuron.project(neuron);
Эта конструкция позволяет нейрону сохранять часть своего состояния между итерациями, что имитирует эффект кратковременной памяти. Значение веса синапса регулирует интенсивность самоактивации и напрямую влияет на стабильность сети.
Для более сложных систем используют слои нейронов
(Layer), которые могут быть рекуррентными. Метод
project позволяет создать рекуррентные соединения как
внутри слоя, так и между слоями:
const { Layer } = synaptic;
let layer = new Layer(5);
// Рекуррентная проекция слоя на самого себя
layer.project(layer);
Важным аспектом является управление весами рекуррентных соединений. Для динамических систем часто используют маленькие начальные значения весов, чтобы избежать экспоненциального роста сигналов или колебаний.
Самоактивация на уровне нейрона позволяет реализовать:
Пример установки весов для самопроекции:
let selfConnection = neuron.project(neuron);
selfConnection.set({ weight: 0.5 });
Значение веса 0.5 обеспечивает умеренную самоактивацию.
Слишком высокий вес может вызвать расходимость, а
слишком низкий — сделать эффект незаметным.
Рекуррентные сети обладают памятью состояния, благодаря чему возможно:
Для контроля поведения используют методы activate и
propagate для нейронов и слоёв:
// Активация нейрона с учётом рекуррентной связи
neuron.activate(1); // входное значение
neuron.propagate(0.1); // обратное распространение ошибки
Здесь самоактивация проявляется в том, что нейрон частично учитывает собственный предыдущий выход при вычислении нового состояния.
Использование рекуррентных соединений на уровне нейрона позволяет экономить ресурсы, создавая эффекты памяти без необходимости строить сложные LSTM или GRU.
Пример настройки слоя с рекуррентными связями и обучением:
layer.project(layer);
layer.set({
squash: synaptic.Neuron.squash.TANH
});
// обучение
for (let i = 0; i < 1000; i++) {
let input = Math.random();
layer.activate(input);
layer.propagate(0.05, input);
}
Эффект TANH-функции: сдерживает выход нейрона в диапазоне [-1, 1], предотвращая экспоненциальный рост при рекуррентных соединениях.
Самоактивирующиеся нейроны и слои могут быть интегрированы в более широкие сети:
Такое сочетание позволяет комбинировать память с обработкой новых входных данных, создавая гибкие и адаптивные архитектуры.