LogSumExp

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

LogSumExp (LSE) (также называемый RealSoftMax или многопараметрический softplus ) представляет собой функцию сглаженного максимума - сглаживания приближения к функции максимума, которая в основном используется алгоритмами машинного обучения. Она определяется как логарифм суммы экспонент аргументов:

LSE (x 1,…, xn) = log ⁡ (exp ⁡ (x 1) + ⋯ + exp ⁡ (xn)) {\ displaystyle \ mathrm { LSE} (x_ {1}, \ dots, x_ {n}) = \ log \ left (\ exp (x_ {1}) + \ cdots + \ exp (x_ {n}) \ right)}{\ displaystyle \ mathrm { LSE} (x_ {1}, \ dots, x_ {n}) = \ log \ left (\ exp (x_ {1}) + \ cdots + \ exp (x_ {n}) \ right)}

В тропический анализ, это сумма в логарифмическом полукольце.

Содержание
  • 1 Свойства
  • 2 Уловка логарифмической суммы-экспонирования для вычислений лог-области
  • 3 Строгое против Функция типа vex log-sum-exp
  • 4 См. также
  • 5 Ссылки
Свойства

Домен функции LogSumExp: R n {\ displaystyle \ mathbb {R} ^ {n }}\ mathbb {R} ^ {n} , реальное пространство координат, и его диапазон равен R {\ displaystyle \ mathbb {R}}\ mathbb {R} , вещественная линия. Чем больше значения x k {\ displaystyle x_ {k}}x_ {k} или их отклонение, тем точнее становится приближение. Функция LogSumExp является выпуклой и строго монотонно возрастает везде в своей области (но не строго выпуклой везде).

LSE является сглаженным максимумом, потому что, применяя аппроксимацию касательной линии log ⁡ (X + a) ≈ log ⁡ X + a / X, {\ displaystyle \ log (X + a) \ приблизительно \ log X + a / X,}{\ displaystyle \ log (X + a) \ приблизительно \ log X + a / X,} если один член, xj, {\ displaystyle x_ {j},}{\ displaystyle x_ {j},} намного больше остальных, второй член мал, потому что в знаменателе есть xj {\ displaystyle x_ {j}}x_ {j} , и получается:

LSE (x) = log ⁡ (∑ i exp ⁡ xi) ≈ log ⁡ (exp ⁡ xj) + (∑ i ≠ j exp ⁡ xi) / exp ⁡ xj ≈ xj = max ixi. {\ textstyle \ mathrm {LSE} (\ mathbf {x}) = \ log {\ bigl (} \ sum _ {i} \ exp x_ {i} {\ bigr)} \ приблизительно \ log (\ exp x_ {j }) + {\ bigl (} \ sum _ {i \ neq j} \ exp x_ {i} {\ bigr)} / \ exp x_ {j} \ приблизительно x_ {j} = \ max _ {i} x_ { i}.}{\ textstyle \ mathrm {LSE} (\ mathbf {x}) = \ log {\ bigl (} \ sum _ {i} \ exp x_ {i} {\ bigr)} \ приблизительно \ log (\ exp x_ {j}) + {\ bigl (} \ sum _ {i \ neq j} \ exp x_ {i} {\ bigr)} / \ exp x_ {j} \ приблизительно x_ {j} = \ max _ {i} x_ {i}.}

Действительно, существуют следующие жесткие границы (если n>1 {\ displaystyle n>1}n>1 , иначе первое неравенство не является строгим):

max {x 1,…, xn} < L S E ( x 1, …, x n) ≤ max { x 1, …, x n } + log ⁡ ( n). {\displaystyle \max {\{x_{1},\dots,x_{n}\}}<\mathrm {LSE} (x_{1},\dots,x_{n})\leq \max {\{x_{1},\dots,x_{n}\}}+\log(n).}{\ displaystyle \ max {\ {x_ {1}, \ dots, x_ {n} \}} <\ mathrm {LSE} (x_ {1}, \ dots, x_ {n}) \ leq \ max {\ { x_ {1}, \ dots, x_ {n} \}} + \ log (n).}

Верхняя граница является равенством тогда и только тогда, когда все xi {\ displaystyle x_ {i}}x_ {i} равны.

Это потому, что ∑ я знак равно 1 nxi ≤ n ⋅ макс ixi {\ textstyle \ sum _ {i = 1} ^ {n} x_ {i} \ leq n \ cdot \ max _ {i} x_ {i}}{\ textstyle \ sum _ {i = 1} ^ {n} x_ {i} \ leq n \ cdot \ max _ {i} x_ { я}} (сумма - это не более чем максимальное значение каждый раз), а для положительных чисел ∑ i = 1 nxi ≥ xi {\ textstyle \ sum _ {i = 1} ^ {n} x_ {i} \ geq x_ {i}}{\ textstyle \ sum _ {i = 1} ^ {n} x_ {i} \ geq x_ {i}} для любого термина, включая максимум (так как он добавляет положительные числа), и фактически является строгим, если n>1 {\ dis playstyle n>1}n>1 (поскольку вы добавляете положительное число). Комбинируя с логарифмами и показателями степени, получаем:

