Back to archive
#ai#llm#glossary#aigen

Top-k Sampling

Top-k Sampling wybiera kolejny token przez losowanie spośród kk kandydatów o najwyższych prawdopodobieństwach. Pozostałe tokeny zostają wykluczone, a prawdopodobieństwa zachowanych kandydatów przeskalowane tak, żeby ponownie sumowały się do jedności. W Autoregressive Language Modeling taki wybór powtarza się po każdym dopisanym tokenie.

Praktyczna implementacja może filtrować logity jeszcze przed Softmax: odrzuconym pozycjom przypisuje ujemną nieskończoność. Wtedy po normalizacji ich prawdopodobieństwo wynosi zero. Ten mechanizm opisuje dokumentacja Transformers: TopKLogitsWarper.

Dwóch kandydatów nie oznacza równych szans

Własny przykład dla k=2k=2:

TokenPrzed filtrowaniemPo filtrowaniu i normalizacji
A0,500,625
B0,300,375
C0,150
D0,050

A i B miały łącznie prawdopodobieństwo 0,80. Dzielimy przez tę sumę: 0,50/0,80=0,6250{,}50/0{,}80=0{,}625 i 0,30/0,80=0,3750{,}30/0{,}80=0{,}375. Losowanie nadal może wskazać B. Przy k=1k=1 i jednoznacznym maksimum wybieramy zawsze najwyżej oceniony token.

Stałe kk kontroluje liczbę kandydatów, nie ich łączne prawdopodobieństwo przed odcięciem. Dwie zachowane pozycje mogą skupiać niemal cały rozkład albo tylko jego niewielką część. Top-p Sampling dobiera granicę według sumy prawdopodobieństw. Temperature zmienia proporcje szans; samo dodatnie skalowanie nie zmienia kolejności skończonych logitów.

Przy remisach warto sprawdzić implementację. Kod Transformers 5.17.0 usuwa wyniki ściśle niższe od wyniku k-tego kandydata. Może więc zachować także dodatkowe tokeny z taką samą wartością na granicy. Przykład w tabeli nie zawiera remisów.