Метод activate и метод propagate

Библиотека Synaptic предоставляет мощный инструментарий для построения нейронных сетей в JavaScript, включая возможности создания сетей с различными архитектурами, обучения с учителем и без него, а также гибкую настройку процессов прямого и обратного распространения сигнала. В центре этих процессов находятся методы activate и propagate, которые обеспечивают работу нейронной сети на уровне отдельных слоев и нейронов.


Метод activate

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

Сигнатура метода

neuron.activate(input, [options])

Параметры:

  • input — массив чисел, представляющий значения входных сигналов.

  • options (необязательный) — объект с настройками активации:

    • derivative — флаг, указывающий, нужно ли возвращать производные (используется для обучения).
    • training — логический параметр, который включает режим обучения (может влиять на слои Dropout и Noise).

Возвращаемое значение: массив чисел, соответствующий выходам нейронов слоя или всей сети.

Пример работы

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

let inputLayer = new Layer(3);
let outputLayer = new Layer(2);

inputLayer.project(outputLayer);

let inputValues = [0.5, 0.2, 0.8];
let outputValues = inputLayer.activate(inputValues);

console.log(outputValues);

В этом примере сигнал проходит через входной слой и передаётся на связанный выходной слой, преобразуясь активационной функцией нейронов. Метод activate обеспечивает корректное суммирование взвешенных сигналов и применение выбранной функции активации (по умолчанию это сигмоида).


Метод propagate

Метод propagate отвечает за обратное распространение ошибки, то есть процесс обучения сети через корректировку весов. Этот метод используется после вызова activate и позволяет нейронам корректировать свои веса для минимизации ошибки.

Сигнатура метода

neuron.propagate(learningRate, target)

Параметры:

  • learningRate — коэффициент обучения, определяющий величину корректировки весов на каждом шаге.
  • target — массив чисел, представляющий целевые значения для соответствующих выходов сети.

Механизм работы

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

Пример использования

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

let inputLayer = new Layer(3);
let hiddenLayer = new Layer(4);
let outputLayer = new Layer(2);

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

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

let inputValues = [0.6, 0.1, 0.8];
let targetValues = [1, 0];

// Прямое распространение
let outputValues = network.activate(inputValues);

// Обратное распространение ошибки
network.propagate(0.3, targetValues);

В этом примере после активации сети методом activate вызывается propagate, который изменяет веса сети таким образом, чтобы выходной сигнал приблизился к целевому значению.


Взаимодействие методов

Методы activate и propagate тесно связаны:

  • activate создаёт основу для обучения, вычисляя текущие значения выхода.
  • propagate использует эти значения для вычисления градиентов и корректировки весов.
  • Корректная последовательность вызовов: сначала activate, затем propagate.

Использование этих методов вручную предоставляет гибкость для создания кастомных алгоритмов обучения, например, для онлайн-обучения, батчевого обучения или реализации нестандартных схем обратного распространения.


Особенности и тонкости

  1. Функции активации Методы работают с различными активационными функциями, которые могут быть заданы на уровне нейрона или слоя. Влияние функции активации критично для сходимости обучения.

  2. Обработка слоёв Dropout и Noise Метод activate учитывает случайное отключение нейронов, если включён режим обучения. Это предотвращает переобучение.

  3. Градиенты и производные Метод propagate опирается на производные активационной функции, поэтому точность вычислений напрямую влияет на корректность обучения.

  4. Комбинированные сети В сложных архитектурах, например, с рекуррентными связями, методы activate и propagate могут вызываться несколько раз для разных временных шагов, что требует внимательного управления состоянием нейронов.


Практические рекомендации

  • Для стабильного обучения рекомендуется выбирать умеренный коэффициент обучения, обычно в диапазоне 0.1–0.3.
  • Перед использованием propagate необходимо вызвать activate, чтобы получить актуальные значения выхода.
  • Для визуализации процесса обучения полезно фиксировать значения ошибки после каждого шага propagate.
  • В многослойных сетях полезно отслеживать отдельные слои, чтобы убедиться в корректной передаче градиентов.

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