Перейти к основному содержимому

Функции активации

Рассмотрим популярные функции активации h(u)h(u), использующиеся в нейросетях.

Тождественная функция активации (identity)

h(u)=uh(u)=u

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

Сигмоидная функция активации (sigmoid)

h(u)=σ(u)=11+euh(u)=\sigma(u)=\frac{1}{1+e^{-u}}

Принимает значения h(u)(0,1)h(u)\in(0,1) и используется в выходном слое нейронной сети для решения задачи бинарной классификации, предсказывает вероятность положительного класса p(y=+1x)p(y=+1|x).

В скрытых слоях почти не используется, поскольку за пределами интервала (3,3)(-3,3) выходит на горизонтальные асимптоты -1 и +1, почти не меняясь, в результате чего её градиент близок к нулю. Поскольку нейросети оптимизируются численными методами, используя градиент, то это приводит к медленной настройке и даже застреванию сигмоидных активаций в районе значений ±1\pm 1.

Гиперболический тангенс (tangh)

h(u)=tangh(u)=eueueu+eu=2σ(2u)1h(u)=\text{tangh}(u)=\frac{e^{u}-e^{-u}}{e^{u}+e^{-u}}=2\sigma(2u)-1

С точностью до линейного сжатия и сдвига совпадает с сигмоидной функцией активации, но, в отличие от неё, является нечётной функцией:

tangh(u)=tangh(u),\text{tangh}(-u)=-\text{tangh}(u),

что даёт преимущество при инициализации и настройке нейросети за счёт того, что если признаки были случайными величинами, центрированными вокруг нуля, то образованные от них активации также будут центрированными вокруг нуля, а также активации от активаций и так далее по всей нейросети. Т.е. не будет происходит систематического смещения в сторону горизонтальных асимптот tangh(x)\text{tangh}(x).

Тем не менее, используется в основном только в выходных регрессионных слоях, где есть ограничение на выход и снизу, и сверху, например, где нужно генерировать степень поворота руля [1,1][-1,1], чтобы оптимально объехать препятствие. В скрытых слоях практически не используется, поскольку обладает тем же недостатком, что и сигмоида: за пределами интервала (3,3)(-3,3) выходит на горизонтальные асимптоты -1 и +1 и почти не изменяется, из-за чего градиент по активации становится близким к нулю и градиентному методу оптимизации становится сложно изменить веса таким образом, чтобы вытолкнуть значение нейрона в область существенных изменений.

Плавная функция знака (SoftSign)

h(u)=u1+uh(u) = \frac{u}{1+|u|}

Soft-sign активация идейно повторяет tangh-активацию, но имеет характер приближения к асимптотам +1 и -1 полиномиальный, а не экспоненциальный. Т.е. на константные значения ±1\pm 1 функция выходит медленнее, что улучшает сходимость при настройке сети. Также soft-sign активация вычисляется быстрее, чем tangh.

Жёсткий гиперболический тангенс (hard tangh)

h(u)=max{1;min{u,+1}}h(u)=\max\{-1;\min\{u,+1\}\}

Используется так же, как и обычный гиперболический тангенс, но гораздо быстрее вычисляется за счёт более простых операций. Вычисление получается более точным и устойчивым, что актуально при использовании низкобитных представлений чисел (float16, int8) при построении компактных нейросетей для мобильных устройств.

SoftPlus

h(u)=ln(1+eu)h(u)=\ln (1+e^u)

Имеет нетривиальный градиент уже на полуоси u3u\ge 3, за счёт чего используется как в скрытых слоях, так и в выходных слоях, где нужно предсказывать регрессионный отклик, который должен быть неотрицательным (например, когда предсказываем время до наступления некоторого события, зная, что оно ещё не наступило).

Rectified linear unit (ReLU)

h(u)=max{0;u}h(u) = \max\{0;u\}

Имеет нетривиальный градиент +1 на полуоси u>0u>0 , за счёт чего используется как в скрытых слоях, так и в выходных слоях, где нужно предсказывать регрессионный отклик, который должен быть неотрицательным. Идейно повторяя SoftPlus-активацию, вычисляется гораздо быстрее и устойчивее при низкобитных представлениях чисел в облегчённых нейросетевых моделях. Одна из самых популярный функций активации.

Обладает недостатком, что зануляет отрицательные значения, в результате чего, если нейрону приходят только отрицательные значения, то он расходует вычисления, но выдаёт тождественный ноль (dead neuron).

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

Leaky rectified linear unit (Leaky ReLU)

h(u)=max{αu;u},  α(0,1)гиперпараметр.h(u)=\max\{ \alpha u; u \},\; \alpha\in (0,1) - \text{гиперпараметр.}

Обладает всеми достоинствами ReLU активации, но помимо этого имеет нетривиальный градиент α(0,1)\alpha\in(0,1) и в отрицательной области, за счёт чего нейрон всегда выдаёт нетривиальные значения, а не вырождается в константу. Рекомендуется к использованию как наилучший вариант.

В классическом LeakyReLU α=0.01\alpha=0.01, хотя можно использовать и другие значения и даже настраивать его как параметр вместе с весами нейросети.