В выходном слое нейронной сети обычно используется функция softmax для аппроксимации распределения вероятностей:
Это дорого вычислять из-за показателей. Почему бы просто не выполнить Z-преобразование, чтобы все выходы были положительными, а затем нормализовать, просто разделив все выходы на сумму всех выходов?
Ответы:
У Softmax есть один приятный атрибут по сравнению со стандартной нормализацией.
Он реагирует на слабую стимуляцию (кажется размытое изображение) вашей нейронной сети с довольно равномерным распределением и на высокую стимуляцию (то есть, большое количество, думаю четкое изображение) с вероятностями, близкими к 0 и 1.
Хотя стандартная нормализация не волнует, пока пропорции одинаковы.
Посмотрите, что происходит, когда soft max имеет в 10 раз больший входной сигнал, т.е. ваша нейронная сеть получила четкое изображение и активировалось много нейронов
А потом сравните это со стандартной нормализацией
источник
У меня был этот вопрос в течение нескольких месяцев. Кажется, что мы просто хитро угадали softmax как выходную функцию, а затем интерпретировали входные данные softmax как логарифмические вероятности. Как вы сказали, почему бы просто не нормализовать все выходы путем деления на их сумму? Я нашел ответ в книге Гудфеллоу, Бенджо и Курвилля (2016) « Глубокое обучение» в разделе 6.2.2.
Допустим, наш последний скрытый слой дает нам z в качестве активации. Тогда softmax определяется как
Очень краткое объяснение
Выражение в функции softmax примерно аннулирует логарифмические потери в кросс-энтропии, в результате чего потеря является приблизительно линейной по z_i. Это приводит к примерно постоянному градиенту, когда модель ошибочна, что позволяет ей быстро исправляться. Таким образом, неправильный насыщенный softmax не вызывает исчезающий градиент.
Краткое объяснение
Самый популярный метод обучения нейронной сети - оценка максимального правдоподобия. Мы оцениваем параметры тета таким образом, чтобы максимизировать вероятность тренировочных данных (размером m). Поскольку вероятность всего обучающего набора данных является произведением вероятностей каждой выборки, проще максимизировать логарифмическую вероятность набора данных и, таким образом, сумму логарифмической вероятности каждой выборки, индексированной k:
Теперь мы сконцентрируемся только на softmax с уже заданным z, поэтому мы можем заменить
я являюсь правильным классом k-го образца. Теперь мы видим, что когда мы берем логарифм softmax, чтобы вычислить логарифмическую вероятность выборки, мы получаем:
, что для больших различий в Z примерно приближается к
Сначала мы видим здесь линейную составляющую z_i. Во-вторых, мы можем исследовать поведение max (z) для двух случаев:
Мы видим, что в общем логарифмическом правдоподобии будут доминировать выборки, где модель неверна. Кроме того, даже если модель действительно неверна, что приводит к насыщенному softmax, функция потерь не насыщается. Это приблизительно линейно по z_j, что означает, что у нас есть приблизительно постоянный градиент. Это позволяет модели быстро исправить себя. Обратите внимание, что это не относится к среднеквадратичной ошибке, например.
Длинное объяснение
Если softmax все еще кажется вам произвольным выбором, вы можете взглянуть на обоснование использования сигмоида в логистической регрессии:
Почему сигмовидная функция вместо всего остального?
Softmax - обобщение сигмоида для мультиклассовых задач, обоснованное аналогично.
источник
Я нашел объяснение здесь очень хорошим: CS231n: Сверточные нейронные сети для визуального распознавания.
На первый взгляд алгоритм softmax представляется простой нелинейной (мы распространяем данные с экспоненциальной) нормализацией. Тем не менее, есть нечто большее.
В частности, есть несколько разных представлений ( та же ссылка, что и выше ):
Теория информации - с точки зрения теории информации функцию softmax можно рассматривать как попытку минимизировать перекрестную энтропию между предсказаниями и истиной.
Вероятностный взгляд - с этой точки зрения мы на самом деле смотрим на логарифмические вероятности, поэтому, когда мы выполняем возведение в степень, мы получаем необработанные вероятности. В этом случае уравнение softmax находит MLE (максимальная оценка правдоподобия)
Подводя итог, можно сказать, что хотя уравнение softmax кажется произвольным, оно НЕ является. На самом деле это довольно принципиальный способ нормализации классификаций для минимизации перекрестной энтропии / отрицательной вероятности между предсказаниями и правдой.
источник
Значения q_i представляют логарифмические правдоподобия. Для того, чтобы восстановить значения вероятности, вам необходимо возвести их в степень.
Одна из причин того, что статистические алгоритмы часто используют функции потери логарифмического правдоподобия, состоит в том, что они более численно устойчивы: произведение вероятностей может быть представлено очень малым числом с плавающей запятой. Используя функцию потери правдоподобия, произведение вероятностей становится суммой.
Другая причина заключается в том, что логарифмические правдоподобия возникают естественным образом при получении оценок для случайных величин, которые предположительно взяты из многомерных гауссовых распределений. См., Например, оценку максимального правдоподобия (ML) и то, как она связана с методом наименьших квадратов.
Как примечание, я думаю, что этот вопрос больше подходит для теории стеков CS или обмена стеками вычислительной науки.
источник
Мы смотрим на проблему мультиклассовой классификации. То есть прогнозируемая переменная
y
может принимать одну изk
категорий, гдеk > 2
. В теории вероятностей это обычно моделируется многочленным распределением. Полиномиальное распределение является членом экспоненциальных семейств распределений. Мы можем восстановить вероятность,P(k=?|x)
используя свойства экспоненциального семейного распределения, она совпадает с формулой softmax.Если вы считаете, что проблема может быть смоделирована другим дистрибутивом, отличным от многочлена, то вы можете прийти к выводу, отличному от softmax.
Для получения дополнительной информации и формального вывода см. Примечания к лекции CS229 (9.3 Softmax Regression) .
Кроме того, полезный трюк, обычно выполняемый для softmax: softmax (x) = softmax (x + c) , softmax инвариантен к постоянным смещениям на входе.
источник
softmax
это не функция активации. Функция активации является поэлементной операцией - она дает тензору поэлементно выполняя нелинейную операцию, чтобы произвести другой тензор. Ноsoftmax
это векторная операция, она выдает нормализованный вектор, между каждым элементом есть внутренние зависимости.Я думаю, что одной из причин может быть обработка отрицательных чисел и деление на ноль, поскольку exp (x) всегда будет положительным и больше нуля.
Например, для
a = [-2, -1, 1, 2]
суммы будет 0, мы можем использовать softmax, чтобы избежать деления на ноль.источник
[0, 1, 3, 4]
тогда деление.Предположим, мы изменили функцию softmax, чтобы активация выходов определялась как
где
c
положительная константа. Обратите внимание, чтоc=1
соответствует стандартной функции softmax. Но если мы используем другое значение,c
мы получаем другую функцию, которая, тем не менее, качественно довольно похожа на softmax. В частности, покажите, что выходные активации формируют распределение вероятностей, как и для обычного softmax. Предположим, мы позволяемc
стать большим, тc→∞
. Е. Каково предельное значение для выходных активацийa^L_j
? После решения этой проблемы вам должно быть понятно, почему мы считаем этуc=1
функцию «смягченной» версией функции максимума. Это происхождение термина «softmax». Вы можете следить за деталями из этого источника (уравнение 83).источник
При добавлении к ответу Петра Чапла, чем больше входные значения, тем больше вероятность максимального ввода при той же пропорции и по сравнению с другими входами:
источник
Из " Исследования альтернатив Softmax, принадлежащих семейству сферических потерь " https://arxiv.org/abs/1511.05042
Авторы исследовали некоторые другие функции, среди которых расширение Тейлора
exp
и так называемый сферический софтмакс, и обнаружили, что иногда они могут работать лучше, чем обычноsoftmax
.источник