Различие функций активации в нейронных сетях в целом

15

Я изучил типы функций активации для нейронных сетей. Сами функции довольно просты, но различие в применении не совсем понятно.

Разумно различать логические и линейные функции, в зависимости от желаемого двоичного / непрерывного вывода, но в чем преимущество сигмоидальной функции перед простой линейной?

Например, ReLU особенно трудно понять для меня: какой смысл использовать функцию, которая ведет себя как линейная в случае положительных входов, но «плоская» в случае отрицательных? Какова интуиция за этим? Или это просто пробная ошибка, не более того?

Хендрик
источник

Ответы:

16

Аналогичный вопрос был задан в CV: Полный список функций активации в нейронных сетях с плюсами / минусами .

Я копирую ниже один из ответов:

Один такой список, хотя и не очень исчерпывающий: http://cs231n.github.io/neural-networks-1/

Обычно используемые функции активации

Каждая функция активации (или нелинейность ) принимает одно число и выполняет с ним определенную фиксированную математическую операцию. Есть несколько функций активации, с которыми вы можете столкнуться на практике:

введите описание изображения здесьвведите описание изображения здесь

Слева: нелинейность сигмоида сжимает действительные числа в диапазоне между [0,1] Справа: нелинейность Танга сжимает действительные числа в диапазоне между [-1,1].

Сигмовидной. Сигмовидная нелинейность имеет математическую форму σ(Икс)знак равно1/(1+е-Икс)и показано на изображении выше слева. Как упоминалось в предыдущем разделе, он принимает действительное число и «сдавливает» его в диапазоне от 0 до 1. В частности, большие отрицательные числа становятся 0, а большие положительные числа становятся 1. Исторически сигмовидная функция часто использовалась поскольку он имеет хорошую интерпретацию как скорость стрельбы нейрона: от полного отсутствия (0) до полностью насыщенного срабатывания на предполагаемой максимальной частоте (1). На практике нелинейность сигмовидной формы в последнее время утратила популярность и редко используется. У него есть два основных недостатка:

  • Сигмоиды насыщают и убивают градиенты . Очень нежелательное свойство сигмовидного нейрона состоит в том, что, когда активация нейрона насыщается в хвосте 0 или 1, градиент в этих областях почти равен нулю. Напомним, что во время обратного распространения этот (локальный) градиент будет умножен на градиент выходных данных этих ворот для всей цели. Поэтому, если локальный градиент очень мал, он будет эффективно «убивать» градиент, и почти никакой сигнал не будет проходить через нейрон до его весов и рекурсивно к его данным. Кроме того, необходимо соблюдать особую осторожность при инициализации веса сигмовидных нейронов, чтобы предотвратить насыщение. Например, если начальные веса слишком велики, большинство нейронов будет насыщено, и сеть едва научится.
  • Сигмоидальные выходы не центрированы по нулю . Это нежелательно, поскольку нейроны на более поздних уровнях обработки в нейронной сети (подробнее об этом в ближайшее время) будут получать данные, которые не центрированы на нуле. Это влияет на динамику во время градиентного спуска, потому что, если данные, поступающие в нейрон, всегда положительны (например, поэлементно в f = w TИкс>0езнак равновесTИкс+бвесе). Это может привести к нежелательной зигзагообразной динамике в градиентных обновлениях весов. Однако обратите внимание, что после добавления этих градиентов в пакет данных окончательное обновление весов может иметь переменные признаки, что несколько смягчает эту проблему. Следовательно, это неудобство, но оно имеет менее серьезные последствия по сравнению с вышеуказанной проблемой насыщенной активации.

TANH(Икс)знак равно2σ(2Икс)-1

введите описание изображения здесьвведите описание изображения здесь

Слева: функция активации выпрямленной линейной единицы (ReLU), которая равна нулю, когда x <0, и затем линейна с наклоном 1, когда x> 0. Справа: график из Крижевского и соавт. (pdf) документ, показывающий 6-кратное улучшение сходимости с единицей ReLU по сравнению с единицей tanh.

