Хотя выбор функций активации для скрытого слоя достаточно ясен (в основном сигмовидный или танх), мне интересно, как выбрать функцию активации для выходного слоя. Распространенными являются линейные функции, сигмовидные функции и функции softmax. Однако когда я должен использовать какой?
neural-networks
юлианский
источник
источник
Ответы:
Используйте простой сигмоид, только если ваш вывод допускает несколько «истинных» ответов, например, сеть, которая проверяет наличие различных объектов на изображении. Другими словами, выходные данные не являются распределением вероятностей (не нужно суммировать с 1).
источник
Я могу опоздать на вечеринку, но, похоже, здесь есть кое-что, что нужно прояснить.
Прежде всего: функция активации на выходном слое часто зависит от вашей функции стоимости . Это сделано для того, чтобы было легко вычислить производную функции стоимости относительно входов на последнем слое.g(x) ∂C∂z C z
В качестве примера мы могли бы использовать среднеквадратическую потерю ошибок в настройке регрессии. Установив (функция линейной активации), мы находим для производной Вы получаете то же самое простое выражение для если Вы комбинируете потерю кросс-энтропии с функциями активации логистической сигмоиды или softmax.C(y,g(z))=12(y−g(z))2 g(x)=x ∂C(y,g(z))∂z=∂C(y,g(z))∂g(z)⋅∂g(z)∂z=∂∂g(z)(12(y−g(z))2)⋅∂∂z(z)=−(y−g(z))⋅1=g(z)−y ∂C∂z
Это причина, почему линейные активации часто используются для регрессии и логистических / softmax активаций для двоичной / мультиклассовой классификации. Однако ничто не мешает вам опробовать разные комбинации. Хотя выражение для , вероятно, не будет таким хорошим, это не означает, что ваша функция активации будет работать хуже.∂C∂z
Во-вторых, я хотел бы добавить, что существует множество функций активации, которые можно использовать для скрытых слоев. Сигмоиды (такие как логистическая функция и гиперболический тангенс) действительно хорошо работают, но, как указал Джатин , они страдают от исчезающих градиентов, когда ваши сети становятся слишком глубокими. В этом случае ReLU стали популярными. Однако я хотел бы подчеркнуть, что существует гораздо больше доступных функций активации, и разные исследователи продолжают искать новые (например, экспоненциальные линейные единицы (ELU), линейные единицы гауссовой ошибки (GELU), ...) с различными / лучшие свойства
В заключение: при поиске лучших функций активации просто проявите творческий подход. Попробуйте разные вещи и посмотрите, какие комбинации приводят к лучшей производительности.
Приложение: Для большего количества пар функций потери и активаций вы, вероятно, захотите найти (канонические) функции связи
источник
Сигмоид и танх не должны использоваться в качестве функции активации для скрытого слоя. Это из-за исчезающей проблемы градиента, то есть, если ваш вход находится на более высокой стороне (где сигмовидная плоскость уходит), тогда градиент будет близок к нулю. Это приведет к очень медленному или нулевому обучению во время обратного распространения, поскольку веса будут обновляться с очень маленькими значениями.
Подробное объяснение здесь: http://cs231n.github.io/neural-networks-1/#actfun
Таким образом, лучшая функция для скрытых слоев - это ReLu.
источник
Выходные данные Softmax генерируют неотрицательный вектор, который суммируется с 1. Это полезно, когда у вас есть взаимоисключающие категории («эти изображения содержат только кошек или собак, а не обе»). Вы можете использовать softmax, если у вас есть взаимоисключающие ярлыки.2,3,4,5,...
Используя сигмоидные выходные данные создают вектор, где каждый элемент является вероятностью. Это полезно, когда у вас есть категории, которые не являются взаимоисключающими («эти изображения могут содержать кошек, собак или кошек и собак вместе»). Вы используете столько сигмовидных нейронов, сколько у вас есть категорий, и ваши ярлыки не должны быть взаимоисключающими.2,3,4,...
Симпатичный трюк в том, что вы также можете использовать один сигмовидный блок, если у вас есть взаимоисключающая двоичная проблема; Поскольку для оценки можно использовать одну сигмовидную единицу , из аксиом Колмогорова следует, что .p(y=1) 1−p(y=1)=p(y=0)
Использование функции идентификации в качестве вывода может быть полезно, когда ваши выводы не ограничены. Прибыль или убыток какой-либо компании за квартал может быть неограниченным с обеих сторон.
Блоки ReLU или аналогичные варианты могут быть полезны, когда выход ограничен выше или ниже. Если вывод ограничен только неотрицательным, то имеет смысл использовать активацию ReLU в качестве функции вывода.
Аналогично, если выходные данные каким-то образом ограничены значением , tanh может иметь смысл.[−1,1]
Приятной особенностью нейронных сетей является то, что они невероятно гибкие инструменты.
источник