Функции активации играют центральную роль в работе нейронных сетей,
определяя, как входные сигналы преобразуются в выходные значения
нейронов. В библиотеке Synaptic функции активации
реализованы через объекты Neuron.squash, которые можно
применять к отдельным нейронам или слоям сети.
1. Логистическая функция (Logistic / Sigmoid) Логистическая функция имеет вид:
[ (x) = ]
В Synaptic задается как:
var Neuron = require('synaptic').Neuron;
Neuron.squash.LOGISTIC;
2. Гиперболический тангенс (Tanh)
[ (x) = ]
В Synaptic доступен как:
Neuron.squash.TANH;
3. Линейная функция (Linear)
[ f(x) = x]
В библиотеке:
Neuron.squash.IDENTITY;
4. Степенная функция (HardTanh / Step approximation)
HardTanh представляет собой приближенную версию гиперболического тангенса, ограничивая выход в диапазоне [-1, 1] без экспоненциальных вычислений.
Neuron.squash.HARD_TANH;
Производные функций активации необходимы для метода обратного
распространения ошибки (Backpropagation). Synaptic реализует их
автоматически через объект squash, обеспечивая корректное
вычисление градиента для каждого нейрона.
1. Производная логистической функции:
[ ’(x) = (x) (1 - (x))]
2. Производная Tanh:
[ ’(x) = 1 - ^2(x)]
3. Производная линейной функции:
[ f’(x) = 1]
4. Производная HardTanh:
[ f’(x) = ]
В Synaptic нейрон можно создать с конкретной функцией активации, например:
var neuron = new Neuron();
neuron.squash = Neuron.squash.LOGISTIC;
Для слоя:
var Layer = require('synaptic').Layer;
var hidden = new Layer(5);
hidden.set({
squash: Neuron.squash.TANH
});
Это позволяет всей группе нейронов использовать одну функцию активации без необходимости настраивать каждый нейрон отдельно.
Synaptic позволяет создавать собственные функции активации с заданной производной:
var customSquash = {
squash: function(x){
return x / (1 + Math.abs(x));
},
derivative: function(y){
return 1 / Math.pow(1 + Math.abs(y), 2);
}
};
var neuron = new Neuron();
neuron.squash = customSquash;
Это даёт гибкость для экспериментальных архитектур и специфических задач.
Функции активации и их производные определяют способность нейронной сети моделировать сложные зависимости. Их грамотный выбор и настройка критически важны для стабильного и эффективного обучения.