Функция Softmax

редактировать

Функция softmax, также известная как softargmax или нормализованная экспоненциальная функция - это обобщение логистической функции на несколько измерений. Он используется в полиномиальной логистической регрессии и часто используется в качестве последней функции активации нейронной сети для нормализации выходных данных сети до распределение вероятностей по прогнозируемым выходным классам.

Функция softmax принимает в качестве входных данных вектор z из K действительных чисел и нормализует его до распределения вероятностей, состоящего из K вероятностей, пропорциональных экспонентам входных чисел. То есть до применения softmax некоторые компоненты вектора могут быть отрицательными или больше единицы; и не может суммировать до 1; но после применения softmax каждый компонент будет в интервале (0, 1) {\ displaystyle (0,1)}(0, 1) , и компоненты будут складываться до 1, так что их можно интерпретировать как вероятности. Кроме того, более крупные входные компоненты будут соответствовать большим вероятностям.

Стандартная (единичная) функция softmax σ: RK → RK {\ displaystyle \ sigma: \ mathbb {R} ^ {K} \ to \ mathbb {R} ^ {K}}{\ Displaystyle \ sigma: \ mathbb {R} ^ { K} \ to \ mathbb {R} ^ {K}} определяется формулой

σ (z) i = ezi ∑ j = 1 K ezj для i = 1,…, K и z = (z 1,…, z K) ∈ RK {\ displaystyle \ sigma (\ mathbf {z}) _ {i} = {\ frac {e ^ {z_ {i}}} {\ sum _ {j = 1} ^ {K} e ^ {z_ {j}}}} {\ text {for}} i = 1, \ dotsc, K {\ text {and}} \ mathbf {z} = (z_ {1}, \ dotsc, z_ {K}) \ in \ mathbb {R} ^ {K}}{\ displaystyle \ sigma (\ mathbf {z}) _ {i} = {\ frac {e ^ {z_ {i}}} {\ sum _ {j = 1} ^ {K} e ^ {z_ {j }}}} {\ text {for}} i = 1, \ dotsc, K {\ text {and}} \ mathbf {z} = (z_ {1}, \ dotsc, z_ {K}) \ in \ mathbb {R} ^ {K}}

На словах: мы применяем стандартную экспоненциальную функцию к каждому элементу zi {\ displaystyle z_ {i}}z_ {i} входного вектора z {\ displaystyle \ mathbf {z}}{\ displaystyle \ mathbf {z}} и нормализовать эти значения, разделив их на сумму всех этих экспонент; эта нормализация гарантирует, что сумма компонентов выходного вектора σ (z) {\ displaystyle \ sigma (\ mathbf {z})}{\ displaystyle \ sigma (\ mathbf {z})} равна 1.

Вместо e, может использоваться другое основание b>0; выбор большего значения b создаст распределение вероятностей, которое более сконцентрировано вокруг позиций наибольших входных значений. Запись b = e β {\ displaystyle b = e ^ {\ beta}}{\ displaystyle b = e ^ {\ beta}} или b = e - β {\ displaystyle b = e ^ {- \ beta}}{\ displaystyle b = e ^ {- \ beta}} (для действительного β) дает выражения:

σ (z) i = e β zi ∑ j = 1 K e β zj или σ (z) i = e - β zi ∑ j = 1 K e - β zj для я = 1,…, К {\ displaystyle \ sigma (\ mathbf {z}) _ {i} = {\ frac {e ^ {\ beta z_ {i}}} {\ sum _ {j = 1} ^ {K} e ^ {\ beta z_ {j}}}} {\ text {или}} \ sigma (\ mathbf {z}) _ {i} = {\ frac {e ^ {- \ beta z_ {i}}} {\ sum _ {j = 1} ^ {K} e ^ {- \ beta z_ {j}}}} {\ text {for}} i = 1, \ dotsc, K}{\ displaystyle \ sigma (\ mathbf {z}) _ {i} = {\ frac {e ^ {\ beta z_ {i}}} {\ sum _ {j = 1} ^ {K} e ^ {\ beta z_ {j}}}} {\ text {или}} \ sigma (\ mathbf {z}) _ {i} = {\ frac {e ^ {- \ beta z_ {i}}} {\ sum _ {j = 1} ^ {K} e ^ {- \ beta z_ {j}}}} {\ text {for}} i = 1, \ dotsc, K} .

