В классификаторе softmax зачем использовать функцию exp для нормализации?

30

Зачем использовать softmax вместо стандартной нормализации? В области комментариев верхнего ответа на этот вопрос @Kilian Batzner поднял 2 вопроса, которые также очень меня смущают. Кажется, никто не дает объяснения, кроме численных преимуществ.

Я понимаю причины использования Cross-Entropy Loss, но как это связано с softmax? Вы сказали, что «функция softmax может рассматриваться как попытка минимизировать перекрестную энтропию между предсказаниями и правдой». Предположим, я бы использовал стандартную / линейную нормализацию, но все же использовал бы перекрестную энтропийную потерю. Тогда я бы также попытался свести к минимуму перекрестную энтропию. Так как же softmax связан с кросс-энтропией, кроме численных преимуществ?

Что касается вероятностного взгляда: какова мотивация для анализа вероятностей журнала? Рассуждения, похоже, немного похожи на «Мы используем e ^ x в softmax, потому что мы интерпретируем x как логарифмические вероятности». С тем же рассуждением, которое мы могли бы сказать, мы используем e ^ e ^ e ^ x в softmax, потому что мы интерпретируем x как log-log-log-вероятности (преувеличивая здесь, конечно). Я получаю численные преимущества softmax, но какова теоретическая мотивация для его использования?

Hans
источник
Он дифференцируем, приводит к неотрицательным результатам (таким, которые могут быть необходимы для вероятности, чтобы можно было рассчитать кросс-энтропию), и ведет себя как функция max, которая подходит в условиях классификации. Добро пожаловать на сайт!
Эмре
@ Emre Спасибо! Но что значит «ведет себя как функция max»? Кроме того, если у меня есть другая функция, которая также является дифференцируемой, монотонно возрастающей и приводит к неотрицательным результатам, могу ли я использовать ее для замены функции exp в формуле?
Ханс
Когда вы нормализуете с помощью , наибольший аргумент сопоставляется с 1, а остальные - с нулевым, вследствие роста экспоненциальной функции. max
Эмре

Ответы:

37

Это больше, чем просто число. Краткое напоминание о softmax:

P(y=j|x)=exjk=1Kexk

Там , где представляет собой входной вектор с длиной , равной числу классов . Функция softmax имеет 3 очень приятных свойства: 1. она нормализует ваши данные (выводит правильное распределение вероятностей), 2. дифференцируема и 3. использует упомянутый вами опыт. Несколько важных моментов:xK

  1. Функция потерь не имеет прямого отношения к softmax. Вы можете использовать стандартную нормализацию и по-прежнему использовать кросс-энтропию.

  2. Функция «hardmax» (т.е. argmax) не дифференцируема. Softmax дает, по крайней мере, минимальную вероятность для всех элементов в выходном векторе, и поэтому является хорошо дифференцируемой, отсюда и термин «soft» в softmax.

  3. Теперь я перехожу к вашему вопросу. в SoftMax является естественной экспоненциальной функцией. Прежде чем мы нормализуем, мы преобразуем как в графике :exex

естественная экспоненциальная функция

Если равен 0, то , если равен 1, то , а если равен 2, то теперь ! Огромный шаг! Это то, что называется нелинейным преобразованием наших ненормализованных баллов. Интересное свойство экспоненциальной функции в сочетании с нормализацией в softmax заключается в том, что высокие оценки по становятся гораздо более вероятными, чем низкие оценки.xy=1xy=2.7xy=7x

Пример . Скажем, , и ваш логарифм будет вектором . Простая функция argmax выводит:K=4x[2,4,2,1]

[0,1,0,0]

