Top-k Sampling
Top-k Sampling wybiera kolejny token przez losowanie spośród 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 :
| Token | Przed filtrowaniem | Po filtrowaniu i normalizacji |
|---|---|---|
| A | 0,50 | 0,625 |
| B | 0,30 | 0,375 |
| C | 0,15 | 0 |
| D | 0,05 | 0 |
A i B miały łącznie prawdopodobieństwo 0,80. Dzielimy przez tę sumę: i . Losowanie nadal może wskazać B. Przy i jednoznacznym maksimum wybieramy zawsze najwyżej oceniony token.
Stałe 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.