Библиотека Synaptic предоставляет гибкий инструмент для создания нейронных сетей в JavaScript. Ключевым компонентом любой нейронной сети является функция активации, определяющая выход нейрона на основе суммы входных сигналов. Synaptic включает несколько встроенных функций активации, каждая из которых обладает своими особенностями, преимуществами и ограничениями.
Sigmoid — классическая S-образная функция активации, определяемая формулой:
[ (x) = ]
Основные характеристики:
В Synaptic использование функции Sigmoid выглядит так:
const { Layer, Network, Trainer } = require('synaptic');
let inputLayer = new Layer(2);
let hiddenLayer = new Layer(3);
let outputLayer = new Layer(1);
hiddenLayer.set({
squash: require('synaptic').Neuron.squash.LOGISTIC
});
outputLayer.set({
squash: require('synaptic').Neuron.squash.LOGISTIC
});
inputLayer.project(hiddenLayer);
hiddenLayer.project(outputLayer);
Функция Sigmoid хорошо подходит для задач классификации, где результат интерпретируется как вероятность.
Tanh (гиперболический тангенс) — функция активации с диапазоном от -1 до 1:
[ (x) = ]
Преимущества по сравнению с Sigmoid:
В Synaptic Tanh подключается через
Neuron.squash.TANH:
hiddenLayer.set({
squash: require('synaptic').Neuron.squash.TANH
});
Tanh часто используется в рекуррентных и глубоких сетях, где требуется отрицательная активация для баланса сигнала.
ReLU — линейная функция активации с отсечкой отрицательных значений:
[ f(x) = (0, x)]
Ключевые свойства:
В Synaptic ReLU реализуется через модуль
Neuron.squash.RELU:
hiddenLayer.set({
squash: require('synaptic').Neuron.squash.RELU
});
ReLU является стандартом для современных глубоких сетей, особенно в сверточных и полносвязных архитектурах.
Помимо перечисленных, Synaptic поддерживает:
Пример установки линейной функции активации:
outputLayer.set({
squash: require('synaptic').Neuron.squash.IDENTITY
});
Важный аспект — производная функции активации,
которая используется для обратного распространения ошибки. В Synaptic
каждая функция активации имеет встроенную производную, что позволяет
тренировать сеть стандартным методом Trainer.
Synaptic обеспечивает гибкость, позволяя легко менять функции активации на уровне отдельного нейрона или целого слоя, что делает его удобным инструментом для экспериментов и обучения нейронных сетей в JavaScript.