Codifica Posizionale

term_id: positional_encoding

Category: basic_concepts

Definition

Poiché i transformer elaborano tutti i token in parallelo anziché in sequenza come le RNN, non possiedono una conoscenza intrinseca dell’ordine dei token. La codifica posizionale aggiunge vettori specifici agli embedding di input per preservare l’ordine sequenziale.

Summary

Una tecnica che inietta informazioni sulla posizione relativa o assoluta dei token in una sequenza nei modelli transformer.

Key Concepts

  • Ordine della Sequenza
  • Auto-Attenzione
  • Funzioni Senoidali
  • Embedding dei Token

Use Cases

  • Traduzione Automatica
  • Riassunto del Testo
  • Modellazione Linguistica

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)