В одних полях база фиксирована, что соответствует фиксированному масштабу, в других - варьируется параметр β.

Содержание
  • 1 Интерпретации
    • 1.1 Smooth arg max
    • 1.2 Теория вероятностей
    • 1.3 Статистическая механика
  • 2 Приложения
    • 2.1 Нейронные сети
    • 2.2 Обучение с подкреплением
  • 3 Свойства
  • 4 История
  • 5 Пример
  • 6 См. Также
  • 7 Примечания
  • 8 Ссылки
Интерпретации

Smooth arg max

Имя "softmax" вводит в заблуждение; функция не является сглаженным максимумом (сглаженным приближением к функции maximum ), а скорее плавным приближением к arg max функция: функция, значение которой соответствует максимальному индексу. Фактически, термин softmax также используется для тесно связанной функции LogSumExp, которая является сглаженным максимумом. По этой причине некоторые предпочитают более точный термин «softargmax», но термин «softmax» является обычным в машинном обучении. В этом разделе термин «softargmax» используется, чтобы подчеркнуть эту интерпретацию.

Формально, вместо того чтобы рассматривать arg max как функцию с категориальным выводом 1,…, n {\ displaystyle 1, \ dots, n}1, \ точки n (соответствует индексу) рассмотрим функцию arg max с одним горячим представлением вывода (при условии, что существует уникальный max arg):

argmax ⁡ (z 1,…, zn) = (y 1,…, yn) = (0,…, 0, 1, 0,…, 0), {\ displaystyle \ operatorname {arg \, max} (z_ {1}, \ dots, z_ {n}) = (y_ {1}, \ dots, y_ {n}) = (0, \ dots, 0,1,0, \ dots, 0),}{\ displaystyle \ operatorname { arg \, max} (z_ {1}, \ dots, z_ {n}) = (y_ {1}, \ dots, y_ {n}) = (0, \ dots, 0,1,0, \ dots, 0),}

где выходная координата yi = 1 {\ displaystyle y_ {i} = 1}{\ displaystyle y_ {i} = 1} тогда и только тогда, когда i {\ displaystyle i}i является максимальным аргументом (z 1,…, zn) {\ displaystyle (z_ {1 }, \ dots, z_ {n})}{\ displaystyle (z_ {1}, \ точки, z_ {n})} , что означает, что zi {\ displaystyle z_ {i}}z_ {i} - уникальное максимальное значение (z 1, …, Zn) {\ displaystyle (z_ {1}, \ dots, z_ {n})}{\ displaystyle (z_ {1}, \ точки, z_ {n})} . Например, в этой кодировке argmax ⁡ (1, 5, 10) = (0, 0, 1), {\ displaystyle \ operatorname {arg \, max} (1,5,10) = (0,0, 1),}{\ displaystyle \ operatorname {arg \, max} (1,5,10) = (0,0,1),} , поскольку третий аргумент является максимальным.

Это можно обобщить на несколько максимальных значений аргументов (множественные равные z i {\ displaystyle z_ {i}}z_ {i} являются максимальными) путем деления 1 между всеми максимальными аргументами; формально 1 / k, где k - максимальное количество аргументов. Например, argmax ⁡ (1, 5, 5) = (0, 1/2, 1/2), {\ displaystyle \ operatorname {arg \, max} (1,5,5) = (0, 1 / 2,1 / 2),}{\ displaystyle \ operatorname {arg \, max} (1,5,5) = ( 0,1 / 2,1 / 2),} , поскольку второй и третий аргументы являются максимальными. Если все аргументы равны, это просто a r g m a x ⁡ (z,…, z) = (1 / n,…, 1 / n). {\ displaystyle \ operatorname {arg \, max} (z, \ dots, z) = (1 / n, \ dots, 1 / n).}{\ displaystyle \ operatorname {arg \, max} (z, \ dots, z) = (1 / n, \ dots, 1 / n).} Points z с несколькими Значения arg max - это особые точки (или сингулярности, образующие особый набор) - это точки, в которых arg max является разрывным (с разрывом скачка ) - в то время как точки с одиночным arg max известны как неособые или регулярные точки.

