Soft-Max и Soft-Arg-Max — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Связь между вариациями Soft-Max)
Строка 47: Строка 47:
 
*<tex>\nabla</tex>'''soft-max'''<tex>\left(x_{1},\ldots,x_{n}\right)=</tex>'''soft-arg-max'''<tex>\left(x_{1},\ldots,x_{n}\right)</tex>
 
*<tex>\nabla</tex>'''soft-max'''<tex>\left(x_{1},\ldots,x_{n}\right)=</tex>'''soft-arg-max'''<tex>\left(x_{1},\ldots,x_{n}\right)</tex>
 
*<tex>\log\left(\right.</tex>'''soft-arg-max'''<tex>_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -</tex>'''soft-max'''<tex>\left(x_{1},\ldots,x_{n}\right)</tex>
 
*<tex>\log\left(\right.</tex>'''soft-arg-max'''<tex>_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -</tex>'''soft-max'''<tex>\left(x_{1},\ldots,x_{n}\right)</tex>
 +
==Примечание==
 +
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''.
 +
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида
 +
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''

Версия 17:06, 1 июля 2022

Soft-Max и Soft-Arg-Max.

Soft-Arg-Max

Пусть есть задача мягкой классификации: Алгоритм выдает значения L1, L2, ... Ln, где n - число классов. Li - уверенность алгоритма в том, что объект принадлежит классу i; -oo <=Li <= +oo. Нужно для этих значений найти такие p1,...pn, что pi из [0, 1], а сумма pi = 1, то есть p1..pn - распределение вероятностей. Для этого возьмём экспоненту от L1..Ln; Получим числа от [0;+oo] и нормируем их: pi = exp(Li)/Sum(exp(Li)) Выполняется следующее: Li <= Lj => Pi <= Pj

Есть модель a, возвращающая Li. Необходимо сделать так, чтобы a возвращала pi, при этом оставаясь дифференциируемой. [math]y = [/math] soft-arg-max[math]\left ( x \right )[/math], где [math]y_{i} = \frac{\exp\left ( x_{i} \right )}{\sum_{j}\exp\left ( x_{i} \right )}[/math] [math]\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases} &y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &-y_{i}\cdot y_{j},~~~~~~i \neq j \end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )[/math]

Свойства soft-arg-max

  • Вычисляет по вектору чисел вектор с распределением вероятностей.
  • Можно интерпретировать как вероятность нахождения максимума в [math]i[/math]-й координате.
  • soft-arg-max[math]\left ( x - c,y-c,z-c\right )=[/math] soft-arg-max[math]\left ( x,y,z\right )[/math]
  • Предыдущее свойство используют для устойчивости вычислений. При [math]c=max\left ( x,y,z \right )[/math]

Soft-Max

Плохой Soft-Max

Зададим функцию soft-max таким образом:

soft-max[math]\left ( x_{1},\ldots,x_{n}\right ) = \frac{x_{i}~\cdot~\exp \left ( x_{i} \right )}{\sum_{j}\exp \left( x_{j} \right )} = \left \langle x, \right .[/math]soft-arg-max[math]\left . \left (x_{1},\ldots,x_{n} \right ) \right \rangle[/math]

Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса — экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:

  • soft-max[math]\left ( a,a,a\right ) = a[/math]
  • soft-max[math]\left ( x+a,y+a,z+a\right ) =[/math] soft-max[math]\left ( x,y,z\right ) + a[/math]

Заданный выше soft-max — "плохой" в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.

Хороший Soft-Max

soft-max[math]\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)[/math]

  • Не сохраняет свойство soft-max[math]\left(a,a,a\right)=a[/math]
  • Производная равна soft-arg-max

В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.

Связь между вариациями Soft-Max

Обозначим "плохой" soft-max как bad-soft-max. Тогда:

  • bad-soft-max[math]\left(x_{1},\ldots,x_{n}\right)=\left \langle x, \right .[/math]soft-arg-max[math]\left . \left (x_{1},\ldots,x_{n} \right ) \right \rangle[/math]
  • [math]\nabla[/math]soft-max[math]\left(x_{1},\ldots,x_{n}\right)=[/math]soft-arg-max[math]\left(x_{1},\ldots,x_{n}\right)[/math]
  • [math]\log\left(\right.[/math]soft-arg-max[math]_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -[/math]soft-max[math]\left(x_{1},\ldots,x_{n}\right)[/math]

Примечание

  • В большинстве статей пишется soft-max, хотя вместо этого подразумевается soft-arg-max.
  • soft-arg-max можно называть также как обобщённая (многомерная) сигмоида
  • soft-arg-max является алгоритмом подсчёта весов для soft-max