Зачем использовать softmax вместо стандартной нормализации?

160

В выходном слое нейронной сети обычно используется функция softmax для аппроксимации распределения вероятностей:

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

Это дорого вычислять из-за показателей. Почему бы просто не выполнить Z-преобразование, чтобы все выходы были положительными, а затем нормализовать, просто разделив все выходы на сумму всех выходов?

Том
источник
8
Функция не дорогая для вычисления из-за показателей, а потому что вам нужно вычислять каждый qj. Возведение в степень дешево по сравнению с общим количеством необходимых вычислений.
Сеппо Энарви
О каком Z преобразовании вы говорите? Значение термина «обработка сигналов» здесь не подходит, и замена значений их z-счетом дает отрицательный результат, если ввод ниже среднего.
Дэвид Сиан
Смотрите также: Stats.SE
Мартин Тома

Ответы:

166

У Softmax есть один приятный атрибут по сравнению со стандартной нормализацией.

Он реагирует на слабую стимуляцию (кажется размытое изображение) вашей нейронной сети с довольно равномерным распределением и на высокую стимуляцию (то есть, большое количество, думаю четкое изображение) с вероятностями, близкими к 0 и 1.

Хотя стандартная нормализация не волнует, пока пропорции одинаковы.

Посмотрите, что происходит, когда soft max имеет в 10 раз больший входной сигнал, т.е. ваша нейронная сеть получила четкое изображение и активировалось много нейронов

>>> softmax([1,2])              # blurry image of a ferret
[0.26894142,      0.73105858])  #     it is a cat perhaps !?
>>> softmax([10,20])            # crisp image of a cat
[0.0000453978687, 0.999954602]) #     it is definitely a CAT !

А потом сравните это со стандартной нормализацией

>>> std_norm([1,2])                      # blurry image of a ferret
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?
>>> std_norm([10,20])                    # crisp image of a cat
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?
Петр Чапла
источник
16
Этот ответ лучше всего иллюстрирует влияние использования возведения в степень, а не фокусировки на теоретических основах. (что здорово). Это должно быть включено в начале верхнего ответа. Посмотрев, как и в какой степени возведение в степень распределяет значения, верхний ответ помогает объяснить, почему вы этого хотите.
Ян Данфорт
@IanDanforth я согласен с тобой. должно быть в начале.
Hitesh
11
Не уверен, почему этот ответ является наиболее проголосовавшим. Почему [1,2] соответствует размытому изображению, а [10,20] соответствует более четкому изображению? Это просто вопрос масштабирования, и оба случая по сути одинаковы. Во всяком случае, похоже, что это поддерживает стандартную нормализацию, которая правильно считает два случая эквивалентными.
user118967
Когда уже гарантировано, что значения находятся в [0, 1], есть ли какое-либо преимущество в том, что вы берете softmax вместо простого деления на сумму?
Мартин Тома
59

У меня был этот вопрос в течение нескольких месяцев. Кажется, что мы просто хитро угадали softmax как выходную функцию, а затем интерпретировали входные данные softmax как логарифмические вероятности. Как вы сказали, почему бы просто не нормализовать все выходы путем деления на их сумму? Я нашел ответ в книге Гудфеллоу, Бенджо и Курвилля (2016) « Глубокое обучение» в разделе 6.2.2.

Допустим, наш последний скрытый слой дает нам z в качестве активации. Тогда softmax определяется как

Очень краткое объяснение

Выражение в функции softmax примерно аннулирует логарифмические потери в кросс-энтропии, в результате чего потеря является приблизительно линейной по z_i. Это приводит к примерно постоянному градиенту, когда модель ошибочна, что позволяет ей быстро исправляться. Таким образом, неправильный насыщенный softmax не вызывает исчезающий градиент.

Краткое объяснение

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

Теперь мы сконцентрируемся только на softmax с уже заданным z, поэтому мы можем заменить