В последнем выражении, приведенном во введении, softargmax теперь является гладкой аппроксимацией arg max: as β → ∞ {\ displaystyle \ beta \ to \ infty}\ beta \ to \ infty , softargmax сходится к arg max. Существуют различные понятия сходимости функции; softargmax сходится к arg max поточечно, что означает для каждого фиксированного ввода z как β → ∞ {\ displaystyle \ beta \ to \ infty}\ beta \ to \ infty , σ β (z) → argmax ⁡ (z). {\ displaystyle \ sigma _ {\ beta} (\ mathbf {z}) \ to \ operatorname {arg \, max} (\ mathbf {z}).}{\ displaystyle \ sigma _ { \ бета} (\ mathbf {z}) \ to \ operatorname {arg \, max} (\ mathbf {z}).} Однако softargmax не сходятся равномерно к arg max, что интуитивно означает, что разные точки сходятся с разной скоростью и могут сходиться сколь угодно медленно. Фактически softargmax непрерывен, но arg max не является непрерывным в особом множестве, где две координаты равны, в то время как равномерный предел непрерывных функций непрерывен. Неудачная сходимость связана с тем, что для входов, где две координаты почти равны (и одна является максимальной), arg max является индексом одной или другой, поэтому небольшое изменение входных данных приводит к большим изменениям в выходных. Например, σ β (1, 1.0001) → (0, 1), {\ displaystyle \ sigma _ {\ beta} (1,1.0001) \ to (0,1),}{\ displaystyle \ sigma _ {\ beta} (1,1,0001) \ to (0,1),} но σ β (1, 0,9999) → (1, 0), {\ displaystyle \ sigma _ {\ beta} (1,0.9999) \ to (1,0),}{\ displaystyle \ sigma _ {\ beta} (1,0.9999) \ to (1,0),} и σ β (1, 1) = 1/2 {\ displaystyle \ sigma _ {\ beta} (1,1) = 1/2}{\ displaystyle \ sigma _ {\ beta} (1,1) = 1 / 2} для всех входов: чем ближе точки к сингулярный набор (x, x) {\ displaystyle (x, x)}(x,x), тем медленнее они сходятся. Однако softargmax компактно сходится на неособом множестве.

И наоборот, поскольку β → - ∞ {\ displaystyle \ beta \ to - \ infty}{\ displaystyle \ beta \ to - \ infty} , softargmax сходится к arg min таким же образом, где здесь сингулярное множество точки с двумя значениями arg min. На языке тропического анализа softmax - это деформация или «квантование» arg max и arg min, соответствующее использованию логарифмического полукольца вместо полукольцо макс-плюс (соответственно полукольцо мин-плюс ), и восстановление arg max или arg min путем взятия предела называется «тропикализацией» или «деквантованием».

Также бывает, что для любого фиксированного β, если один вход zi {\ displaystyle z_ {i}}z_ {i} намного больше других относительно температуры, T = 1 / β {\ displaystyle T = 1 / \ beta}{\ displaystyle T = 1 / \ beta} , выходные данные примерно равны максимальному аргументу. Например, разница в 10 велика по сравнению с температурой 1:

σ (0, 10): = σ 1 (0, 10) = (1 / (1 + e 10), e 10 / (1 + е 10)) ≈ (0,00005, 0,99995) {\ displaystyle \ sigma (0,10): = \ sigma _ {1} (0,10) = \ left (1 / (1 + e ^ {10}), e ^ {10} / (1 + e ^ {10}) \ right) \ приблизительно (0.00005,0.99995)}{\ displaystyle \ sigma (0,10): = \ sigma _ {1} (0,10) = \ left (1 / (1 + e ^ {10}), e ^ {10} / (1+ е ^ {10}) \ справа) \ приблизительно (0,00005,0,99995)}

Однако, если разница мала по сравнению с температурой, значение не близко к arg max. Например, разница в 10 мала по сравнению с температурой 100:

σ 1/100 (0, 10) = (1 / (1 + e 1/10), e 1/10 / (1 + e 1/10)) ≈ (0,475, 0,525). {\ displaystyle \ sigma _ {1/100} (0,10) = \ left (1 / (1 + e ^ {1/10}), e ^ {1/10} / (1 + e ^ {1 / 10}) \ right) \ приблизительно (0,475,0,525).}{\ displaystyle \ sigma _ {1/100} (0,10) = \ left (1 / (1 + e ^ {1/10}), e ^ {1/10} / (1 + e ^ {1/10}) \ right) \ приблизительно (0,475,0,525).}

При β → ∞ {\ displaystyle \ beta \ to \ infty}\ beta \ to \ infty температура падает до нуля, T = 1 / β → 0 {\ displaystyle T = 1 / \ beta \ to 0}{\ displaystyle T = 1 / \ beta \ to 0} , поэтому в конечном итоге все различия становятся большими (относительно температуры сжатия), что дает другую интерпретацию поведения предела.

Теория вероятностей

В теории вероятностей выходные данные функции softargmax могут использоваться для представления категориального распределения, то есть распределение вероятностей по K различным возможным исходам.

Статистическая механика

В статистической механике функция softargmax известна как распределение Больцмана (или распределение Гиббса ) : набор индексов 1,…, k {\ displaystyle {1, \ dots, k}}{\ displaystyle {1, \ dots, k}} - это микросостояния системы; входы z i {\ displaystyle z_ {i}}z_ {i} - энергии этого состояния; знаменатель известен как статистическая сумма , часто обозначаемая Z; а коэффициент β называется холодностью (или термодинамическим бета, или обратной температурой ).

Приложения

Функция softmax используется в различных методах многоклассовой классификации, таких как полиномиальная логистическая регрессия (также известная как регрессия softmax) [1], мультиклассовый линейный дискриминантный анализ, наивные байесовские классификаторы и искусственные нейронные сети. В частности, в полиномиальной логистической регрессии и линейном дискриминантном анализе входные данные функции являются результатом K различных линейных функций и прогнозируемой вероятности для j-го класса с учетом выборочного вектора x, а вектор взвешивания w равен:

P (y = j ∣ x) = ex T wj ∑ k = 1 K ex T wk {\ displaystyle P (y = j \ mid \ mathbf {x}) = {\ frac {e ^ {\ mathbf {x} ^ {\ mathsf {T}} \ mathbf {w} _ {j}}} {\ sum _ {k = 1} ^ {K} e ^ {\ mathbf {x} ^ {\ mathsf {T}} \ mathbf {w} _ {k}}}}}{\ Displaystyle P (Y = J \ mid \ mathbf {x}) = {\ frac {e ^ {\ mathbf {x} ^ {\ mathsf {T}} \ mathbf {w} _ {j}}} {\ sum _ {k = 1} ^ {K} e ^ {\ mathbf {x} ^ {\ mathsf {T}} \ mathbf {w} _ {k}}}}}

