ai.vostman.fi
← Tekoälysanasto

Tekoälyn tietosanakirja

Top-k ja top-p: mistä tokeneista arvotaan

Kielimalli pisteyttää sanastonsa seuraavaa tokenia varten. Otanta (sampling) arpoo tokenin todennäköisyysjakaumasta sen sijaan, että valitsisi aina suurimman pisteen. Top-k ja top-p rajaavat arvontaan osallistuvat ehdokkaat.

Top-k-otanta (top-k sampling) säilyttää kiinteän määrän parhaiten pisteytettyjä tokeneita. Asetuksella k = 2 ehdokkaita jää kaksi riippumatta mallin varmuudesta.

Top-p-otanta (top-p sampling) eli ydinotanta (nucleus sampling) säilyttää pienimmän joukon todennäköisimpiä tokeneita, joiden yhteenlaskettu todennäköisyys saavuttaa rajan. Kun p = 0.8, jakaumasta 0.85, 0.08, 0.04, 0.03 jää ensimmäinen token. Jakaumasta 0.4, 0.3, 0.2, 0.1 jää kolme, yhteensä 0,9. Rajan ylittävä token täytyy ottaa mukaan.

Top-k säilyttää A:n ja B:n molemmista jakaumista. Top-p rajalla 0,8 säilyttää keskittyneestä jakaumasta A:n ja tasaisemmasta A:n, B:n ja C:n.

Suodatus mallin pisteille

Tämä NumPy-funktio ottaa yhden tokeniennusteen pistevektorin ja palauttaa sanaston tokenitunnisteen. Se rajaa ensin top-k-joukon, jos se on annettu, ja soveltaa top-p-rajaa jäljelle jäävän joukon normalisoituun jakaumaan. Anna rng:ksi NumPyn satunnaislukugeneraattori. Kelvolliset asetukset ovat top_k >= 1 ja 0 < top_p <= 1.

import numpy as np

def sample_token(logits, rng, top_k=None, top_p=1.0):
    ids = np.argsort(logits)[::-1]
    if top_k is not None:
        ids = ids[:top_k]
    probabilities = np.exp(logits[ids] - logits[ids].max())
    probabilities /= probabilities.sum()
    before = np.r_[0.0, np.cumsum(probabilities)[:-1]]
    keep = before < top_p
    ids, probabilities = ids[keep], probabilities[keep]
    probabilities /= probabilities.sum()
    return int(rng.choice(ids, p=probabilities))

Säilyneet todennäköisyydet normalisoidaan vielä ennen arvontaa. Poistetulla ehdokkaalla ei ole tällä askeleella mahdollisuutta tulla valituksi, vaikka malli antoi sille alun perin todennäköisyyden.

Lämpötila (temperature) muokkaa monissa toteutuksissa jakaumaa ennen suodatusta. Top-k ja top-p poistavat ehdokkaita. Asetukset vaikuttavat vaihteluun ja toistoon, mutta eivät tarkista jatkon tosiasiallista oikeellisuutta.

Lähteet