Normalizáló Lab a softmax és rokonai

A normalizálás a nyers pontszámokat olyan alakra hozza, amellyel jól lehet dolgozni: például úgy, hogy az összegük 1 legyen, vagy hogy a vektor hossza 1 legyen. A softmax is normalizálás. Ez az oldal azt mutatja meg, miben más két egyszerűbb rokona, az L1 és az L2 normalizálás, és miért nem használják őket logitokra. A softmaxról részletesen a Softmax Lab szól.

1. A pontszámok (közös mindhárom módszerhez)

Itt állítod be a pontszámokat. Az alatta lévő három módszer mindegyike ugyanezekből a számokból számol, ezért közvetlenül összehasonlíthatók. A két külön csúszka az összes pontszámra egyszerre hat: az eltolás mindegyikhez hozzáad egy számot, a szorzás mindegyiket megszorozza. A módszerek érzékenysége ezekre árulja el a legtöbbet.

A módszerek bemenete: x = k·z + c = –

2. L1 normalizálás

Minden pontszámot elosztunk az abszolút értékeik összegével:

$$p_i=\frac{x_i}{\sum_j |x_j|}$$

Az abszolút értékek összege mindig 1 lesz, de a pi értékek összege csak akkor, ha minden pontszám nemnegatív. Ezért az L1 normalizálás ott használható jól, ahol a számok eleve nemnegatívak (például számlálók, hisztogramok). A logitok viszont lehetnek negatívak, és akkor az eredmény negatív „valószínűséget” is tartalmazhat. Az oszlopok a 0-tól indulnak: jobbra a pozitív, balra a negatív érték.

3. L2 normalizálás

Minden pontszámot elosztunk a pontszámok „hosszával”, vagyis a négyzetösszegük gyökével:

$$p_i=\frac{x_i}{\sqrt{\sum_j x_j^2}}$$

Itt nem az összeg lesz 1, hanem a négyzetösszeg (Σpi² = 1): az eredmény egységnyi hosszú vektor. Az L2 az irányt őrzi meg, a nagyságot eldobja, ezért például hasonlóságméréshez használják: két egységnyi vektor szorzata a köztük lévő szög koszinusza. Valószínűség-eloszlásnak nem való: az összege általában nem 1, és lehet negatív.

4. Softmax

$$p_i=\frac{e^{x_i}}{\sum_j e^{x_j}}$$

Ez a Softmax Lab témája (hőmérséklet, entrópia, mintavétel, tanítás); itt csak az eredményét nézzük ugyanazokra a pontszámokra. A softmax mindig érvényes eloszlást ad: minden elem pozitív, az összeg 1.

Miért pont az exponenciális függvény?

  • Mindig pozitív: az ex minden x-re pozitív, ezért a negatív logit sem okoz gondot, és nincs nullával osztás sem.
  • Az eltolásra érzéketlen: ex+c = ec·ex, és az ec a törtben kiesik. Csak a pontszámok különbsége számít. A gyakorlatban ezért vonják ki a legnagyobb pontszámot mindegyikből, hogy az ex ne csorduljon túl; az eredmény ugyanaz.
  • A különbségeket arányokká alakítja: ha egy elem pontszáma 1-gyel nagyobb a másikénál, a súlya mindig e ≈ 2,72-szeres. A pontszám tehát a „log-súly”.
  • Szorzásra érzékeny, ez jó: az ×k szorzás pontosan a hőmérséklet szerepét játssza (T = 1/k): élesít vagy simít. Az L1-nél és az L2-nél ilyen szabályzó nincs.
  • Egyszerű a deriváltja: tanításnál a veszteség deriváltja (p − y), lásd a Softmax Lab 6. kártyáját.

5. Összehasonlítás az aktuális pontszámokra

A tábla az éppen beállított pontszámokra számol, ezért változhat: például negatív pontszámnál az L1 elveszti az „összege 1” tulajdonságot. Az érzéketlenségi sorokban az oldal elvégzi a próbát (+1 hozzáadása, ×2 szorzás), és összeveti az eredményt az eredetivel.

TulajdonságL1L2Softmax

6. Még egy rokon: a sparsemax

A témakörhöz tartozik a sparsemax is (Martins és Astudillo, 2016, „From Softmax to Sparsemax”). A softmaxhoz hasonlóan 1 összegű eloszlást ad, de a kis pontszámokhoz pontosan 0%-ot rendel, vagyis a kimenete „ritka”. Nem azonos a top-p szűréssel: az a már kiszámolt softmax-valószínűségeket vágja le mintavételkor, a sparsemax maga a normalizálás. Ezen az oldalon csak megemlítjük, nincs hozzá interaktív rész.