Библиотека 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 — массив чисел, представляющий целевые значения
для соответствующих выходов сети.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.Использование этих методов вручную предоставляет гибкость для создания кастомных алгоритмов обучения, например, для онлайн-обучения, батчевого обучения или реализации нестандартных схем обратного распространения.
Функции активации Методы работают с различными активационными функциями, которые могут быть заданы на уровне нейрона или слоя. Влияние функции активации критично для сходимости обучения.
Обработка слоёв Dropout и Noise Метод
activate учитывает случайное отключение нейронов, если
включён режим обучения. Это предотвращает переобучение.
Градиенты и производные Метод
propagate опирается на производные активационной функции,
поэтому точность вычислений напрямую влияет на корректность
обучения.
Комбинированные сети В сложных архитектурах,
например, с рекуррентными связями, методы activate и
propagate могут вызываться несколько раз для разных
временных шагов, что требует внимательного управления состоянием
нейронов.
propagate необходимо вызвать
activate, чтобы получить актуальные значения выхода.propagate.Методы activate и propagate являются
фундаментом работы с Synaptic, обеспечивая точное управление
сигналами и обучением нейронной сети, что позволяет создавать
как простые, так и сложные архитектуры с детальной настройкой поведения
каждого нейрона.