Зачем использовать softmax вместо стандартной нормализации? В области комментариев верхнего ответа на этот вопрос @Kilian Batzner поднял 2 вопроса, которые также очень меня смущают. Кажется, никто не дает объяснения, кроме численных преимуществ.
Я понимаю причины использования Cross-Entropy Loss, но как это связано с softmax? Вы сказали, что «функция softmax может рассматриваться как попытка минимизировать перекрестную энтропию между предсказаниями и правдой». Предположим, я бы использовал стандартную / линейную нормализацию, но все же использовал бы перекрестную энтропийную потерю. Тогда я бы также попытался свести к минимуму перекрестную энтропию. Так как же softmax связан с кросс-энтропией, кроме численных преимуществ?
Что касается вероятностного взгляда: какова мотивация для анализа вероятностей журнала? Рассуждения, похоже, немного похожи на «Мы используем e ^ x в softmax, потому что мы интерпретируем x как логарифмические вероятности». С тем же рассуждением, которое мы могли бы сказать, мы используем e ^ e ^ e ^ x в softmax, потому что мы интерпретируем x как log-log-log-вероятности (преувеличивая здесь, конечно). Я получаю численные преимущества softmax, но какова теоретическая мотивация для его использования?
Ответы:
Это больше, чем просто число. Краткое напоминание о softmax:
Там , где представляет собой входной вектор с длиной , равной числу классов . Функция softmax имеет 3 очень приятных свойства: 1. она нормализует ваши данные (выводит правильное распределение вероятностей), 2. дифференцируема и 3. использует упомянутый вами опыт. Несколько важных моментов:x K
Функция потерь не имеет прямого отношения к softmax. Вы можете использовать стандартную нормализацию и по-прежнему использовать кросс-энтропию.
Функция «hardmax» (т.е. argmax) не дифференцируема. Softmax дает, по крайней мере, минимальную вероятность для всех элементов в выходном векторе, и поэтому является хорошо дифференцируемой, отсюда и термин «soft» в softmax.
Теперь я перехожу к вашему вопросу. в SoftMax является естественной экспоненциальной функцией. Прежде чем мы нормализуем, мы преобразуем как в графике :e x ex
Если равен 0, то , если равен 1, то , а если равен 2, то теперь ! Огромный шаг! Это то, что называется нелинейным преобразованием наших ненормализованных баллов. Интересное свойство экспоненциальной функции в сочетании с нормализацией в softmax заключается в том, что высокие оценки по становятся гораздо более вероятными, чем низкие оценки.x y=1 x y=2.7 x y=7 x
Пример . Скажем, , и ваш логарифм будет вектором . Простая функция argmax выводит:K=4 x [2,4,2,1]
Цель argmax, но она не дифференцируема, и мы не можем обучить нашу модель ей :( Простая нормализация, которая дифференцируема, выдает следующие вероятности:
Это действительно далеко от argmax! :( Принимая во внимание, что softmax выводит:
Это намного ближе к argmax! Поскольку мы используем естественную экспоненту, мы значительно увеличиваем вероятность наибольшего значения и уменьшаем вероятность более низкого значения по сравнению со стандартной нормализацией. Отсюда «max» в softmax.
источник
e
, как насчет использования константы, скажем, 3 или 4? Будет ли результат таким же?e
есть производное приятнее;)e
то, что делает его интерпретируемым как вероятность, это тот факт, что каждый элемент вывода softmax ограничен в [0,1] и целые суммы равны 1.В дополнение к объяснению Веги,
давайте определим общий softmax: где - постоянная> = 1P(y=j|x)=ψxj∑Kk=1ψxk ψ
если , то вы довольно далеки от argmax, как упомянул @vega.ψ=1
Давайте теперь предположим, что , теперь вы довольно близки к argmax, но у вас также есть очень маленькие числа для отрицательных значений и большие числа для положительных. Эти цифры Переполнение в точке с плавающей точкой арифметической предела легко (например максимальный предел Numpy float64 составляет ). В дополнение к этому, даже если выбор который намного меньше , фреймворки должны реализовывать более стабильную версию softmax (умножая как числитель, так и знаменатель на постоянную ), поскольку результаты становятся слишком маленькими, чтобы иметь возможность выражать с такой точностью.ψ=100 10308 ψ=e 100 C
Итак, вы хотите выбрать постоянную, достаточно большую, чтобы хорошо аппроксимировать argmax, а также достаточно маленькую, чтобы выразить эти большие и маленькие числа в вычислениях.
И, конечно, у также есть довольно хорошая производная.e
источник
Этот вопрос очень интересный. Я не знаю точную причину, но я думаю, что следующая причина может быть использована для объяснения использования экспоненциальной функции. Этот пост вдохновлен статистической механикой и принципом максимальной энтропии.
Я объясню это, используя пример с изображениями, которые состоят из изображений из класса , изображений из класса , ... и изображений из класса . Затем мы предполагаем, что наша нейронная сеть смогла применить нелинейное преобразование к нашим изображениям, так что мы можем назначить «энергетический уровень» для всех классов. Мы предполагаем, что эта энергия имеет нелинейный масштаб, который позволяет линейно разделять изображения.N n1 C1 n2 C2 nK CK Ek
Средняя энергия связана с другими энергиями следующим соотношениемE¯ Ek NE¯=∑k=1KnkEk.(∗)
В то же время мы видим, что общее количество изображений можно рассчитать как следующую сумму
Основная идея принципа максимальной энтропии состоит в том, что количество изображений в соответствующих классах распределяется таким образом, что число возможных комбинаций для данного распределения энергии максимизируется. Проще говоря, система не очень вероятно перейдет в состояние, в котором у нас есть только класс она также не перейдет в состояние, в котором у нас одинаковое количество изображений в каждом классе. Но почему это так? Если бы все изображения были в одном классе, система имела бы очень низкую энтропию. Второй случай также будет очень неестественной. Более вероятно, что у нас будет больше изображений с умеренной энергией и меньше изображений с очень высокой и очень низкой энергией.n1
Энтропия увеличивается с числом комбинаций, в которых мы можем разделить изображений на классы изображений , , ..., с соответствующей энергией. Это число комбинаций задается коэффициентом полиномаN n1 n2 nK
Мы постараемся максимизировать это число, предполагая, что у нас бесконечно много изображений . Но его максимизация имеет также ограничения равенства и . Этот тип оптимизации называется ограниченной оптимизацией. Мы можем решить эту проблему аналитически, используя метод множителей Лагранжа. Мы вводим множители Лагранжа и для ограничений на равенство и вводим функцию Лагранжа .N→∞ (∗) (∗∗) β α L(n1,n2,…,nk;α,β)
Поскольку мы предполагали, что мы также можем принять и использовать приближение Стирлинга для факториала.N→∞ nk→∞
Обратите внимание, что это приближение (первые два слагаемых) является только асимптотическим, это не означает, что это приближение будет сходиться кдля .lnn! n→∞
Частная производная функции Лагранжа по приведет кnk~
Если мы установим эту частную производную на ноль, мы можем найти
Если мы поместим это обратно в мы можем получить(∗∗)
Если мы поместим это обратно в мы получим что-то, что должно напомнить нам о функции softmax(∗∗∗)
Если мы определим как вероятность класса помощью мы получим нечто, действительно похожее на функцию softmaxnk~/N Ck~ pk~
Следовательно, это показывает нам, что функция softmax является функцией, максимизирующей энтропию при распределении изображений. С этого момента имеет смысл использовать это как распределение изображений. Если мы установим мы точно получим определение функции softmax для вывода .βEk~=wTkx kth
источник