<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Betson</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Betson"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Betson"/>
		<updated>2026-05-19T18:00:51Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82644</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82644"/>
				<updated>2022-07-01T19:10:24Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: Полностью удалено содержимое страницы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82643</id>
		<title>SoftMax и SoftArgMax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82643"/>
				<updated>2022-07-01T19:01:49Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Связь между вариациями SoftMax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SoftArgMax==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =softArgMax\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = softArgMax\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;argMax&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства SoftArgMax===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;softArgMax\left ( x - c,y-c,z-c\right )=softArgMax\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt; {{---}} частный случай сигмоиды. &amp;lt;tex&amp;gt;softArgMax\left(y, 0\right) = \sigma \left(y\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация SoftArgMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;softArgMax_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==SoftMax==&lt;br /&gt;
===Плохой SoftMax===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;softMax&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;softMax\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;softMax\left ( x+a,y+a,z+a\right ) =softMax\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;softMax&amp;lt;/tex&amp;gt; {{---}} «плохой» в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший SoftMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;softMax\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;softMax\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями SoftMax==&lt;br /&gt;
Обозначим «плохой» &amp;lt;tex&amp;gt;softMax&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;badSoftMax&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;badSoftMax\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .softArgMax\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla softMax\left(x_{1},\ldots,x_{n}\right)=softArgMax\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.softArgMax_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -softMax\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для подсчёта, например, перекрёстной энтропии, необходимо вычислить &amp;lt;tex&amp;gt;\log\left(p_{i}\right)&amp;lt;/tex&amp;gt;. Последнее свойство позволяет вычислять производную от &amp;lt;tex&amp;gt;\log\left(p_{i}\right)&amp;lt;/tex&amp;gt;, когда &amp;lt;tex&amp;gt;p_{i} = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;softMax&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;softMax&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82642</id>
		<title>SoftMax и SoftArgMax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82642"/>
				<updated>2022-07-01T19:00:44Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SoftArgMax==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =softArgMax\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = softArgMax\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;argMax&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства SoftArgMax===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;softArgMax\left ( x - c,y-c,z-c\right )=softArgMax\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt; {{---}} частный случай сигмоиды. &amp;lt;tex&amp;gt;softArgMax\left(y, 0\right) = \sigma \left(y\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация SoftArgMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;softArgMax_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==SoftMax==&lt;br /&gt;
===Плохой SoftMax===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;softMax&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;softMax\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;softMax\left ( x+a,y+a,z+a\right ) =softMax\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;softMax&amp;lt;/tex&amp;gt; {{---}} «плохой» в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший SoftMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;softMax\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;softMax\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями SoftMax==&lt;br /&gt;
Обозначим «плохой» &amp;lt;tex&amp;gt;softMax&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;badSoftMax&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;badSoftMax\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .softArgMax\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla softMax\left(x_{1},\ldots,x_{n}\right)=softArgMax\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.softArgMax_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -softMax\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для подсчёта, например, перекрёстной энтропии необходимо вычислить &amp;lt;tex&amp;gt;\log\left(p_{i}\right)&amp;lt;/tex&amp;gt;. Последнее свойство позволяет вычислять производную от &amp;lt;tex&amp;gt;\log\left(p_{i}\right)&amp;lt;/tex&amp;gt;, когда &amp;lt;tex&amp;gt;p_{i} = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;softMax&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;softArgMax&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;softMax&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82641</id>
		<title>SoftMax и SoftArgMax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82641"/>
				<updated>2022-07-01T18:58:31Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SoftArgMax==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =soft{\text -}arg{\text -}max\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = soft{\text -}arg{\text -}max\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;arg{\text -}max&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства SoftArgMax===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max\left ( x - c,y-c,z-c\right )=soft{\text -}arg{\text -}max\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max&amp;lt;/tex&amp;gt; {{---}} частный случай сигмоиды. &amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max\left(y, 0\right) = \sigma \left(y\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация SoftArgMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==SoftMax==&lt;br /&gt;
===Плохой SoftMax===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;soft{\text -}max&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;soft{\text -}max\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 .soft{\text -}arg{\text -}max\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;soft{\text -}max\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;soft{\text -}max\left ( x+a,y+a,z+a\right ) =soft{\text -}max\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;soft{\text -}max&amp;lt;/tex&amp;gt; {{---}} «плохой» в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший SoftMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;soft{\text -}max\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;soft{\text -}max\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями SoftMax==&lt;br /&gt;
Обозначим «плохой» &amp;lt;tex&amp;gt;soft{\text -}max&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;bad{\text -}soft{\text -}max&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;bad{\text -}soft{\text -}max\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .soft{\text -}arg{\text -}max\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla soft{\text -}max\left(x_{1},\ldots,x_{n}\right)=soft{\text -}arg{\text -}max\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.soft{\text -}arg{\text -}max_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -soft{\text -}max\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для подсчёта, например, перекрёстной энтропии необходимо вычислить &amp;lt;tex&amp;gt;\log\left(p_{i}\right)&amp;lt;/tex&amp;gt;. Последнее свойство позволяет вычислять производную от &amp;lt;tex&amp;gt;\log\left(p_{i}\right)&amp;lt;/tex&amp;gt;, когда &amp;lt;tex&amp;gt;p_{i} = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;soft{\text -}max&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;soft{\text -}max&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82640</id>
		<title>SoftMax и SoftArgMax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82640"/>
				<updated>2022-07-01T18:47:27Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Связь между вариациями SoftMax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SoftArgMax==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{arg{\text -}max}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства SoftArgMax===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max&amp;lt;/tex&amp;gt; {{---}} частный случай сигмоиды. &amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max\left(y, 0\right) = \sigma \left(y\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация SoftArgMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==SoftMax==&lt;br /&gt;
===Плохой SoftMax===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; {{---}} «плохой» в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший SoftMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями SoftMax==&lt;br /&gt;
Обозначим «плохой» &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для подсчёта, например, перекрёстной энтропии необходимо вычислить &amp;lt;tex&amp;gt;\log\left(p_{i}\right)&amp;lt;/tex&amp;gt;. Последнее свойство позволяет вычислять производную от &amp;lt;tex&amp;gt;\log\left(p_{i}\right)&amp;lt;/tex&amp;gt;, когда &amp;lt;tex&amp;gt;p_{i} = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82639</id>
		<title>SoftMax и SoftArgMax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82639"/>
				<updated>2022-07-01T18:47:16Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Связь между вариациями SoftMax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SoftArgMax==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{arg{\text -}max}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства SoftArgMax===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max&amp;lt;/tex&amp;gt; {{---}} частный случай сигмоиды. &amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max\left(y, 0\right) = \sigma \left(y\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация SoftArgMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==SoftMax==&lt;br /&gt;
===Плохой SoftMax===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; {{---}} «плохой» в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший SoftMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями SoftMax==&lt;br /&gt;
Обозначим «плохой» &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для подсчёта, например, перекрёстной энтропии необходимо подсчитывать &amp;lt;tex&amp;gt;\log\left(p_{i}\right)&amp;lt;/tex&amp;gt;. Последнее свойство позволяет вычислять производную от &amp;lt;tex&amp;gt;\log\left(p_{i}\right)&amp;lt;/tex&amp;gt;, когда &amp;lt;tex&amp;gt;p_{i} = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82638</id>
		<title>SoftMax и SoftArgMax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82638"/>
				<updated>2022-07-01T18:46:05Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Связь между вариациями SoftMax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SoftArgMax==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{arg{\text -}max}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства SoftArgMax===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max&amp;lt;/tex&amp;gt; {{---}} частный случай сигмоиды. &amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max\left(y, 0\right) = \sigma \left(y\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация SoftArgMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==SoftMax==&lt;br /&gt;
===Плохой SoftMax===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; {{---}} «плохой» в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший SoftMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями SoftMax==&lt;br /&gt;
Обозначим «плохой» &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для подсчёта, например, перекрёстной энтропии необходимо брать логарифм от вероятности &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt;. Последнее свойство позволяет вычислять производную от &amp;lt;tex&amp;gt;\log\left(p_{i}\right)&amp;lt;/tex&amp;gt;, когда &amp;lt;tex&amp;gt;p_{i} = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82637</id>
		<title>SoftMax и SoftArgMax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82637"/>
				<updated>2022-07-01T18:41:22Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Связь между вариациями SoftMax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SoftArgMax==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{arg{\text -}max}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства SoftArgMax===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max&amp;lt;/tex&amp;gt; {{---}} частный случай сигмоиды. &amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max\left(y, 0\right) = \sigma \left(y\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация SoftArgMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==SoftMax==&lt;br /&gt;
===Плохой SoftMax===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; {{---}} «плохой» в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший SoftMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями SoftMax==&lt;br /&gt;
Обозначим «плохой» &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Последнее свойство позволяет вычислять производную от &amp;lt;tex&amp;gt;\log\left(\right.soft{\text -}arg{\text -}max_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right)&amp;lt;/tex&amp;gt;, избегая сингулярности при делении на ноль.&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82636</id>
		<title>SoftMax и SoftArgMax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82636"/>
				<updated>2022-07-01T18:32:04Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Свойства SoftArgMax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SoftArgMax==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{arg{\text -}max}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства SoftArgMax===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max&amp;lt;/tex&amp;gt; {{---}} частный случай сигмоиды. &amp;lt;tex&amp;gt;soft{\text -}arg{\text -}max\left(y, 0\right) = \sigma \left(y\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация SoftArgMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==SoftMax==&lt;br /&gt;
===Плохой SoftMax===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; {{---}} «плохой» в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший SoftMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями SoftMax==&lt;br /&gt;
Обозначим «плохой» &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82635</id>
		<title>SoftMax и SoftArgMax</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=SoftMax_%D0%B8_SoftArgMax&amp;diff=82635"/>
				<updated>2022-07-01T18:28:38Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: Новая страница: «==SoftArgMax== ===Постановка задачи=== Пусть есть задача мягкой классификации:  Алгоритм выдает з…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SoftArgMax==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{arg{\text -}max}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства SoftArgMax===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация SoftArgMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==SoftMax==&lt;br /&gt;
===Плохой SoftMax===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; {{---}} «плохой» в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший SoftMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями SoftMax==&lt;br /&gt;
Обозначим «плохой» &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82634</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82634"/>
				<updated>2022-07-01T18:26:14Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SoftArgMax==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{arg{\text -}max}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства SoftArgMax===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация SoftArgMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==SoftMax==&lt;br /&gt;
===Плохой SoftMax===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; {{---}} «плохой» в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший SoftMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями SoftMax==&lt;br /&gt;
Обозначим «плохой» &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82633</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82633"/>
				<updated>2022-07-01T18:23:45Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SoftArgMax==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{arg{\text -}max}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства SoftArgMax===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация SoftArgMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==SoftMax==&lt;br /&gt;
===Плохой SoftMax===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|Плохой SoftMax (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|Хороший SoftMax (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший SoftMax===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями SoftMax==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82632</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82632"/>
				<updated>2022-07-01T17:31:24Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Soft-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{arg{\text -}max}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства Soft-Arg-Max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация Soft-Arg-Max===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82631</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82631"/>
				<updated>2022-07-01T16:57:22Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Soft-Arg-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{arg{\text -}max}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства Soft-Arg-Max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация Soft-Arg-Max===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82630</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82630"/>
				<updated>2022-07-01T16:55:06Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; такое название, так как это, по сути, гладкая аппроксимация модифицированного &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{arg{\text -}max}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt; как &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}&amp;lt;/tex&amp;gt;. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;, хотя вместо этого подразумевается &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}&amp;lt;/tex&amp;gt; является алгоритмом подсчёта весов для &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82629</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82629"/>
				<updated>2022-07-01T16:49:16Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Плохой Soft-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82628</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82628"/>
				<updated>2022-07-01T16:46:01Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Связь между вариациями Soft-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{bad{\text -}soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -\boldsymbol{\mathbf{soft{\text -}max}}\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82627</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82627"/>
				<updated>2022-07-01T16:42:51Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = \boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x - c,y-c,z-c\right )=\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}arg{\text -}max}}_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\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 .\boldsymbol{\mathbf{soft{\text -}max}}\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x+a,y+a,z+a\right ) =\boldsymbol{\mathbf{soft{\text -}max}}\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
&amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство &amp;lt;tex&amp;gt;\boldsymbol{\mathbf{soft{\text -}max}}\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82626</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82626"/>
				<updated>2022-07-01T16:32:54Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: Отмена правки 82615, сделанной Betson (обсуждение)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82625</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82625"/>
				<updated>2022-07-01T16:32:31Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: Отмена правки 82616, сделанной Betson (обсуждение)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p = \mathbf{softargmax}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82624</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82624"/>
				<updated>2022-07-01T16:31:54Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: Отмена правки 82617, сделанной Betson (обсуждение)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p = \mathbf{softargmax}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = softargmax\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82623</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82623"/>
				<updated>2022-07-01T16:31:29Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: Отмена правки 82618, сделанной Betson (обсуждение)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p = \mathbf{softargmax}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = softargmax\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;softargmax\left ( x - c,y-c,z-c\right )=softargmax\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82622</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82622"/>
				<updated>2022-07-01T16:30:56Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: Отмена правки 82619, сделанной Betson (обсуждение)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p = \mathbf{softargmax}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = softargmax\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;softargmax\left ( x - c,y-c,z-c\right )=softargmax\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathbf{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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;softmax\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;softmax\left ( x+a,y+a,z+a\right ) =soft-max\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82621</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82621"/>
				<updated>2022-07-01T16:29:08Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: Отмена правки 82620, сделанной Betson (обсуждение)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p = \mathbf{soft-arg-max}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = softargmax\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;softargmax\left ( x - c,y-c,z-c\right )=softargmax\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathbf{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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;softmax\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;softmax\left ( x+a,y+a,z+a\right ) =soft-max\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82620</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82620"/>
				<updated>2022-07-01T16:26:12Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p = \mathbf{soft{-}arg{-}max}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = softargmax\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;softargmax\left ( x - c,y-c,z-c\right )=softargmax\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathbf{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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;softmax\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;softmax\left ( x+a,y+a,z+a\right ) =soft-max\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82619</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82619"/>
				<updated>2022-07-01T16:25:48Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p = \mathbf{soft-arg-max}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = softargmax\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;softargmax\left ( x - c,y-c,z-c\right )=softargmax\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathbf{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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;softmax\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;softmax\left ( x+a,y+a,z+a\right ) =soft-max\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82618</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82618"/>
				<updated>2022-07-01T16:22:04Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Плохой Soft-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p = \mathbf{softargmax}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = softargmax\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;softargmax\left ( x - c,y-c,z-c\right )=softargmax\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathbf{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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;softmax\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;softmax\left ( x+a,y+a,z+a\right ) =soft-max\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82617</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82617"/>
				<updated>2022-07-01T16:20:42Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Свойства soft-arg-max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p = \mathbf{softargmax}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = softargmax\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*&amp;lt;tex&amp;gt;softargmax\left ( x - c,y-c,z-c\right )=softargmax\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82616</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82616"/>
				<updated>2022-07-01T16:19:51Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Soft-Arg-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p = \mathbf{softargmax}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = softargmax\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82615</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82615"/>
				<updated>2022-07-01T16:18:44Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Soft-Arg-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p = \mathbf{softargmax}\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82614</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82614"/>
				<updated>2022-07-01T16:00:17Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Связь между вариациями Soft-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82613</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82613"/>
				<updated>2022-07-01T15:55:14Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Постановка задачи */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, так как это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82612</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82612"/>
				<updated>2022-07-01T15:41:42Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Soft-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, т.к. это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Хороший Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82611</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82611"/>
				<updated>2022-07-01T15:36:10Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Soft-Arg-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У '''soft-arg-max''' такое название, т.к. это, по сути, гладкая аппроксимация модифицированного '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Плохой Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82610</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82610"/>
				<updated>2022-07-01T15:35:15Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Постановка задачи */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Название '''soft-arg-max''' связано с тем, что это гладкая аппроксимация '''arg-max'''.&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Плохой Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82609</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82609"/>
				<updated>2022-07-01T15:32:23Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Источники */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Плохой Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82608</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82608"/>
				<updated>2022-07-01T15:31:17Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Источники */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Плохой Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;br /&gt;
# [Лекция 7. Автоматическое дифференцирование и нейронные сети С. Муравьёв]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82607</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82607"/>
				<updated>2022-07-01T15:26:42Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Плохой Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;br /&gt;
==Источники==&lt;br /&gt;
# [https://www.youtube.com/watch?v=mlPNUbaphZA&amp;amp;ab_channel=MLLabITMO Лекция 7. Байесовские методы А. Забашта]&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82606</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82606"/>
				<updated>2022-07-01T15:24:30Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Хороший Soft-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Плохой Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняется свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82605</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82605"/>
				<updated>2022-07-01T15:24:08Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Плохой Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняет свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82604</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82604"/>
				<updated>2022-07-01T15:23:35Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|100px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|100px|thumb|рис.2 Плохой Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняет свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82603</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82603"/>
				<updated>2022-07-01T15:22:56Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Soft-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.2 Плохой Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняет свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82602</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82602"/>
				<updated>2022-07-01T15:22:44Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Плохой Soft-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен красным)]]&lt;br /&gt;
[[File:GoodSoftMax.png|200px|thumb|рис.1 Плохой Soft-Max (помечен оранжевым)]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняет свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:GoodSoftMax.png&amp;diff=82601</id>
		<title>Файл:GoodSoftMax.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:GoodSoftMax.png&amp;diff=82601"/>
				<updated>2022-07-01T15:22:06Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82600</id>
		<title>Soft-Max и Soft-Arg-Max</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=Soft-Max_%D0%B8_Soft-Arg-Max&amp;diff=82600"/>
				<updated>2022-07-01T15:20:56Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: /* Soft-Max */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soft-Arg-Max==&lt;br /&gt;
===Постановка задачи===&lt;br /&gt;
Пусть есть задача мягкой классификации:&lt;br /&gt;
&lt;br /&gt;
Алгоритм выдает значения &amp;lt;tex&amp;gt;L_{1}, L_{2},\ldots, L_{n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} число классов.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt; {{---}} уверенность алгоритма в том, что объект принадлежит классу &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;L_{i} \in \left [ -\infty, +\infty\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Для этих значений необходимо найти такие &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt;, что:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;p_{i} \in \left [ 0, 1\right ]&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\sum_{i}p_{i}=1&amp;lt;/tex&amp;gt;&lt;br /&gt;
То есть &amp;lt;tex&amp;gt;p_{1},\ldots,p_{n}&amp;lt;/tex&amp;gt; {{---}} распределение вероятностей&lt;br /&gt;
&lt;br /&gt;
Для этого выполним преобразование:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;p_{i} = \frac{\exp\left(L_{i}\right)}{\sum_{i}\exp\left(L_{i}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;L_{i} \leqslant L_{j} \implies p_{i} \leqslant p_{j}&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Модель &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, возвращающая &amp;lt;tex&amp;gt;L_{i}&amp;lt;/tex&amp;gt;, после преобразования будет возвращать &amp;lt;tex&amp;gt;p_{i}&amp;lt;/tex&amp;gt; и останется дифференцируемой&lt;br /&gt;
*&amp;lt;tex&amp;gt;p =&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( L \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;y = &amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x \right )&amp;lt;/tex&amp;gt;, тогда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\frac{\partial y_{i}}{\partial x_{j}} = \begin{cases}&lt;br /&gt;
 &amp;amp;y_{i}\left ( 1 - y_{j} \right ),~i = j \\ &lt;br /&gt;
 &amp;amp;-y_{i}\cdot y_{j},~~~~~~i \neq  j &lt;br /&gt;
\end{cases} = y_{i}\left ( I\left [ i = j \right ] - y_{j}\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Свойства soft-arg-max===&lt;br /&gt;
*Вычисляет по вектору чисел вектор с распределением вероятностей&lt;br /&gt;
*Можно интерпретировать как вероятность нахождения максимума в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-й координате&lt;br /&gt;
*'''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x - c,y-c,z-c\right )=&amp;lt;/tex&amp;gt; '''soft-arg-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Предыдущее свойство используют для устойчивости вычислений при &amp;lt;tex&amp;gt;c=max\left ( x,y,z \right )&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Модификация soft-arg-max===&lt;br /&gt;
'''soft-arg-max'''&amp;lt;tex&amp;gt;_{t}\left(x\right)=\frac{\exp\left(\frac{x_{i}}{t}\right)}{\sum\exp\left(\frac{x_{j}}{t}\right)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная модификация полезна, когда необходимо контролировать распределение вероятностей, получаемое '''soft-arg-max'''. Чем больше параметр &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;, тем больше получаемые вероятности будут похожи на равномерное распределение.&lt;br /&gt;
&lt;br /&gt;
==Soft-Max==&lt;br /&gt;
===Плохой Soft-Max===&lt;br /&gt;
[[File:BadSoftMax.png|300px|thumb|рис.1 Плохой Soft-Max]]&lt;br /&gt;
Зададим функцию '''soft-max''' таким образом:&lt;br /&gt;
&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\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 .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Гладкая аппроксимация максимума. Математическое ожидание или средневзвешенное, где веса {{---}} экспоненты значений соответствующих элементов. Сохраняет некоторые свойства максимума:&lt;br /&gt;
&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( a,a,a\right ) = a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*'''soft-max'''&amp;lt;tex&amp;gt;\left ( x+a,y+a,z+a\right ) =&amp;lt;/tex&amp;gt; '''soft-max'''&amp;lt;tex&amp;gt;\left ( x,y,z\right ) + a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заданный выше '''soft-max''' {{---}} &amp;quot;плохой&amp;quot; в связи с тем, что мы считаем средневзвешенное значение, которое всегда будет меньше максимума, что приведёт к проблемам с поиском максимума.&lt;br /&gt;
&lt;br /&gt;
===Хороший Soft-Max===&lt;br /&gt;
'''soft-max'''&amp;lt;tex&amp;gt;\left ( x_{1},\ldots,x_{n}\right ) = \log\left(\sum_{i}\exp\left(x_{i}\right)\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Не сохраняет свойство '''soft-max'''&amp;lt;tex&amp;gt;\left(a,a,a\right)=a&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Производная равна '''soft-arg-max'''&lt;br /&gt;
&lt;br /&gt;
В этом случае сохраняется монотонность, значит, не возникнет проблем с поиском минимума и максимума.&lt;br /&gt;
&lt;br /&gt;
==Связь между вариациями Soft-Max==&lt;br /&gt;
Обозначим &amp;quot;плохой&amp;quot; '''soft-max''' как '''bad-soft-max'''. Тогда:&lt;br /&gt;
&lt;br /&gt;
*'''bad-soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=\left \langle x,  \right .&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left . \left (x_{1},\ldots,x_{n} \right )  \right \rangle&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\nabla&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)=&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*&amp;lt;tex&amp;gt;\log\left(\right.&amp;lt;/tex&amp;gt;'''soft-arg-max'''&amp;lt;tex&amp;gt;_{i}\left(x_{1},\ldots,x_{n}\right)\left.\right) = x_{i} -&amp;lt;/tex&amp;gt;'''soft-max'''&amp;lt;tex&amp;gt;\left(x_{1},\ldots,x_{n}\right)&amp;lt;/tex&amp;gt;&lt;br /&gt;
==Примечания==&lt;br /&gt;
*В большинстве статей пишется '''soft-max''', хотя вместо этого подразумевается '''soft-arg-max'''&lt;br /&gt;
*'''soft-arg-max''' можно называть также как обобщённая (многомерная) сигмоида&lt;br /&gt;
*'''soft-arg-max''' является алгоритмом подсчёта весов для '''soft-max'''&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:BadSoftMax.png&amp;diff=82599</id>
		<title>Файл:BadSoftMax.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:BadSoftMax.png&amp;diff=82599"/>
				<updated>2022-07-01T15:20:43Z</updated>
		
		<summary type="html">&lt;p&gt;Betson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Betson</name></author>	</entry>

	</feed>