Это можно рассматривать как композицию K линейных функций Икс ↦ Икс T вес 1,…, Икс ↦ Икс T вес К {\ Displaystyle \ mathbf {x} \ mapsto \ mathbf {x} ^ {\ mathsf {T}} \ mathbf {w} _ {1}, \ ldots, \ mathbf {x} \ mapsto \ mathbf {x} ^ {\ mathsf {T}} \ mathbf {w} _ {K}}\ mathbf {x} \ mapsto \ mathbf {x} ^ {\ mathsf {T}} \ mathbf {w} _ {1}, \ ldots, \ mathbf {x} \ mapsto \ mathbf {x} ^ {\ mathsf {T}} \ mathbf {w} _ {K} и функция softmax (где x T w {\ displaystyle \ mathbf {x} ^ {\ mathsf {T}} \ mathbf {w}}\ mathbf {x} ^ {\ mathsf {T}} \ mathbf {w} обозначает внутренний продукт x {\ displaystyle \ mathbf {x}}\ mathbf {x} и w {\ displaystyle \ mathbf {w}}\ mathbf {w} ). Операция эквивалентна применению линейного оператора, определенного как w {\ displaystyle \ mathbf {w}}\ mathbf {w} , к векторам x {\ displaystyle \ mathbf {x}}\ mathbf {x} , таким образом преобразуя исходный, вероятно, многомерный, ввод в векторы в K-мерном пространстве RK {\ displaystyle \ mathbb {R} ^ {K}}{\ displaystyle \ mathbb {R} ^ {K}} .

Нейронные сети

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

Поскольку функция сопоставляет вектор и определенный индекс i {\ displaystyle i}i с действительным значением, производная должна учитывать индекс:

∂ ∂ qk σ (q, i) = σ (q, i) (δ ik - σ (q, k)). {\ displaystyle {\ frac {\ partial} {\ partial q_ {k}}} \ sigma ({\ textbf {q}}, i) = \ sigma ({\ textbf {q}}, i) (\ delta _ {ik} - \ sigma ({\ textbf {q}}, k)).}{\ displaystyle {\ frac {\ partial} {\ partial q_ {k}}} \ sigma ({\ textbf {q}}, i) = \ sigma ({\ textbf {q}}, я) (\ дельта _ {ik} - \ sigma ({\ textbf {q}}, k)).}

Это выражение симметрично по индексам i, k {\ displaystyle i, k}{\ displaystyle i, k} и таким образом, можно также выразить как

∂ ∂ qk σ (q, i) = σ (q, k) (δ ik - σ (q, i)). {\ displaystyle {\ frac {\ partial} {\ partial q_ {k}}} \ sigma ({\ textbf {q}}, i) = \ sigma ({\ textbf {q}}, k) (\ delta _ {ik} - \ sigma ({\ textbf {q}}, i)).}{\ displaystyle {\ frac {\ partial} {\ partial q_ {k}}} \ sigma ({\ textbf {q}}, i) = \ sigma ({\ textbf {q}}, k) (\ delta _ {ik} - \ sigma ({\ textbf {q} }, i)).}

Здесь дельта Кронекера используется для простоты (ср. производную сигмоидной функции, выражаемый через саму функцию).

Если функция масштабируется с помощью параметра β {\ displaystyle \ beta}\ beta , то эти выражения необходимо умножить на β {\ displaystyle \ beta}\ beta .

См. Полиномиальный логит для модели вероятности, в которой используется функция активации softmax.

Обучение с подкреплением

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

P t (a) = exp ⁡ (qt (a) / τ) ∑ i = 1 n exp ⁡ (qt (i) / τ), {\ displaystyle P_ {t} (a) = {\ frac {\ exp (q_ {t} (a) / \ tau)} {\ sum _ {i = 1} ^ {n} \ exp (q_ {t} (i) / \ tau)}} {\ text {,}}}P_ {t} (a) = {\ frac {\ exp (q_ {t} (a) / \ tau)} {\ sum _ {i = 1} ^ {n} \ exp (q_ {t} (i) / \ tau)}} {\ text {,}}

где значение действия qt (a) {\ displaystyle q_ {t} (a)}q_ {t} (a) соответствует ожидаемой награде за следующие действия a и τ {\ displaystyle \ tau}\ tau называется температурным параметром (в отсылке к статистической механике ). Для высоких температур (τ → ∞ {\ displaystyle \ tau \ to \ infty}\ tau \ to \ infty ) все действия имеют примерно одинаковую вероятность, и чем ниже температура, тем больше ожидаемых наград влияет на вероятность. Для низкой температуры (τ → 0 + {\ displaystyle \ tau \ to 0 ^ {+}}\ tau \ to 0 ^ {+} ) вероятность действия с наибольшим ожидаемым вознаграждением стремится к 1.

