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ä.

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.