Codificación Posicional

term_id: positional_encoding

Category: basic_concepts

Definition

Dado que los transformadores procesan todos los tokens en paralelo en lugar de secuencialmente como las RNN, carecen de conocimiento inherente sobre el orden de los tokens. La codificación posicional añade vectores específicos a las incrustaciones de entrada para preservar esta información de orden.

Summary

Una técnica que inyecta información sobre la posición relativa o absoluta de los tokens en una secuencia dentro de los modelos transformadores.

Key Concepts

  • Orden de la Secuencia
  • Autoatención
  • Funciones Senoidales
  • Incrustaciones de Tokens

Use Cases

  • Traducción Automática
  • Resumen de Textos
  • Modelado del Lenguaje

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)