Свойства

Геометрически функция softmax отображает векторное пространство RK {\ displaystyle \ mathbb {R} ^ {K}}{\ displaystyle \ mathbb {R} ^ {K}} в интерьер стандарта стандарт (K - 1) {\ displaystyle (K-1)}{\ displaystyle (K-1)} -simplex, уменьшив размер на единицу (диапазон a (K - 1) {\ displaystyle (K-1)}{\ displaystyle (K-1)} -мерный симплекс в K {\ displaystyle K}K-мерном пространстве) из-за линейное ограничение, что сумма всех выходных данных равна 1, что означает, что он лежит на гиперплоскости.

вдоль главной диагонали (x, x,…, x), {\ displaystyle (x, x, \ dots, x),}{\ displaystyle (x, x, \ dots, x),} softmax - это просто равномерное распределение на выходах, (1 / n,…, 1 / n) {\ displaystyle (1 / n, \ dots, 1 / n)}{\ displaystyle (1 / n, \ dots, 1 / n)} : равные баллы дают равные вероятности.

В более общем смысле softmax инвариантен относительно перевода на одно и то же значение в каждой координате: добавление c = (c,…, c) {\ displaystyle \ mathbf {c} = (c, \ dots, c)}{\ displaystyle \ mathbf {c} = (c, \ dots, c)} на входы z {\ displaystyle \ mathbf {z}}\ mathbf {z} дает σ (z + c) = σ (z) {\ displaystyle \ sigma (\ mathbf {z} + \ mathbf {c}) = \ sigma (\ mathbf {z})}{\ displaystyle \ sigma (\ mathbf {z} + \ mathbf {c}) = \ sigma (\ mathbf { z})} , потому что он умножает каждый показатель степени на тот же коэффициент, ec {\ displaystyle e ^ {c}}{\ displaystyle e ^ {c}} (потому что ezi + c = ezi ⋅ ec {\ displaystyle e ^ {z_ {i} + c} = e ^ {z_ {i}} \ cdot e ^ { c}}{\ displaystyle e ^ {z_ {i} + c} = e ^ {z_ {i}} \ cdot e ^ {c}} ), поэтому отношения не меняются:

σ (z + c) j = ezj + c ∑ k = 1 K ezk + c = ezj ⋅ ec ∑ k = 1 K ezk ⋅ ec = σ (z) j. {\ displaystyle \ sigma (\ mathbf {z} + \ mathbf {c}) _ {j} = {\ frac {e ^ {z_ {j} + c}} {\ sum _ {k = 1} ^ {K } e ^ {z_ {k} + c}}} = {\ frac {e ^ {z_ {j}} \ cdot e ^ {c}} {\ sum _ {k = 1} ^ {K} e ^ { z_ {k}} \ cdot e ^ {c}}} = \ sigma (\ mathbf {z}) _ {j}.}{\ displaystyle \ sigma (\ mathbf {z} + \ mathbf {c}) _ {j} = {\ frac {e ^ {z_ {j} + c} } {\ sum _ {k = 1} ^ {K} e ^ {z_ {k} + c}}} = {\ frac {e ^ {z_ {j}} \ cdot e ^ {c}} {\ sum _ {k = 1} ^ {K} e ^ {z_ {k}} \ cdot e ^ {c}}} = \ sigma (\ mathbf {z}) _ {j}.}

