Какая функция активации для выходного слоя?

44

Хотя выбор функций активации для скрытого слоя достаточно ясен (в основном сигмовидный или танх), мне интересно, как выбрать функцию активации для выходного слоя. Распространенными являются линейные функции, сигмовидные функции и функции softmax. Однако когда я должен использовать какой?

юлианский
источник
3
Совсем недавно ReLU стал популярным в качестве функции активации для скрытых юнитов.
июня

Ответы:

39
  • Регрессия: линейная (поскольку значения не ограничены)
  • Классификация: softmax (простая сигмовидная мышца тоже работает, но softmax работает лучше)

Используйте простой сигмоид, только если ваш вывод допускает несколько «истинных» ответов, например, сеть, которая проверяет наличие различных объектов на изображении. Другими словами, выходные данные не являются распределением вероятностей (не нужно суммировать с 1).

rcpinto
источник
2
Softmax также важен, если у вас есть несколько групп для классификации
cdeterman
15
Я считаю неправильным говорить, что softmax работает «лучше», чем сигмовидная кишка, но вы можете использовать softmax в тех случаях, когда вы не можете использовать сигмовидную кишку. Для двоичной классификации логистическая функция (сигмоид) и softmax будут работать одинаково хорошо, но логистическая функция математически проще и, следовательно, естественный выбор. Однако, когда у вас есть более двух классов, вы не можете использовать скалярную функцию, такую ​​как логистическая функция, поскольку вам нужно более одного выхода, чтобы узнать вероятности для всех классов, следовательно, вы используете softmax.
Здравствуйте, до свидания
1
Я не думаю, что softmax - это активация. Вообще говоря, вы должны активировать его, прежде чем нормализовать (softmax).
Аарон
23

Я могу опоздать на вечеринку, но, похоже, здесь есть кое-что, что нужно прояснить.

Прежде всего: функция активации на выходном слое часто зависит от вашей функции стоимости . Это сделано для того, чтобы было легко вычислить производную функции стоимости относительно входов на последнем слое.g(x)CzCz

В качестве примера мы могли бы использовать среднеквадратическую потерю ошибок в настройке регрессии. Установив (функция линейной активации), мы находим для производной Вы получаете то же самое простое выражение для если Вы комбинируете потерю кросс-энтропии с функциями активации логистической сигмоиды или softmax.C(y,g(z))=12(yg(z))2g(x)=x

C(y,g(z))z=C(y,g(z))g(z)g(z)z=g(z)(12(yg(z))2)z(z)=(yg(z))1=g(z)y
Cz

Это причина, почему линейные активации часто используются для регрессии и логистических / softmax активаций для двоичной / мультиклассовой классификации. Однако ничто не мешает вам опробовать разные комбинации. Хотя выражение для , вероятно, не будет таким хорошим, это не означает, что ваша функция активации будет работать хуже.Cz

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

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


Приложение: Для большего количества пар функций потери и активаций вы, вероятно, захотите найти (канонические) функции связи

Мистер Цйолдер
источник
почему это не лучший ответ? чертовски интуитивно понятный и полностью научный
Викрам Мурти
13

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

Подробное объяснение здесь: http://cs231n.github.io/neural-networks-1/#actfun

Таким образом, лучшая функция для скрытых слоев - это ReLu.

Jatin
источник
11
Вопрос задаёт выходной слой. -1
Euler_Salter
1
Согласовано. Добавлен ответ, основанный на первой строке вопроса. Возможно, это должен был быть комментарий, а не ответ.
Джатин
Хорошо, но разве вы не получили бы "проблему мертвых нейронов ReLU?" Кроме того, проблема градиента vanishijg может быть «решена» путем нормализации партии. Если вы все еще хотите «деактивировать» некоторые нейроны, как это делают активации ReLU, то вы можете просто случайным образом отключить нейроны при выпадении. Так что я думаю, в конце концов, все зависит от проблемы, и просто используйте то, что работает лучше всего
Кеви Ким,
5

Выходные данные Softmax генерируют неотрицательный вектор, который суммируется с 1. Это полезно, когда у вас есть взаимоисключающие категории («эти изображения содержат только кошек или собак, а не обе»). Вы можете использовать softmax, если у вас есть взаимоисключающие ярлыки.2,3,4,5,...

Используя сигмоидные выходные данные создают вектор, где каждый элемент является вероятностью. Это полезно, когда у вас есть категории, которые не являются взаимоисключающими («эти изображения могут содержать кошек, собак или кошек и собак вместе»). Вы используете столько сигмовидных нейронов, сколько у вас есть категорий, и ваши ярлыки не должны быть взаимоисключающими.2,3,4,...

Симпатичный трюк в том, что вы также можете использовать один сигмовидный блок, если у вас есть взаимоисключающая двоичная проблема; Поскольку для оценки можно использовать одну сигмовидную единицу , из аксиом Колмогорова следует, что .p(y=1)1p(y=1)=p(y=0)

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

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

Аналогично, если выходные данные каким-то образом ограничены значением , tanh может иметь смысл.[1,1]

Приятной особенностью нейронных сетей является то, что они невероятно гибкие инструменты.

Восстановить Монику
источник