Jednoduché vysvětlení funkce Softmax

Funkce Softmax mění libovolné reálné hodnoty na pravděpodobnosti, které jsou často užitečné ve strojovém učení. Matematika, která se za ní skrývá, je poměrně jednoduchá: jsou dána nějaká čísla,

  1. zvyšte e (matematickou konstantu) na mocninu každého z těchto čísel.
  2. Sečtěte všechny exponenciály (mocniny eee). Tento výsledek je jmenovatel.
  3. Použijte exponenciálu každého čísla jako jeho čitatele.
  4. Pravděpodobnost=ČíselníkJmenovatel\text{Pravděpodobnost} = \frac{\text{Číselník}}{\text{Jmenovatel}}Pravděpodobnost=ČíselníkJmenovatel.

Přehledněji napsáno, Softmax provádí následující transformaci na nnn čísel x1…xnx_1 \ldots x_nx1…xn:

s(xi)=exi∑j=1nexjs(x_i) = \frac{e^{x_i}}{\sum_{j=1}^n e^{x_j}}s(xi)=∑j=1nexjexi

Výstupy transformace Softmax jsou vždy v rozsahu a sčítají se do 1. Tvoří tedy pravděpodobnostní rozdělení.

Jednoduchý příklad

Řekněme, že máme čísla -1, 0, 3 a 5. Jaké jsou jejich hodnoty? Nejprve vypočítáme jmenovatele:

Jmenovatel=e-1+e0+e3+e5=169,87\begin{aligned}\text{Jmenovatel} &= e^{-1} + e^0 + e^3 + e^5 \\&= \boxed{169,87} \\\\end{zarovnáno}Denominátor=e-1+e0+e3+e5=169,87

Poté můžeme vypočítat čitatele a pravděpodobnosti:

xxx Čitatel (exe^xex) Pravděpodobnost (ex169.87\frac{e^x}{169.87}169.87ex)
-1 0.368 0.002
0 1 0.006
3 20.09 0.118
5 148,41 0,874

Čím větší je xxx, tím vyšší je jeho pravděpodobnost. Všimněte si také, že všechny pravděpodobnosti se sčítají do 1, jak již bylo zmíněno.

Implementace Softmax v Pythonu

Při použití numpy je to velmi snadné:

import numpy as npdef softmax(xs): return np.exp(xs) / sum(np.exp(xs))xs = np.array()print(softmax(xs)) # 
np.exp() zvýší e na mocninu každého prvku ve vstupním poli.

Poznámka: pokročilejší uživatelé to pravděpodobně budou chtít implementovat pomocí triku LogSumExp, aby se vyhnuli problémům s přetečením/podtečením.

Proč je Softmax užitečný?“

Představte si, že sestavujete neuronovou síť, která odpovídá na otázku:

Běžný návrh této neuronové sítě by měl na výstupu 2 reálná čísla, z nichž jedno by představovalo psa a druhé kočku, a na tyto hodnoty by se aplikoval Softmax. Řekněme například, že výstupem sítě bude :

Zvíře xxx exe^xex Pravděpodobnost
Pes -1 0. V takovém případě by bylo možné, aby síť vycházela ze dvou čísel.368 0,047
Kočka 2 7,39 0,953

To znamená, že naše síť má 95,3% jistotu, že na obrázku je kočka. Softmax nám umožňuje odpovídat na klasifikační otázky pomocí pravděpodobností, které jsou užitečnější než jednodušší odpovědi (např. binární ano/ne)

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.