Геометрически softmax постоянен по диагоналям: это размер, который удаляется, и соответствует тому, что выход softmax не зависит от перевода во входных оценках (выбор 0 баллов). Можно нормализовать входные оценки, предположив, что сумма равна нулю (вычтите среднее значение: c {\ displaystyle \ mathbf {c}}\ mathbf {c} , где c = 1 n ∑ zi {\ textstyle c = {\ frac {1} {n}} \ sum z_ {i}}{\ textst yle c = {\ frac {1} {n}} \ sum z_ {i}} ), а затем softmax берет гиперплоскость точек, сумма которых равна нулю, ∑ zi = 0 {\ textstyle \ sum z_ {i} = 0}{\ textstyle \ sum z_ {i} = 0} в открытый симплекс положительных значений, сумма которых равна 1 ∑ σ (z) i = 1 {\ textstyle \ sum \ sigma (\ mathbf {z }) _ {i} = 1}{\ textstyle \ sum \ sigma (\ mathbf {z}) _ {i} = 1} , аналогично тому, как экспонента преобразует 0 в 1, e 0 = 1 {\ displaystyle e ^ {0} = 1}e ^ 0 = 1 и положительный.

Напротив, softmax не инвариантен при масштабировании. Например, σ ((0, 1)) = (1 / (1 + e), e / (1 + e)) {\ displaystyle \ sigma {\ bigl (} (0,1) {\ bigr)} = {\ bigl (} 1 / (1 + e), e / (1 + e) ​​{\ bigr)}}{\ displaystyle \ sigma {\ bigl (} (0,1) {\ bigr)} = {\ bigl (} 1 / (1 + e), e / (1 + e) {\ bigr)}} но σ ((0, 2)) = (1 / (1 + e 2), e 2 / (1 + e 2)). {\ displaystyle \ sigma {\ bigl (} (0,2) {\ bigr)} = {\ bigl (} 1 / (1 + e ^ {2}), e ^ {2} / (1 + e ^ { 2}) {\ bigr)}.}{\ displaystyle \ sigma {\ bigl (} (0,2) {\ bigr)} = { \ bigl (} 1 / (1 + e ^ {2}), e ^ {2} / (1 + e ^ {2}) {\ bigr)}.}

Стандартная логистическая функция является частным случаем для 1-мерной оси в 2-мерном пространстве, скажем, оси x в (x, y) самолет. Одна переменная имеет фиксированное значение 0 (например, z 2 = 0 {\ displaystyle z_ {2} = 0}z_ {2} = 0 ), поэтому e 0 = 1 {\ displaystyle e ^ {0} = 1}e ^ 0 = 1 , а другая переменная может меняться, обозначьте ее z 1 = x {\ displaystyle z_ {1} = x}{\ displaystyle z_ {1} = x} , поэтому ez 1 / ∑ к = 1 2 ezk = ex / (ex + 1), {\ textstyle e ^ {z_ {1}} / \ sum _ {k = 1} ^ {2} e ^ {z_ {k}} = e ^ { x} / (e ^ {x} +1),}{\ textstyle e ^ {z_ {1}} / \ sum _ {k = 1} ^ {2} e ^ {z_ {k} } = e ^ {x} / (e ^ {x} +1),} стандартная логистическая функция и ez 2 / ∑ k = 1 2 ezk = 1 / (ex + 1), {\ textstyle e ^ {z_ {2}} / \ sum _ {k = 1} ^ {2} e ^ {z_ {k}} = 1 / (e ^ {x} +1),}{\ textstyle e ^ {z_ {2}} / \ sum _ {k = 1} ^ {2} е ^ {z_ {к}} = 1 / (е ^ {х} +1),} его дополнение (то есть они в сумме составляют 1). В качестве альтернативы одномерный ввод может быть выражен как строка (x / 2, - x / 2) {\ displaystyle (x / 2, -x / 2)}{\ displaystyle (x / 2, -x / 2)} , с выходами ex / 2 / (ex / 2 + e - x / 2) = ex / (ex + 1) {\ displaystyle e ^ {x / 2} / (e ^ {x / 2} + e ^ {- x / 2}) = e ^ {x} / (e ^ {x} +1)}{\ displaystyle e ^ {x / 2} / (e ^ {x / 2} + e ^ {- x / 2}) = e ^ {x} / (e ^ { x} +1)} и e - x / 2 / (ex / 2 + e - x / 2) = 1 / (ex + 1). {\ displaystyle e ^ {- x / 2} / (e ^ {x / 2} + e ^ {- x / 2}) = 1 / (e ^ {x} +1).}{\ displaystyle e ^ {- x / 2} / (e ^ {x / 2} + e ^ {- x / 2}) = 1 / (e ^ {x} +1).}

