beam width

Beam width er en hyperparameter i beam search, der bestemmer antallet af mest sandsynlige sekvenser, der bevares ved hvert dekodningstrin.

Kort fortalt

Beam width bestemmer, hvor mange mulige oversættelser eller sætninger modellen overvejer samtidig, før den vælger den bedste.

Kategori
teknik
Niveau
øvet

Betydninger

1
  1. 1

    Hyperparameter i beam search, angivet som et heltal, der begrænser antallet af kandidatsekvenser, der ekspanderes i hvert trin.

    • En beam width på 5 betyder, at modellen holder styr på de 5 bedste delvise oversættelser.typisk brug i NLP

Hvornår bruges det

Beam width bruges i sekvensgenereringsopgaver som maskinoversættelse, tekstopsummering og talegenkendelse. En større beam width fører typisk til bedre resultater men kræver mere beregning.

Kodeeksempel

def beam_search(model, start, beam_width=3, max_len=10):
    sequences = [[start]]
    scores = [0.0]
    for _ in range(max_len):
        all_candidates = []
        for seq, score in zip(sequences, scores):
            prob = model.predict(seq)
            for next_token, next_prob in enumerate(prob[-1]):
                candidate = seq + [next_token]
                all_candidates.append((candidate, score + math.log(next_prob)))
        ordered = sorted(all_candidates, key=lambda x: x[1], reverse=True)
        sequences, scores = zip(*ordered[:beam_width])
    return sequences[0]

Simpel implementering af beam search med beam width som parameter.

Oprindelse

Udtrykket stammer fra beam search, der metaforisk forestiller sig en 'stråle' (beam) af mulige sekvenser. 'Width' refererer til bredden af denne stråle.

Kilder

2
  • Speech and Language Processing (3rd ed. draft) – Jurafsky & Martin
  • Attention Is All You Need – Vaswani et al., 2017