я являюсь правильным классом k-го образца. Теперь мы видим, что когда мы берем логарифм softmax, чтобы вычислить логарифмическую вероятность выборки, мы получаем:

, что для больших различий в Z примерно приближается к

Сначала мы видим здесь линейную составляющую z_i. Во-вторых, мы можем исследовать поведение max (z) для двух случаев:

  1. Если модель верна, то max (z) будет z_i. Таким образом, логарифмическая правдоподобие асимптотически равна нулю (то есть вероятность 1) с растущей разницей между z_i и другими записями в z.
  2. Если модель неверна, то max (z) будет другим z_j> z_i. Таким образом, добавление z_i не полностью отменяет -z_j, и логарифмическая вероятность примерно равна (z_i - z_j). Это ясно говорит модели, что нужно сделать, чтобы увеличить логарифмическую вероятность: увеличить z_i и уменьшить z_j.

Мы видим, что в общем логарифмическом правдоподобии будут доминировать выборки, где модель неверна. Кроме того, даже если модель действительно неверна, что приводит к насыщенному softmax, функция потерь не насыщается. Это приблизительно линейно по z_j, что означает, что у нас есть приблизительно постоянный градиент. Это позволяет модели быстро исправить себя. Обратите внимание, что это не относится к среднеквадратичной ошибке, например.

Длинное объяснение

Если softmax все еще кажется вам произвольным выбором, вы можете взглянуть на обоснование использования сигмоида в логистической регрессии:

Почему сигмовидная функция вместо всего остального?

Softmax - обобщение сигмоида для мультиклассовых задач, обоснованное аналогично.

Килиан Батцнер
источник
Привет, не могли бы вы объяснить это утверждение и как вы смогли приблизиться? «Что для больших различий в z примерно соответствует»
лондонский парень
45

Я нашел объяснение здесь очень хорошим: CS231n: Сверточные нейронные сети для визуального распознавания.

На первый взгляд алгоритм softmax представляется простой нелинейной (мы распространяем данные с экспоненциальной) нормализацией. Тем не менее, есть нечто большее.

В частности, есть несколько разных представлений ( та же ссылка, что и выше ):

  1. Теория информации - с точки зрения теории информации функцию softmax можно рассматривать как попытку минимизировать перекрестную энтропию между предсказаниями и истиной.

  2. Вероятностный взгляд - с этой точки зрения мы на самом деле смотрим на логарифмические вероятности, поэтому, когда мы выполняем возведение в степень, мы получаем необработанные вероятности. В этом случае уравнение softmax находит MLE (максимальная оценка правдоподобия)

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

Brett
источник
2
Чтобы добавить к предыдущим комментариям, производная функции softmax просто softmax (1-softmax)
Rouzbeh
11
Я понимаю причины использования Cross-Entropy Loss, но как это связано с softmax? Вы сказали, что «функцию softmax можно рассматривать как попытку минимизировать перекрестную энтропию между предсказаниями и правдой». Предположим, я бы использовал стандартную / линейную нормализацию, но все же использовал бы перекрестную энтропийную потерю. Тогда я бы также попытался минимизировать перекрестную энтропию. Так как же softmax связан с кросс-энтропией, кроме численных преимуществ?
Килиан Батцнер
18
Что касается вероятностного взгляда: какова мотивация для просмотра вероятностей журнала? Рассуждения, похоже, немного похожи на «Мы используем e ^ x в softmax, потому что мы интерпретируем x как логарифмические вероятности». С тем же рассуждением, которое мы могли бы сказать, мы используем e ^ e ^ e ^ x в softmax, потому что мы интерпретируем x как log-log-log-вероятности (преувеличивая здесь, конечно). Я получаю численные преимущества softmax, но какова теоретическая мотивация для его использования?
Килиан Батцнер
5
@KilianBatzner Если выход нейрона является логарифмической вероятностью, то суммирование выходов многих нейронов является умножением их вероятностей. Это чаще полезно, чем сумма вероятностей.
17
1
@KilianBatzner Если ваши функции поступают из разных гауссовых кластеров (по кластеру на класс), вы можете получить идеальный классификатор (логистическая регрессия). Существуют некоторые дополнительные условия, но, по сути, вы можете обосновать / получить softmax и logits, предполагая, что вы хотите разделить гауссовые кластеры.
maxy
16