Функция softmax это также градиент функции LogSumExp, сглаженный максимум ; определение:

LSE ⁡ (z 1,…, zn) = журнал ⁡ (exp ⁡ (z 1) + ⋯ + exp ⁡ (zn)), {\ displaystyle \ operatorname {LSE} (z_ {1}, \ точки, z_ {n}) = \ log \ left (\ exp (z_ {1}) + \ cdots + \ exp (z_ {n}) \ right),}{ \ Displaystyle \ OperatorName {LSE} (z_ {1}, \ dots, z_ {n}) = \ log \ left (\ exp (z_ {1}) + \ cdots + \ exp (z_ {n}) \ right),}

частные производные:

∂ i LSE ⁡ (x) = exp ⁡ xi ∑ i exp ⁡ xi. {\ displaystyle \ partial _ {i} \ operatorname {LSE} (\ mathbf {x}) = {\ frac {\ exp x_ {i}} {\ sum _ {i} \ exp x_ {i}}}.}{\ displaystyle \ partial _ {i} \ operatorname {LSE} (\ mathbf {x}) = {\ frac {\ ехр x_ {i}} {\ sum _ {i} \ exp x_ {i}}}.}

Выражение частных производных в виде вектора с градиентом дает softmax.

История

Функция softmax использовалась в статистической механике как распределение Больцмана в основополагающей статье Boltzmann (1868), формализованная и популяризированная во влиятельном учебнике Гиббс (1902).

Использование softmax в теории принятия решений приписывается Люсу (1959) ошибка harvtxt: нет target: CITEREFLuce1959 (help ), который использовал аксиому независимости от нерелевантных альтернатив в теории рационального выбора, чтобы вывести softmax в аксиоме выбора Люса за относительные предпочтения.

В машинном обучении термин «softmax» используется Джоном С. Брайдлом в двух докладах на конференции 1989 года: Bridle (1990a) : и Bridle (1990b) :

Нас интересуют нелинейные сети с прямой связью (многослойные персептроны или MLP) с несколькими выходами. Мы хотим рассматривать выходы сети как вероятности альтернатив (например, классы шаблонов), обусловленные входами. Мы ищем соответствующие нелинейности на выходе и соответствующие критерии для адаптации параметров сети (например, весов). Мы объясняем две модификации: оценку вероятности, которая является альтернативой минимизации квадратичной ошибки, и нормализованное экспоненциальное (softmax ) обобщение логистической нелинейности с множеством входов.

Для любого входа выходы все должны быть положительными и должны составлять единство....

Учитывая набор неограниченных значений, V j (x) {\ displaystyle V_ {j} (x)}{\ displaystyle V_ {j} (x)} , мы можем обеспечить оба условия, используя Нормализованное экспоненциальное преобразование:

Q j (x) = e V j (x) / ∑ ke V k (x) {\ displaystyle Q_ {j} (x) = \ left.e ^ {V_ {j} (x)} \ right / \ sum _ {k} e ^ {V_ {k} (x)}}{\ displayst yle Q_ {j} (x) = \ left.e ^ {V_ {j} (x)} \ right / \ sum _ {k} e ^ {V_ {k} (x)}}

Это преобразование можно рассматривать как обобщение логистики с несколькими входами, действующее на весь выходной слой. Он сохраняет порядок ранжирования входных значений и является дифференцируемым обобщением операции «победитель получает все» по выбору максимального значения. По этой причине мы предпочитаем называть его 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
См. Также
Примечания
Ссылки
Последняя правка сделана 2021-06-08 08:25:32
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте