Какую функцию активации выбрать?

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

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

Линейная функция активации

Обратите особое внимание на то, что при использовании линейной функции активации полносвязанный слой эквивалентен перемножению вектора на матрицу. А это значит что несколько полносвязанных слоев с линейной функцией активации эквивалентны всего лишь одному полносвязанному слою. По этой причине использование линейных функций активации в глубоких слоях зачастую лишено смысла.

Значения на выходе слоя

При работе с нейронными сетями практически всегда требуется проводить нормализацию данных. Обычно данные приводят к диапазонам [0,1] или [-1,1]. Так как диапазон возможных значений функции активации ограничен, ожидаемый выход слоя и нормирование данных должно согласовываться.

Для диапазона значений от 0 до 1 можно использовать практические любые функции активации. Однако, такие функции активации как softmax, и sigmoid будут гарантировать вам, что выдаваемые слоем значения будут лежать в диапазоне от 0 до 1, а значит могут быть интерпретированы как значения вероятностей или яркости пикселей. Последние для большинства устройств вывода информации не могут быть отрицательными. При этом softmax дополнительно выдает вектора, сумма элементов которых будет равна 1, а значит выходной вектор значений является корректно определенной дискретной функцией плотности вероятности.

Диапазона значений от -1 до 1 может выдать только линейная функция активации или гиперболический тангенс (tanh).

Функции активации в глубоком слое

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

В качестве альтернативы ReLU могут использоваться другие нелинейные функции активации: ELU, SELU, tanh, и другие. Однако, их применение зачастую уменьшает скорость работы нейронной сети.

На момент написания этого текста были предложены новые функции активации, показывающие более высокие значения в задачах классификации: SWISH, ELiSH. Возможно в будущем они станут рекомендуемыми по умолчанию для глубоких слоев в нейронных сетях.

Функции активации в выходном слое

Постановка задачи, которую должна решать нейронная сеть на предоставленных данных определяется комбинацией функции активации в выходном слое и используемой функцией потерь.

Задача

Loss (функция потерь)

Activation function на последнем слое

Регрессия

MSE (mean square error)

Linear

Бинарная (двухклассовая) классификация

Binary cross-entropy

Sigmoid

Многоклассовая

классификация

Categorical cross-entropy

Softmax

Многоклассовая классификация с несколькими метками

Binary cross-entropy

Sigmoid

Обучение автоэнкодеров

MSE (mean square error)

Должна согласовываться с нормализацией данных

Примечание: таблица охватывает только наиболее популярные задачи и архитектуры нейронных сетей, на самом деле все намного сложнее.

Last updated