SoftMax и SoftArgMax — различия между версиями
Betson (обсуждение | вклад) (→Связь между вариациями SoftMax) |
м (rollbackEdits.php mass rollback) |
||
(не показано 7 промежуточных версий 2 участников) | |||
Строка 21: | Строка 21: | ||
*<tex>L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}</tex> | *<tex>L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}</tex> | ||
*Модель <tex>a</tex>, возвращающая <tex>L_{i}</tex>, после преобразования будет возвращать <tex>p_{i}</tex> и останется дифференцируемой | *Модель <tex>a</tex>, возвращающая <tex>L_{i}</tex>, после преобразования будет возвращать <tex>p_{i}</tex> и останется дифференцируемой | ||
− | *<tex>p = | + | *<tex>p =softArgMax\left ( L \right )</tex> |
− | Пусть <tex>y = | + | Пусть <tex>y = softArgMax\left ( x \right )</tex>, тогда: |
<tex>\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases} | <tex>\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases} | ||
Строка 30: | Строка 30: | ||
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )</tex> | \end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )</tex> | ||
− | У <tex> | + | У <tex>softArgMax</tex> такое название, так как это, по сути, гладкая аппроксимация модифицированного <tex>argMax</tex>. |
===Свойства SoftArgMax=== | ===Свойства SoftArgMax=== | ||
*Вычисляет по вектору чисел вектор с распределением вероятностей | *Вычисляет по вектору чисел вектор с распределением вероятностей | ||
*Можно интерпретировать как вероятность нахождения максимума в <tex>i</tex>-й координате | *Можно интерпретировать как вероятность нахождения максимума в <tex>i</tex>-й координате | ||
− | *<tex> | + | *<tex>softArgMax\left ( x - c,y-c,z-c\right )=softArgMax\left ( x,y,z\right )</tex> |
*Предыдущее свойство используют для устойчивости вычислений при <tex>c=max\left ( x,y,z \right )</tex> | *Предыдущее свойство используют для устойчивости вычислений при <tex>c=max\left ( x,y,z \right )</tex> | ||
− | *<tex> | + | *<tex>softArgMax</tex> {{---}} частный случай сигмоиды. <tex>softArgMax\left(y, 0\right) = \sigma \left(y\right)</tex> |
===Модификация SoftArgMax=== | ===Модификация SoftArgMax=== | ||
− | <tex> | + | <tex>softArgMax_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}</tex> |
− | Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое <tex> | + | Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое <tex>softArgMax</tex>. Чем больше параметр <tex>t</tex>, тем больше получаемые вероятности будут похожи на равномерное распределение. |
==SoftMax== | ==SoftMax== | ||
Строка 48: | Строка 48: | ||
[[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]] | [[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]] | ||
[[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]] | [[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]] | ||
− | Зададим функцию <tex> | + | Зададим функцию <tex>softMax</tex> таким образом: |
− | <tex> | + | <tex>softMax\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 .softArgMax\left . \left (x_{1},\ldots,x_{n} \right ) \right \rangle</tex> |
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума: | Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума: | ||
− | *<tex> | + | *<tex>softMax\left ( a,a,a\right ) = a</tex> |
− | *<tex> | + | *<tex>softMax\left ( x+a,y+a,z+a\right ) =softMax\left ( x,y,z\right ) + a</tex> |
− | Заданный выше <tex> | + | Заданный выше <tex>softMax</tex> {{---}} «плохой» в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума. |
===Хороший SoftMax=== | ===Хороший SoftMax=== | ||
− | <tex> | + | <tex>softMax\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)</tex> |
− | *Не сохраняется свойство <tex> | + | *Не сохраняется свойство <tex>softMax\left(a,a,a\right)=a</tex> |
− | *Производная равна <tex> | + | *Производная равна <tex>softArgMax</tex> |
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума. | В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума. | ||
==Связь между вариациями SoftMax== | ==Связь между вариациями SoftMax== | ||
− | Обозначим «плохой» <tex> | + | Обозначим «плохой» <tex>softMax</tex> как <tex>badSoftMax</tex>. Тогда: |
− | *<tex> | + | *<tex>badSoftMax\left(x_{1},\ldots,x_{n}\right)=\left \langle x, \right .softArgMax\left . \left (x_{1},\ldots,x_{n} \right ) \right \rangle</tex> |
− | *<tex>\nabla | + | *<tex>\nabla softMax\left(x_{1},\ldots,x_{n}\right)=softArgMax\left(x_{1},\ldots,x_{n}\right)</tex> |
− | *<tex>\log\left(\right. | + | *<tex>\log\left(\right.softArgMax_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -softMax\left(x_{1},\ldots,x_{n}\right)</tex> |
− | Последнее свойство позволяет вычислять производную от <tex>\log\left( | + | Для подсчёта, например, перекрёстной энтропии, необходимо вычислить <tex>\log\left(p_{i}\right)</tex>. Последнее свойство позволяет вычислять производную от <tex>\log\left(p_{i}\right)</tex>, когда <tex>p_{i} = 0</tex>. |
==Примечания== | ==Примечания== | ||
− | *В большинстве статей пишется <tex> | + | *В большинстве статей пишется <tex>softMax</tex>, хотя вместо этого подразумевается <tex>softArgMax</tex> |
− | *<tex> | + | *<tex>softArgMax</tex> можно называть также как обобщённая (многомерная) сигмоида |
− | *<tex> | + | *<tex>softArgMax</tex> является алгоритмом подсчёта весов для <tex>softMax</tex> |
==Источники== | ==Источники== | ||
# [https://www.youtube.com/watch?v=mlPNUbaphZA&ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта] | # [https://www.youtube.com/watch?v=mlPNUbaphZA&ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта] |
Текущая версия на 19:27, 4 сентября 2022
Содержание
SoftArgMax
Постановка задачи
Пусть есть задача мягкой классификации:
Алгоритм выдает значения
, где — число классов.— уверенность алгоритма в том, что объект принадлежит классу ,
Для этих значений необходимо найти такие
, что:То есть
— распределение вероятностейДля этого выполним преобразование:
Тогда выполняется следующее:
- Модель , возвращающая , после преобразования будет возвращать и останется дифференцируемой
Пусть
, тогда:
У
такое название, так как это, по сути, гладкая аппроксимация модифицированного .Свойства SoftArgMax
- Вычисляет по вектору чисел вектор с распределением вероятностей
- Можно интерпретировать как вероятность нахождения максимума в -й координате
- Предыдущее свойство используют для устойчивости вычислений при
- — частный случай сигмоиды.
Модификация SoftArgMax
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое
. Чем больше параметр , тем больше получаемые вероятности будут похожи на равномерное распределение.SoftMax
Плохой SoftMax
Зададим функцию
таким образом:
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса — экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:
Заданный выше
— «плохой» в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.Хороший SoftMax
- Не сохраняется свойство
- Производная равна
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.
Связь между вариациями SoftMax
Обозначим «плохой»
как . Тогда:Для подсчёта, например, перекрёстной энтропии, необходимо вычислить
. Последнее свойство позволяет вычислять производную от , когда .Примечания
- В большинстве статей пишется , хотя вместо этого подразумевается
- можно называть также как обобщённая (многомерная) сигмоида
- является алгоритмом подсчёта весов для
Источники
- Лекция 7. Байесовские методы А. Забашта
- Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв