Функция softmax, также известная как softargmax или нормализованная экспоненциальная функция - это обобщение логистической функции на несколько измерений. Он используется в полиномиальной логистической регрессии и часто используется в качестве последней функции активации нейронной сети для нормализации выходных данных сети до распределение вероятностей по прогнозируемым выходным классам.
Функция softmax принимает в качестве входных данных вектор z из K действительных чисел и нормализует его до распределения вероятностей, состоящего из K вероятностей, пропорциональных экспонентам входных чисел. То есть до применения softmax некоторые компоненты вектора могут быть отрицательными или больше единицы; и не может суммировать до 1; но после применения softmax каждый компонент будет в интервале , и компоненты будут складываться до 1, так что их можно интерпретировать как вероятности. Кроме того, более крупные входные компоненты будут соответствовать большим вероятностям.
Стандартная (единичная) функция softmax определяется формулой
На словах: мы применяем стандартную экспоненциальную функцию к каждому элементу входного вектора и нормализовать эти значения, разделив их на сумму всех этих экспонент; эта нормализация гарантирует, что сумма компонентов выходного вектора равна 1.
Вместо e, может использоваться другое основание b>0; выбор большего значения b создаст распределение вероятностей, которое более сконцентрировано вокруг позиций наибольших входных значений. Запись или (для действительного β) дает выражения:
В одних полях база фиксирована, что соответствует фиксированному масштабу, в других - варьируется параметр β.
Имя "softmax" вводит в заблуждение; функция не является сглаженным максимумом (сглаженным приближением к функции maximum ), а скорее плавным приближением к arg max функция: функция, значение которой соответствует максимальному индексу. Фактически, термин softmax также используется для тесно связанной функции LogSumExp, которая является сглаженным максимумом. По этой причине некоторые предпочитают более точный термин «softargmax», но термин «softmax» является обычным в машинном обучении. В этом разделе термин «softargmax» используется, чтобы подчеркнуть эту интерпретацию.
Формально, вместо того чтобы рассматривать arg max как функцию с категориальным выводом (соответствует индексу) рассмотрим функцию arg max с одним горячим представлением вывода (при условии, что существует уникальный max arg):
где выходная координата тогда и только тогда, когда является максимальным аргументом , что означает, что - уникальное максимальное значение . Например, в этой кодировке , поскольку третий аргумент является максимальным.
Это можно обобщить на несколько максимальных значений аргументов (множественные равные являются максимальными) путем деления 1 между всеми максимальными аргументами; формально 1 / k, где k - максимальное количество аргументов. Например, , поскольку второй и третий аргументы являются максимальными. Если все аргументы равны, это просто Points z с несколькими Значения arg max - это особые точки (или сингулярности, образующие особый набор) - это точки, в которых arg max является разрывным (с разрывом скачка ) - в то время как точки с одиночным arg max известны как неособые или регулярные точки.
В последнем выражении, приведенном во введении, softargmax теперь является гладкой аппроксимацией arg max: as , softargmax сходится к arg max. Существуют различные понятия сходимости функции; softargmax сходится к arg max поточечно, что означает для каждого фиксированного ввода z как , Однако softargmax не сходятся равномерно к arg max, что интуитивно означает, что разные точки сходятся с разной скоростью и могут сходиться сколь угодно медленно. Фактически softargmax непрерывен, но arg max не является непрерывным в особом множестве, где две координаты равны, в то время как равномерный предел непрерывных функций непрерывен. Неудачная сходимость связана с тем, что для входов, где две координаты почти равны (и одна является максимальной), arg max является индексом одной или другой, поэтому небольшое изменение входных данных приводит к большим изменениям в выходных. Например, но и для всех входов: чем ближе точки к сингулярный набор , тем медленнее они сходятся. Однако softargmax компактно сходится на неособом множестве.
И наоборот, поскольку , softargmax сходится к arg min таким же образом, где здесь сингулярное множество точки с двумя значениями arg min. На языке тропического анализа softmax - это деформация или «квантование» arg max и arg min, соответствующее использованию логарифмического полукольца вместо полукольцо макс-плюс (соответственно полукольцо мин-плюс ), и восстановление arg max или arg min путем взятия предела называется «тропикализацией» или «деквантованием».
Также бывает, что для любого фиксированного β, если один вход намного больше других относительно температуры, , выходные данные примерно равны максимальному аргументу. Например, разница в 10 велика по сравнению с температурой 1:
Однако, если разница мала по сравнению с температурой, значение не близко к arg max. Например, разница в 10 мала по сравнению с температурой 100:
При температура падает до нуля, , поэтому в конечном итоге все различия становятся большими (относительно температуры сжатия), что дает другую интерпретацию поведения предела.
В теории вероятностей выходные данные функции softargmax могут использоваться для представления категориального распределения, то есть распределение вероятностей по K различным возможным исходам.
В статистической механике функция softargmax известна как распределение Больцмана (или распределение Гиббса ) : набор индексов - это микросостояния системы; входы - энергии этого состояния; знаменатель известен как статистическая сумма , часто обозначаемая Z; а коэффициент β называется холодностью (или термодинамическим бета, или обратной температурой ).
Функция softmax используется в различных методах многоклассовой классификации, таких как полиномиальная логистическая регрессия (также известная как регрессия softmax) [1], мультиклассовый линейный дискриминантный анализ, наивные байесовские классификаторы и искусственные нейронные сети. В частности, в полиномиальной логистической регрессии и линейном дискриминантном анализе входные данные функции являются результатом K различных линейных функций и прогнозируемой вероятности для j-го класса с учетом выборочного вектора x, а вектор взвешивания w равен:
Это можно рассматривать как композицию K линейных функций и функция softmax (где обозначает внутренний продукт и ). Операция эквивалентна применению линейного оператора, определенного как , к векторам , таким образом преобразуя исходный, вероятно, многомерный, ввод в векторы в K-мерном пространстве .
Функция softmax часто используется на последнем уровне классификатора на основе нейронной сети. Такие сети обычно обучаются в режиме логарифма потерь (или кросс-энтропии ), что дает нелинейный вариант полиномиальной логистической регрессии.
Поскольку функция сопоставляет вектор и определенный индекс с действительным значением, производная должна учитывать индекс:
Это выражение симметрично по индексам и таким образом, можно также выразить как
Здесь дельта Кронекера используется для простоты (ср. производную сигмоидной функции, выражаемый через саму функцию).
Если функция масштабируется с помощью параметра , то эти выражения необходимо умножить на .
См. Полиномиальный логит для модели вероятности, в которой используется функция активации softmax.
В области обучения с подкреплением функция softmax может использоваться для преобразования значений в вероятности действия. Обычно используется следующая функция:
где значение действия соответствует ожидаемой награде за следующие действия a и называется температурным параметром (в отсылке к статистической механике ). Для высоких температур () все действия имеют примерно одинаковую вероятность, и чем ниже температура, тем больше ожидаемых наград влияет на вероятность. Для низкой температуры () вероятность действия с наибольшим ожидаемым вознаграждением стремится к 1.
Геометрически функция softmax отображает векторное пространство в интерьер стандарта стандарт -simplex, уменьшив размер на единицу (диапазон a -мерный симплекс в -мерном пространстве) из-за линейное ограничение, что сумма всех выходных данных равна 1, что означает, что он лежит на гиперплоскости.
вдоль главной диагонали softmax - это просто равномерное распределение на выходах, : равные баллы дают равные вероятности.
В более общем смысле softmax инвариантен относительно перевода на одно и то же значение в каждой координате: добавление на входы дает , потому что он умножает каждый показатель степени на тот же коэффициент, (потому что ), поэтому отношения не меняются:
Геометрически softmax постоянен по диагоналям: это размер, который удаляется, и соответствует тому, что выход softmax не зависит от перевода во входных оценках (выбор 0 баллов). Можно нормализовать входные оценки, предположив, что сумма равна нулю (вычтите среднее значение: , где ), а затем softmax берет гиперплоскость точек, сумма которых равна нулю, в открытый симплекс положительных значений, сумма которых равна 1 , аналогично тому, как экспонента преобразует 0 в 1, и положительный.
Напротив, softmax не инвариантен при масштабировании. Например, но
Стандартная логистическая функция является частным случаем для 1-мерной оси в 2-мерном пространстве, скажем, оси x в (x, y) самолет. Одна переменная имеет фиксированное значение 0 (например, ), поэтому , а другая переменная может меняться, обозначьте ее , поэтому стандартная логистическая функция и его дополнение (то есть они в сумме составляют 1). В качестве альтернативы одномерный ввод может быть выражен как строка , с выходами и
Функция softmax это также градиент функции LogSumExp, сглаженный максимум ; определение:
частные производные:
Выражение частных производных в виде вектора с градиентом дает softmax.
Функция softmax использовалась в статистической механике как распределение Больцмана в основополагающей статье Boltzmann (1868), формализованная и популяризированная во влиятельном учебнике Гиббс (1902).
Использование softmax в теории принятия решений приписывается Люсу (1959) ошибка harvtxt: нет target: CITEREFLuce1959 (help ), который использовал аксиому независимости от нерелевантных альтернатив в теории рационального выбора, чтобы вывести softmax в аксиоме выбора Люса за относительные предпочтения.
В машинном обучении термин «softmax» используется Джоном С. Брайдлом в двух докладах на конференции 1989 года: Bridle (1990a) : и Bridle (1990b) :
Нас интересуют нелинейные сети с прямой связью (многослойные персептроны или MLP) с несколькими выходами. Мы хотим рассматривать выходы сети как вероятности альтернатив (например, классы шаблонов), обусловленные входами. Мы ищем соответствующие нелинейности на выходе и соответствующие критерии для адаптации параметров сети (например, весов). Мы объясняем две модификации: оценку вероятности, которая является альтернативой минимизации квадратичной ошибки, и нормализованное экспоненциальное (softmax ) обобщение логистической нелинейности с множеством входов.
Для любого входа выходы все должны быть положительными и должны составлять единство....
Учитывая набор неограниченных значений, , мы можем обеспечить оба условия, используя Нормализованное экспоненциальное преобразование:
Это преобразование можно рассматривать как обобщение логистики с несколькими входами, действующее на весь выходной слой. Он сохраняет порядок ранжирования входных значений и является дифференцируемым обобщением операции «победитель получает все» по выбору максимального значения. По этой причине мы предпочитаем называть его softmax .
Если мы возьмем на входе [1, 2, 3, 4, 1, 2, 3], softmax этого равно [0,024, 0,064, 0,175, 0,475, 0,024, 0,064, 0,175]. Выход имеет большую часть своего веса там, где в исходном входе была цифра «4». Это то, для чего функция обычно используется: для выделения наибольших значений и подавления значений, которые значительно ниже максимального значения. Но обратите внимание: softmax не масштабно инвариантен, поэтому, если бы входные данные были [0,1, 0,2, 0,3, 0,4, 0,1, 0,2, 0,3] (что в сумме составляет 1,6), softmax будет [0,125, 0,138, 0,153, 0,169, 0,125, 0,138, 0,153]. Это показывает, что для значений от 0 до 1 softmax фактически уменьшает максимальное значение (обратите внимание, что 0,169 не только меньше 0,475, но и меньше начальной пропорции 0,4 / 1,6 = 0,25).
Вычисление этого примера с использованием кода Python :
>>>import numpy as np>>>a = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]>>>np.exp (a) / np.sum (np.exp (a)) массив ([0,02364054, 0,06426166, 0,1746813, 0,474833, 0,02364054, 0,06426166, 0,1746813])
Вот пример Юлия код:
Юлия>A = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]; # точка с запятой для подавления интерактивного вывода julia>exp. (A)./ sum (exp. (A)) 7-элементный массив {Float64,1}: 0,0236405 0,0642617 0,174681 0,474833 0,0236405 0,0642617 0,174681
Вот пример R код:
>z <- c(1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0)>softmax <- exp(z)/sum(exp(z))>softmax [1] 0,02364054 0,06426166 0,17468130 0,47483300 0,02364054 0,06426166 0,17468130