Top-p sampling
En stokastisk dekodningsstrategi, hvor næste token vælges fra et sæt af tokens med kumulativ sandsynlighed over en grænse p.
Kort fortalt
Vælg fra de mest sandsynlige tokens, der tilsammen har en given sandsynlighedsdækning.
- Kategori
- teknik
- Niveau
- øvet
Betydninger
1- 1
En dekodningsmetode for sprogmodeller, hvor man vælger det mindste sæt af tokens, hvis kumulative sandsynlighed overstiger tærsklen p, og herefter sampler fra dette sæt efter renormalisering.
- Med top-p sampling sat til 0.9, vælger modellen kun de tokens, der tilsammen udgør 90% af sandsynlighedsmassen.
Hvornår bruges det
Bruges i tekstgenerering med sprogmodeller til at kontrollere kreativitet og variation, ofte kombineret med temperaturparameter. Top-p sampling forhindrer trivielle eller gentagne output ved at begrænse antallet af kandidater dynamisk.
Kodeeksempel
import torch
def top_p_sampling(logits, p):
probs = torch.softmax(logits, dim=-1)
sorted_probs, sorted_indices = torch.sort(probs, descending=True)
cumsum = torch.cumsum(sorted_probs, dim=-1)
mask = cumsum - sorted_probs > p # exclude tokens exceeding cumulative threshold
sorted_probs[mask] = 0.0
sorted_probs = sorted_probs / sorted_probs.sum() # renormalize
next_token = torch.multinomial(sorted_probs, 1)
return sorted_indices.gather(-1, next_token)Eksempel på implementering af top-p sampling i PyTorch. Logits omdannes til sandsynligheder, sorteres, og kumulative sum beregnes. Tokens med kumulativ sandsynlighed over p nulstilles, og der samples fra det renormaliserede sæt.
Oprindelse
Introduceret i 2019 af Holtzman et al. i artiklen 'The Curious Case of Neural Text Degeneration' som 'nucleus sampling'. Betegnelsen 'top-p' henviser til tærsklen for den kumulative sandsynlighedsmasse.