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

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

Сигмовидная функция

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

σ(x) = 1/(1+exp(-x))

На графике сигмовидная функция выглядит так

Мы видим, что значение σ(x) находится в диапазоне от 0 до 1. Это особенно полезно в задачах бинарной классификации, где любые входные данные сводятся к выходным значениям от 0 до 1.

Одним из основных недостатков сигмовидной функции является то, что градиенты или наклон при значениях x больше 4 или меньше -4 почти равны 0. Это приводит к плохому обучению, когда мы используем алгоритм градиентного спуска для обновления значения наших весов и перехватывает.

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

Производная сигмовидной функции определяется выражением

σ(x) = σ(x)(1-σ(x))                                              (1)

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

Функция активации Tanh определяется выражением

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

Функция активации Tanh также страдает от проблемы исчезающих градиентов, когда значения x увеличиваются или уменьшаются выше +4 или ниже -4.

Производная функции тангенса определяется выражением

tanh'(x) = 1 - tanh(x)*tanh(x)

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

Функция активации ReLU или Rectified Linear Unit наиболее широко используется в настоящее время для нейронных сетей. Основное преимущество ReLU по сравнению с двумя другими функциями активации, упомянутыми ранее, заключается в том, что наклон всегда равен 1 для значений x > 0.

ReLU дается

Было замечено, что ReLU в большинстве случаев работает лучше, чем tanh и сигмоид, и поэтому широко используется сегодня. Одним из недостатков ReLU является то, что наклон для отрицательного ввода равен нулю, что означает, что для активаций в этой области веса не обновляются во время обратного распространения. Это может создать мертвые нейроны, которые никогда не активируются.

Производная ReLU определяется выражением

Функция активации Leaky ReLU

Функция активации Leaky ReLU представляет собой небольшую модификацию функции активации ReLU, как показано ниже.

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

Производная для Leaky ReLU определяется выражением

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

Идеи взяты из DeepLearning.AI, которые я попытался воспроизвести своими словами.

Спасибо, что прочитали. Ваши комментарии, предложения или вопросы приветствуются.