Positiecodering

term_id: positional_encoding

Category: basic_concepts

Definition

Aangezien transformers alle tokens parallel verwerken in plaats van sequentieel zoals RNN’s, ontbreekt hen de inherente kennis van de volgorde van tokens. Positiecodering voegt specifieke vectoren toe aan de invoerembeddings om de positie-informatie te behouden.

Summary

Een techniek die informatie over de relatieve of absolute positie van tokens in een sequentie injecteert in transformermodellen.

Key Concepts

  • Sequentievolgorde
  • Zelf-attention
  • Sinusoïdale functies
  • Token-embeddings

Use Cases

  • Maskinevertaling
  • Tekstsamenvatting
  • Taalmodellering

Code Example

1
2
3
4
5
6
7
8
9
import torch
import math
def get_positional_encoding(seq_len, d_model):
    pe = torch.zeros(seq_len, d_model)
    position = torch.arange(0, seq_len, dtype=torch.float).unsqueeze(1)
    div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model))
    pe[:, 0::2] = torch.sin(position * div_term)
    pe[:, 1::2] = torch.cos(position * div_term)
    return pe.unsqueeze(0)