Цель argmax, но она не дифференцируема, и мы не можем обучить нашу модель ей :( Простая нормализация, которая дифференцируема, выдает следующие вероятности:

[0.2222,0.4444,0.2222,0.1111]

Это действительно далеко от argmax! :( Принимая во внимание, что softmax выводит:

[0.1025,0.7573,0.1025,0.0377]

Это намного ближе к argmax! Поскольку мы используем естественную экспоненту, мы значительно увеличиваем вероятность наибольшего значения и уменьшаем вероятность более низкого значения по сравнению со стандартной нормализацией. Отсюда «max» в softmax.

Вега
источник
3
Отличная информация Однако вместо использования e, как насчет использования константы, скажем, 3 или 4? Будет ли результат таким же?
Чок Ян Ченг
7
@ CheokYanCheng, да. Но eесть производное приятнее;)
вега
Я видел, что результат softmax обычно используется как вероятность принадлежности к каждому классу. Если выбор «е» вместо другой константы является произвольным, не имеет смысла рассматривать его с точки зрения вероятности, верно?
Javierdvalle
@vega Извините, но я до сих пор не понимаю, как это отвечает на вопрос: почему бы не использовать e ^ e ^ e ^ e ^ e ^ x по тем же причинам? Пожалуйста, объясните
Гульзар
@jvalle это не eто, что делает его интерпретируемым как вероятность, это тот факт, что каждый элемент вывода softmax ограничен в [0,1] и целые суммы равны 1.
vega
2

В дополнение к объяснению Веги,

давайте определим общий softmax: где - постоянная> = 1

P(y=j|x)=ψxjk=1Kψxk
ψ

если , то вы довольно далеки от argmax, как упомянул @vega.ψ=1

Давайте теперь предположим, что , теперь вы довольно близки к argmax, но у вас также есть очень маленькие числа для отрицательных значений и большие числа для положительных. Эти цифры Переполнение в точке с плавающей точкой арифметической предела легко (например максимальный предел Numpy float64 составляет ). В дополнение к этому, даже если выбор который намного меньше , фреймворки должны реализовывать более стабильную версию softmax (умножая как числитель, так и знаменатель на постоянную ), поскольку результаты становятся слишком маленькими, чтобы иметь возможность выражать с такой точностью.ψ=10010308ψ=e100C

Итак, вы хотите выбрать постоянную, достаточно большую, чтобы хорошо аппроксимировать argmax, а также достаточно маленькую, чтобы выразить эти большие и маленькие числа в вычислениях.

И, конечно, у также есть довольно хорошая производная.e

komunistbakkal
источник
2

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

Я объясню это, используя пример с изображениями, которые состоят из изображений из класса , изображений из класса , ... и изображений из класса . Затем мы предполагаем, что наша нейронная сеть смогла применить нелинейное преобразование к нашим изображениям, так что мы можем назначить «энергетический уровень» для всех классов. Мы предполагаем, что эта энергия имеет нелинейный масштаб, который позволяет линейно разделять изображения.Nn1C1n2C2nKCKEk

Средняя энергия связана с другими энергиями следующим соотношением E¯Ek

NE¯=k=1KnkEk.()

В то же время мы видим, что общее количество изображений можно рассчитать как следующую сумму

N=k=1Knk.()

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

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

(N!n1!,n2!,,nK!)=N!k=1Knk!.

Мы постараемся максимизировать это число, предполагая, что у нас бесконечно много изображений . Но его максимизация имеет также ограничения равенства и . Этот тип оптимизации называется ограниченной оптимизацией. Мы можем решить эту проблему аналитически, используя метод множителей Лагранжа. Мы вводим множители Лагранжа и для ограничений на равенство и вводим функцию Лагранжа .N()()βαL(n1,n2,,nk;α,β)

L(n1,n2,,nk;α,β)=N!k=1Knk!+β[k=1KnkEkNE¯]+α[Nk=1Knk]

Поскольку мы предполагали, что мы также можем принять и использовать приближение Стирлинга для факториала.Nnk

lnn!=nlnnn+O(lnn).

Обратите внимание, что это приближение (первые два слагаемых) является только асимптотическим, это не означает, что это приближение будет сходиться кдля .lnn!n

Частная производная функции Лагранжа по приведет кnk~

Lnk~=lnnk~1α+βEk~.

Если мы установим эту частную производную на ноль, мы можем найти

nk~=exp(βEk~)exp(1+α).()

Если мы поместим это обратно в мы можем получить()

exp(1+α)=1Nk=1Kexp(βEk).

Если мы поместим это обратно в мы получим что-то, что должно напомнить нам о функции softmax()

nk~=exp(βEk~)1Nk=1Kexp(βEk).

Если мы определим как вероятность класса помощью мы получим нечто, действительно похожее на функцию softmaxnk~/NCk~pk~

pk~=exp(βEk~)k=1Kexp(βEk).

Следовательно, это показывает нам, что функция softmax является функцией, максимизирующей энтропию при распределении изображений. С этого момента имеет смысл использовать это как распределение изображений. Если мы установим мы точно получим определение функции softmax для вывода .βEk~=wkTxkth

MachineLearner
источник