Функции активации играют центральную роль в нейронных сетях, определяя нелинейность, которая позволяет моделям решать сложные задачи классификации, регрессии и генерации данных. В библиотеке ConvNetJS, реализованной на JavaScript, предусмотрен набор стандартных функций активации, каждая из которых имеет специфические свойства, влияющие на обучение и производительность сети.
Линейная функция активации описывается формулой:
[ f(x) = x]
Она сохраняет входное значение без изменений. Используется редко в скрытых слоях, но может применяться в выходном слое для задач регрессии, где важно предсказывать непрерывные значения.
Особенности:
В ConvNetJS линейная активация задаётся через параметр
act: 'identity'.
Сигмоидальная функция описывается выражением:
[ (x) = ]
Выход функции находится в диапазоне ( (0, 1) ), что делает её удобной для моделирования вероятностей.
Преимущества:
Недостатки:
В ConvNetJS сигмоид задаётся через act: 'sigmoid'.
Функция tanh описывается формулой:
[ (x) = ]
Её выход лежит в диапазоне ((-1, 1)), что делает распределение активаций более симметричным относительно нуля.
Преимущества:
Недостатки:
В ConvNetJS активация tanh указывается как
act: 'tanh'.
ReLU является одной из наиболее популярных функций активации:
[ f(x) = (0, x)]
Она обнуляет все отрицательные значения и пропускает положительные без изменений.
Преимущества:
Недостатки:
В ConvNetJS ReLU задаётся как act: 'relu'. Существуют
модификации ReLU, такие как Leaky ReLU, которые
используют небольшой положительный градиент для отрицательных значений
(act: 'leakyrelu').
Softmax преобразует вектор чисел в вероятностное распределение:
[ (x_i) = ]
Применение:
Особенности:
act: 'softmax'.Выбор функции активации напрямую влияет на:
При создании слоя в ConvNetJS активация задаётся как параметр
activation. Например:
var layer = new convnetjs.Layer({type:'fc', num_neurons:128, activation:'relu'});
fc — полностью связанный слой.num_neurons — количество нейронов в слое.activation — тип функции активации.Для сверточных слоев:
var convLayer = new convnetjs.Layer({
type: 'conv',
sx: 5,
filters: 16,
stride: 1,
pad: 2,
activation: 'tanh'
});
Параметр activation одинаково применим ко всем слоям,
поддерживающим нелинейность.
Функции активации в ConvNetJS тесно интегрированы с архитектурой слоев и оптимизаторами, поэтому их правильный выбор критически влияет на обучение и стабильность сети.