beam search decoding

Beam search er en afkodningsstrategi, der til hvert tidspunkt holder styr på de k mest sandsynlige sekvenser (beams) og udvælger den endelige sekvens med højest samlet sandsynlighed.

Kort fortalt

Beam search er en smartere måde at generere tekst på, hvor man ikke bare vælger det mest sandsynlige ord hver gang, men holder flere muligheder åbne for at finde en bedre samlet sætning.

Kategori
teknik
Niveau
øvet

Betydninger

1
  1. 1

    En afkodningsalgoritme for autoregressive sekvensmodeller, hvor man ved hvert tidskridt bevarer de k sekvenser med højest samlet log-sandsynlighed, og til sidst vælger den sekvens med højest sandsynlighed.

    • Ved maskinoversættelse bruges beam search med k = 5 til at generere den mest sandsynlige oversættelse.common practice
    • Beam search kan kombineres med længdenormalisering for at undgå bias mod korte sætninger.common practice

Hvornår bruges det

Beam search bruges primært i sekvensgenereringsmodeller som sprogmodeller, maskinoversættelse og billedtekstgenerering. Beam-width k (typisk 1-10) balancerer kvalitet og beregningstid: større k giver bedre resultater men er langsommere.

Kodeeksempel

def beam_search(model, start_token, k=5, max_len=50):
    beams = [(start_token, 0.0)]  # (sequence, log_prob)
    for _ in range(max_len):
        candidates = []
        for seq, score in beams:
            if seq[-1] == stop_token:
                candidates.append((seq, score))
                continue
            probs = model.predict_next(seq)
            for token, prob in probs.items():
                candidates.append((seq + [token], score + math.log(prob)))
        beams = sorted(candidates, key=lambda x: x[1], reverse=True)[:k]
    return beams[0][0]

En simpel implementation af beam search til en autoregressiv model med en forudsigelsesfunktion predict_next.

Oprindelse

Termen 'beam search' kommer fra kunstig intelligens og søgealgoritmer. 'Beam' (stråle) refererer til, at man kun ser på et smalt sæt af lovende stier gennem søgerummet.

Afledte ord

2

Kilder

2
  • Sequence to Sequence Learning with Neural Networks (2014)
  • Attention Is All You Need (2017)