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

Afledte ord

1

Kilder

1