Значения q_i представляют логарифмические правдоподобия. Для того, чтобы восстановить значения вероятности, вам необходимо возвести их в степень.

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

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

Как примечание, я думаю, что этот вопрос больше подходит для теории стеков CS или обмена стеками вычислительной науки.

Виктор Мэй
источник
12
q_i неявно представляет лог-правдоподобия. только когда мы используем softmax, мы явно предполагаем, что они используют.
Том
6

Мы смотрим на проблему мультиклассовой классификации. То есть прогнозируемая переменная yможет принимать одну из kкатегорий, где k > 2. В теории вероятностей это обычно моделируется многочленным распределением. Полиномиальное распределение является членом экспоненциальных семейств распределений. Мы можем восстановить вероятность, P(k=?|x)используя свойства экспоненциального семейного распределения, она совпадает с формулой softmax.

Если вы считаете, что проблема может быть смоделирована другим дистрибутивом, отличным от многочлена, то вы можете прийти к выводу, отличному от softmax.

Для получения дополнительной информации и формального вывода см. Примечания к лекции CS229 (9.3 Softmax Regression) .

Кроме того, полезный трюк, обычно выполняемый для softmax: softmax (x) = softmax (x + c) , softmax инвариантен к постоянным смещениям на входе.

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

GabrielChu
источник
Как это работает как функция активации, так как возвращает одинаковое значение для «x» и «x + c»?
Суреш Покхарел
1
Строго говоря, softmaxэто не функция активации. Функция активации является поэлементной операцией - она ​​дает тензору поэлементно выполняя нелинейную операцию, чтобы произвести другой тензор. Но softmaxэто векторная операция, она выдает нормализованный вектор, между каждым элементом есть внутренние зависимости.
ГабриэльЧу
5

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

Например, для a = [-2, -1, 1, 2]суммы будет 0, мы можем использовать softmax, чтобы избежать деления на ноль.

torayeff
источник
3
Обычно вы вычитаете минимум, а затем делите на максимум / сумму. В вашем случае это делало бы [0, 1, 3, 4]тогда деление.
убершмекель
1
@ubershmekel Это сталкивается с проблемой, что классу с наименьшим количеством баллов всегда будет присвоена вероятность 0.
Алессандро Пауэр
4

Предположим, мы изменили функцию softmax, чтобы активация выходов определялась как введите описание изображения здесь

где cположительная константа. Обратите внимание, что c=1соответствует стандартной функции softmax. Но если мы используем другое значение, cмы получаем другую функцию, которая, тем не менее, качественно довольно похожа на softmax. В частности, покажите, что выходные активации формируют распределение вероятностей, как и для обычного softmax. Предположим, мы позволяем cстать большим, т c→∞. Е. Каково предельное значение для выходных активаций a^L_j? После решения этой проблемы вам должно быть понятно, почему мы считаем эту c=1функцию «смягченной» версией функции максимума. Это происхождение термина «softmax». Вы можете следить за деталями из этого источника (уравнение 83).

О, мой бог
источник
Для меня идея «смягченной» версии функции максимума - лучший простой способ оправдать использование softmax.
ташухка
3

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

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

negas
источник
2

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

Из " Исследования альтернатив Softmax, принадлежащих семейству сферических потерь " https://arxiv.org/abs/1511.05042

Авторы исследовали некоторые другие функции, среди которых расширение Тейлора expи так называемый сферический софтмакс, и обнаружили, что иногда они могут работать лучше, чем обычно softmax.

Роман Х
источник