Метод Network.activate и прямое распространение

В библиотеке Synaptic метод Network.activate играет ключевую роль в процессе прямого распространения сигнала через нейронную сеть. Этот метод используется для получения ответа сети на входные данные и является основой всех вычислительных операций сети до применения обратного распространения ошибок.


Принцип работы метода activate

Метод activate принимает на вход вектор чисел, представляющий значения входных нейронов. Сеть состоит из нейронов, организованных в слои, и каждый нейрон вычисляет свою активацию по формуле:

[ y = f(_i w_i x_i + b)]

где:

  • (x_i) — входные значения для данного нейрона,
  • (w_i) — соответствующие веса,
    1. — смещение (bias),
    1. — функция активации, задаваемая в конфигурации нейрона (по умолчанию сигмоида sigmoid).

При вызове network.activate(input) библиотека автоматически выполняет следующие шаги:

  1. Инициализация входного слоя значениями из массива input.
  2. Последовательное вычисление активаций нейронов скрытых слоев. Каждый нейрон суммирует взвешенные входы и передает результат через функцию активации.
  3. Вычисление активаций выходного слоя, результат которого возвращается в виде массива.

Таким образом, activate реализует процесс прямого распространения сигнала (forward propagation).


Особенности использования

  • Формат входных данных: метод принимает массив чисел [x1, x2, x3, ...]. Размер массива должен совпадать с числом нейронов во входном слое.
  • Возврат значения: результат activate всегда является массивом чисел, соответствующих каждому нейрону выходного слоя. Для однослойной сети это один массив, для многослойной сети — массив итоговых значений.
  • Повторное использование сети: activate можно вызывать многократно с разными входами без необходимости пересоздавать сеть.

Пример базового вызова:

const synaptic = require('synaptic');
const { Layer, Network } = synaptic;

const inputLayer = new Layer(2);
const hiddenLayer = new Layer(3);
const outputLayer = new Layer(1);

inputLayer.project(hiddenLayer);
hiddenLayer.project(outputLayer);

const myNetwork = new Network({
  input: inputLayer,
  hidden: [hiddenLayer],
  output: outputLayer
});

const output = myNetwork.activate([0.5, 0.8]);
console.log(output);

В этом примере сигнал проходит через два слоя: скрытый и выходной, и возвращает итоговое значение сети.


Настройка функции активации нейронов

Synaptic позволяет изменять функцию активации каждого нейрона, что влияет на поведение прямого распространения:

  • Сигмоида (sigmoid) — стандартная, значения от 0 до 1.
  • Гиперболический тангенс (tanh) — значения от -1 до 1, полезен для центровки данных.
  • Линейная (identity) — простая передача входа без искажения.

Пример изменения функции активации:

hiddenLayer.set({
  squash: synaptic.Neuron.tanh
});

При следующем вызове activate нейроны скрытого слоя будут использовать tanh вместо сигмоиды.


Взаимосвязь с обучением

Метод activate является первым шагом в цикле обучения нейронной сети. Прямое распространение необходимо для:

  • Вычисления ошибки на выходе сети: разница между предсказанным значением и целевым значением.
  • Обратного распространения ошибки: метод propagate использует результат activate для корректировки весов.

Типичный цикл обучения выглядит так:

const input = [1, 0];
const target = [1];

const output = myNetwork.activate(input);
myNetwork.propagate(0.3, target);

Здесь 0.3 — скорость обучения, target — эталонный результат.


Поведенческие нюансы

  • Состояние нейронов сохраняется. После вызова activate текущие значения нейронов остаются в памяти сети, что позволяет использовать их в последующих вычислениях, например, для рекуррентных сетей.
  • Поддержка многослойных и рекуррентных сетей. Метод автоматически учитывает все связи и последовательность слоев.
  • Возможность отключения смещений. Если у нейронов не задан bias, активация выполняется только на основе взвешенных входов.

Советы по эффективной работе

  • Перед вызовом activate убедиться, что структура сети корректно соединена (input → hidden → output).
  • Для больших входных массивов использовать нормализацию данных: значения должны быть в диапазоне функции активации, чтобы избежать насыщения сигмоид.
  • При многократных вызовах с разными входами можно сохранять результаты промежуточных слоев для анализа влияния скрытых нейронов.

Метод Network.activate — фундаментальный инструмент Synaptic для вычисления выходов сети по входным данным. Он обеспечивает точное и предсказуемое прямое распространение сигнала, формируя основу для всех последующих операций обучения и анализа нейронной сети.