ai.vostman.fi
← Tekoälysanasto

Tekoälyn tietosanakirja

Softmax: kilpailevista pisteistä todennäköisyyksiksi

Softmax muuntaa reaaliarvoisen pistevektorin positiivisiksi arvoiksi, joiden summa on yksi. Kielimallissa pisteet ovat sanaston logitteja (logits). Softmax muodostaa niistä jakauman, josta otanta voi valita seuraavan tokenin.

Kunkin tokenin todennäköisyys on sen pisteen eksponentti jaettuna kaikkien eksponenttien summalla. Yhteinen nimittäjä saa pisteet kilpailemaan: yhden pisteen nostaminen pienentää muiden todennäköisyyksiä.

Logitit 0 ja 0,69 tai 5 ja 5,69 tuottavat samat pyöristetyt todennäköisyydet 0,33 ja 0,67. Yhteisen vakion lisääminen säilyttää softmaxin.

Laske vakaasti

Tämä NumPy-funktio ottaa yhden logittivektorin. Suurimman pisteen vähentäminen ennen eksponenttifunktiota säilyttää tuloksen ja välttää suurten positiivisten lukujen aiheuttaman ylivuodon.

import numpy as np

def softmax(logits):
    shifted = logits - np.max(logits)
    weights = np.exp(shifted)
    return weights / weights.sum()

Saman vakion lisääminen jokaiseen pisteeseen ei muuta todennäköisyyksiä. Pisteiden erot ratkaisevat. Kahdelle ehdokkaalle noin 0,69 pisteen ero antaa todennäköisyyssuhteeksi kaksi yhteen; noin 2,30 pisteen ero antaa suhteeksi kymmenen yhteen.

Lämpötila (temperature) jakaa pisteet ennen softmaxia. Pienempi lämpötila korostaa piste-eroja ja suurempi pienentää niitä. Se muuttaa jakaumaa kouluttamatta uusia painoja.

Jakauma ei tarkista tosiasioita

Suuri seuraavan tokenin todennäköisyys tarkoittaa, että malli suosii sitä nykyisessä kontekstissa. Se ei osoita syntyvän väitteen olevan tosi.

Koulutuksessa logitit ja ristientropia yhdistetään usein numeerisesti vakaalla kirjasto-operaatiolla. Jos rajapinta odottaa logitteja, softmaxin tekeminen ensin muuttaa sen syötettä ja voi tuottaa väärän tavoitefunktion. Todennäköisyysnäkymä palvelee generointia; koulutusrajapinta määrää sille annettavan esityksen.

Lähteet