РЕЛУ. Выпрямленная линейная единица стала очень популярной в последние несколько лет. Вычисляет функцию . Другими словами, активация просто пороговая в нуле (см. Изображение выше слева). Есть несколько плюсов и минусов использования ReLU:е(Икс)знак равноМаксимум(0,Икс)

  • (+) Было обнаружено, что он значительно ускоряет (например, в 6 раз у Крижевского и др. ) Сходимость стохастического градиентного спуска по сравнению с сигмоидальными / танговыми функциями. Утверждается, что это связано с его линейной ненасыщенной формой.
  • (+) По сравнению с коричневыми / сигмовидными нейронами, которые включают в себя дорогостоящие операции (экспоненты и т. Д.), ReLU может быть реализован простым пороговым значением матрицы активаций в нуле.
  • (-) К сожалению, во время тренировки юниты ReLU могут быть хрупкими и могут «умереть». Например, большой градиент, протекающий через нейрон ReLU, может привести к тому, что веса обновятся таким образом, что нейрон никогда больше не активируется ни на одном из точек данных. Если это произойдет, то градиент, текущий через единицу, будет всегда нулевым с этой точки. То есть блоки ReLU могут необратимо умереть во время обучения, поскольку они могут быть сбиты с коллектора данных. Например, вы можете обнаружить, что до 40% вашей сети могут быть «мертвыми» (то есть нейроны, которые никогда не активируются по всему набору обучающих данных), если скорость обучения установлена ​​слишком высокой. При правильной настройке скорости обучения это не так часто.

е(Икс)знак равно1(Икс<0)(αИкс)+1(Икс> =0)(Икс)αмаленькая константа. Некоторые люди сообщают об успехе с помощью этой формы функции активации, но результаты не всегда согласуются. Наклон в отрицательной области также может быть превращен в параметр каждого нейрона, как видно из нейронов PReLU, представленных в « Погружении глубоко в выпрямители» , Kaiming He et al., 2015. Тем не менее, в настоящее время согласованность выгод по задачам неясно.

введите описание изображения здесь

е(весTИкс+б)Максимум(вес1TИкс+б1,вес2TИкс+б2)вес1,б1знак равно0

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

TLDR : « Какой тип нейронов мне следует использовать? » Используйте нелинейность ReLU, будьте осторожны со скоростью обучения и, возможно, следите за долей «мертвых» единиц в сети. Если это касается вас, попробуйте Leaky ReLU или Maxout. Никогда не используйте сигмовидную кишку. Попробуйте tanh, но ожидайте, что он будет работать хуже, чем ReLU / Maxout.


Лицензия:


Лицензия MIT (MIT)

Copyright (c) 2015 Андрей Карпати

Настоящим предоставляется бесплатное разрешение любому лицу, получающему копию данного программного обеспечения и связанных с ним файлов документации (далее - «Программное обеспечение»), осуществлять операции с Программным обеспечением без ограничений, включая, помимо прочего, права на использование, копирование, изменение, слияние. публиковать, распространять, сублицензировать и / или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставляется Программное обеспечение, делать это при соблюдении следующих условий:

Вышеуказанное уведомление об авторских правах и это уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЯ ГАРАНТИИ ТОВАРНОГО ОБЕСПЕЧЕНИЯ, ПРИГОДНОСТИ ДЛЯ ОСОБЫХ ЦЕЛЕЙ И НЕЗАКРЕПЛЕНИЙ. Ни при каких обстоятельствах авторы или держатели авторских прав не несут ответственности за любые претензии, ущерб или иную ответственность, будь то в результате действия контракта, деликтного или иного действия, возникающего в результате, в результате или в связи с программным обеспечением или использованием в другом месте. ПРОГРАМНОЕ ОБЕСПЕЧЕНИЕ.*

Франк Дернонкур
источник
Спасибо, это резюме дает некоторое представление, но, честно говоря, я все еще не могу понять некоторые детали интуитивно (например, почему ReLU "значительно ускоряет конвергенцию SGD"), и больше всего: какой выбрать? Исходя из заключения, Maxout - лучший, и на этом все. Но кроме того факта, что Maxout не реализован в самых популярных пакетах (например, в Keras), мне кажется разумным, что по крайней мере в последнем слое должны быть размещены другие типы (например, сигмоид для биклассификации).
Хендрик