max {x 1…, xn} = log ⁡ (exp ⁡ (max xi)) ≤ log ⁡ (exp ⁡ (x 1) + ⋯ + exp ⁡ (xn)) ≤ log ⁡ (n ⋅ ехр ⁡ (max xi)) = max {x 1,…, xn} + log ⁡ (n). {\ displaystyle {\ begin {align} \ max {\ {x_ {1} \ dots, x_ {n} \}} = \ log \ left (\ exp (\ max x_ {i}) \ right) \\ \ leq \ log \ left (\ exp (x_ {1}) + \ cdots + \ exp (x_ {n}) \ right) \\ \ leq \ log \ left (n \ cdot \ exp (\ max x_ {i}) \ right) \\ = \ max {\ {x_ {1}, \ dots, x_ {n} \}} + \ log (n). \ end {align}}}{\ displaystyle {\ begin {align} \ max {\ {x_ {1} \ dots, x_ {n} \}} = \ log \ left (\ exp (\ max x_ {i}) \ right) \\ \ leq \ log \ left (\ exp (x_ {1}) + \ cdots + \ exp (x_ {n}) \ right) \\ \ leq \ журнал \ left (n \ cdot \ exp (\ max x_ {i}) \ right) \\ = \ max {\ {x_ {1}, \ dots, x_ {n} \}} + \ log (n). \ конец {выровнено}}}

Нижний граница выполняется только для n = 1 {\ displaystyle n = 1}n = 1 , в противном случае она строгая, но приближается, когда все аргументы, кроме одного, приближаются к отрицательной бесконечности, а верхняя граница достигается, когда все аргументы равны.

Запись x = (x 1,…, xn), {\ displaystyle \ mathbf {x} = (x_ {1}, \ dots, x_ {n}),}{\ displaystyle \ mathbf {x} = (x_ {1}, \ dots, x_ {n}),} частные производные:

∂ ∂ xi LSE (x) = exp ⁡ xi ∑ j exp ⁡ xj. {\ Displaystyle {\ frac {\ partial} {\ partial x_ {i}}} {LSE (\ mathbf {x})} = {\ frac {\ exp x_ {i}} {\ sum _ {j} \ exp {x_ {j}}}}.}{\ displaystyle {\ frac {\ partial} {\ partial x_ {i}}} {LSE (\ mathbf {x})} = {\ frac {\ exp x_ {i}} {\ sum _ {j} \ exp {x_ {j}}}}.}

Это можно вычислить с помощью логарифмического дифференцирования.

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

выпуклое сопряжение LogSumExp - это трюк с отрицательной энтропией.

лог-сумма-эксп для вычислений в лог-области

Функция LSE часто встречается, когда обычные арифметические вычисления выполняются в логарифмической шкале, как в логарифмической вероятности.

Подобно операциям умножения в линейном масштабе, которые становятся простыми сложениями в логарифмическая шкала, операция сложения в линейной шкале становится LSE в логарифмической шкале.

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

К сожалению, использование LSE напрямую в этом случае может снова вызвать проблемы переполнения / потери значимости. Поэтому вместо этого должен использоваться следующий эквивалент (особенно, когда точность приведенного выше приближения «max» недостаточна). Поэтому многие математические библиотеки, такие как IT ++, предоставляют подпрограмму LSE по умолчанию и используют эту формулу для внутренних целей.

LSE (x 1,…, xn) = x ∗ + журнал ⁡ (exp ⁡ (x 1 - x ∗) + ⋯ + exp ⁡ (xn - x ∗)) {\ displaystyle LSE (x_ {1}, \ dots, x_ {n}) = x ^ {*} + \ log \ left (\ exp (x_ {1} -x ^ {*}) + \ cdots + \ exp (x_ {n} -x ^ {* }) \ right)}{\ displaystyle LSE (x_ {1}, \ dots, x_ {n}) = x ^ {*} + \ log \ left (\ exp (x_ {1} -x ^ {*}) + \ cdots + \ exp (x_ {n} -x ^ {*}) \ right)}

где x ∗ = max {x 1,…, xn} {\ displaystyle x ^ {*} = \ max {\ {x_ {1}, \ dots, x_ {n } \}}}{\ displaystyle x ^ {*} = \ max {\ {x_ {1}, \ dots, x_ {n} \}}}

Строго выпуклая функция типа log-sum-exp

LSE является выпуклой, но не строго выпуклой. Мы можем определить строго выпуклую функцию типа log-sum-exp, добавив дополнительный аргумент, установленный в ноль:

LSE 0 + (x 1,..., xn) = LSE (0, x 1,..., xn) {\ displaystyle LSE_ {0} ^ {+} (x_ {1},..., x_ {n}) = LSE (0, x_ {1},..., x_ {n})}{\ displaystyle LSE_ {0} ^ {+} (x_ {1},..., x_ {n}) = LSE (0, x_ {1 },..., x_ {n})}

Эта функция является собственным генератором Брегмана (строго выпуклой и дифференцируемой). Он встречается в машинном обучении, например, как кумулянт полиномиального / биномиального семейства.

См. Также
Ссылки
Последняя правка сделана 2021-05-28 05:28:02
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте