Encoding Posisi

term_id: positional_encoding

Category: basic_concepts

Definition

Karena transformer memproses semua token secara paralel daripada secara berurutan seperti RNN, model ini tidak memiliki pengetahuan bawaan tentang urutan token. Encoding posisi menambahkan vektor spesifik ke embedding input untuk memberikan konteks urutan kepada model.

Summary

Sebuah teknik yang menyuntikkan informasi mengenai posisi relatif atau absolut token dalam sebuah urutan ke dalam model transformer.

Key Concepts

  • Urutan Sekuens
  • Perhatian Diri (Self-Attention)
  • Fungsi Sinusoidal
  • Embedding Token

Use Cases

  • Terjemahan Mesin
  • Ringkasan Teks
  • Pemodelan Bahasa

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)