В прошлом десятилетии стандартной активационной функцией для сетей считалась \(\tanh(x)\) или, по-другому, hyperbolic tangent function:
\[f(x)=\tanh(x)\]График этой функции очень похож на сигмоиду, однако, в отличие от последней, границы оси y которой лежат в пределах [0; 1], границы \(\tanh(x)\) лежат в пределах [-1; 1]:
В современном мире чаще всего взамен \(\tanh\) используют ReLU (Rectified Linear Units), которая представляет собой функцию, которая возвращает положительное или нулевое значение аргумента:
\[f(x)= \max(0,x)\]Выглядит ReLU на графике вот так:
Замена в сети LeNet-5 активационной функции tanh на ReLU (без изменения других параметров) дала 0,5% прирост accuracy на тренировочных и тестовых данных:
Значение loss уменьшается заметно быстрее у ReLU. На тестовых данных loss падает с 0.09352 до 0.06445:
Может показаться, что из-за такого маленького прироста вообще нет смысла говорить о замене активационной функции, однако, LeNet-5 слишком простая и неглубокая сеть, к тому же её обучение проводилось на довольно маленьких изображениях.
В статье, описывающей сеть AlexNet (Krizhevsky et al., 2012), сказано, что у исследователей на датасете CIFAR-10 значение training error rate падало с функцией ReLU в шесть раз быстрее, чем \(\tanh\):