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

13

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

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

Тем не менее, выбор для них в скрытом слое в основном из-за проб и ошибок.

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

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

gvgramazio
источник

Ответы:

10

Мне кажется, что вы уже понимаете недостатки ReLU и сигмоидов (например, мертвые нейроны в случае простого ReLU). Я бы посоветовал взглянуть на ELU (экспоненциальные линейные единицы) и SELU (самонормализующая версия ELU). Согласно некоторым мягким предположениям, последние обладают хорошим свойством саморенизации, что смягчает проблему исчезновения и взрыва градиентов. Кроме того, они распространяют нормализацию, т. Е. Они гарантируют, что вход на следующий уровень будет иметь нулевое среднее значение и единичную дисперсию.

Редактировать:


Было бы невероятно трудно порекомендовать функцию активации, которая работает для всех случаев использования (хотя я считаю, что SELU был спроектирован так, чтобы он правильно делал практически с любым вводом). Есть много соображений - насколько сложно вычислить производную (если она вообще дифференцируема!), Как быстро сходится сеть с выбранным AF, насколько она гладкая, удовлетворяет ли она условиям теоремы универсального приближения , сохраняет нормализацию и т. д. Вы можете или не можете заботиться о некоторых или любой из них.

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

В конце дня вы, вероятно, получите столько же мнений, сколько есть людей относительно правильного выбора функции активации, поэтому короткий ответ, вероятно, должен быть следующим: начать с AF дня (неплотный ReLU / SELU?) и проложите себе путь через другие AF в порядке уменьшения популярности, если ваша сеть пытается что-то узнать.

cantordust
источник
1
Правильно, я забыл о распространении нормализации. Спасибо за напоминание. Тем не менее, вопрос до сих пор остается без ответа. Есть правило или что-то, чтобы выбрать, какие функции активации я должен поместить в скрытые слои? Для простоты я говорю только о просто полностью связанных слоях. Я не хочу усложнять тему с извилинами, объединением и т. Д.
gvgramazio
@gvgramazio Я отредактировал ответ, надеюсь, теперь он немного полезнее.
cantordust
С редактированием я думаю, что вы ответили на мой вопрос, а также предоставили заинтересованные ссылки (в частности, ту, что касается смешивания и сопоставления ). К сожалению, это не тот ответ, который я хотел услышать. Я оставлю вопрос открытым еще несколько дней. Если никто не придумает лучшего ответа, я отмечу ваш как принятый.
gvgramazio
-1

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

Alexis
источник
В вопросе я заявил, что использую tanh и sigmoid, а не только ReLU. Кроме того, для простоты я имею в виду классические скрытые полностью связанные слои. Если вы считаете, что тот факт, что мы имеем дело с рекуррентной нейронной сетью, имеет большое значение для выбора функции активации, укажите причину этого. Явление взрыва / исчезновения может происходить и в неповторяющейся нейронной сети.
gvgramazio