İçeriğe geç

Position Encoding Neden Zorunlu? Sinusoidal vs Learned Absolute Position — Vaswani 2017'den GPT-2'ye Klasik Yaklaşımlar

Attention'ın permutation-invariance problemi: 'Köpek kediyi ısırdı' ile 'Kedi köpeği ısırdı' aynı! Position encoding'in zorunluluğu. Vaswani 2017 sinusoidal formülü (sin/cos farklı frequency'lerde), generalization argümanı (longer sequences). GPT-2 learned absolute position embedding, max_position_embeddings sınırı. Trade-offs, Türkçe sözdizimi için pratik anlamı.

Şükrü Yusuf KAYA
65 dakikalık okuma
İleri
Position Encoding Neden Zorunlu? Sinusoidal vs Learned Absolute Position — Vaswani 2017'den GPT-2'ye Klasik Yaklaşımlar
📍 Attention sıra bilmez — pozisyon bilgisi ayrı injected edilmeli
Vaswani 2017 transformer'ı tasarlarken bir 'eksik' fark etti: attention mekanizması permutation-invariant. 'Köpek kediyi ısırdı' ile 'Kediyi köpek ısırdı' aynı attention output verir — özne-yüklem-nesne sırası kaybolur. RNN'lerde sequential işlem doğal olarak position bilgisi taşıyor, ama paralel attention'da bu manuel injection gerekir. Çözüm: position encoding. Bu ders position encoding'in niye zorunlu olduğunu, Vaswani 2017'nin sinusoidal formülünün matematiksel anatomisini, GPT-2'nin learned absolute embedding'inin trade-off'larını, Türkçe sözdizimi için pratik anlamını ders boyunca derinlemesine işliyoruz. 65 dakika sonra: transformer'ın 'sıra problemi' ve 5 farklı çözüm yaklaşımının tarihsel evrimine hakim olacaksın.

Ders Haritası (10 Bölüm)#

  1. Permutation-invariance kanıtı — attention sıra bilmiyor (matematiksel)
  2. Bahdanau RNN attention — sıra niye eskiden sorun değildi
  3. Çözüm yaklaşımları — absolute vs relative, additive vs multiplicative
  4. Sinusoidal position (Vaswani 2017) — formül anatomi
  5. Niye sin + cos — geometric interpretation, frequency hierarchy
  6. Generalization argümanı — longer sequences extrapolation
  7. GPT-2 learned absolute — nn.Embedding(max_seq, d_model)
  8. max_position_embeddings sınırı — context window limit
  9. Sinusoidal vs Learned — empirical karşılaştırma
  10. Türkçe sözdizimi — SOV ile pratik etkileri

1. Permutation-Invariance — Matematiksel Kanıt#

1.1 Attention recap#

Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) V
Q, K, V matris şeklinde — her token bir satır.

1.2 Permutation operation#

P = permutation matrix (row sıralarını değiştir). Örnek:
P = [[0, 1, 0], [1, 0, 0], [0, 0, 1]] # Bu P, ilk iki satırı yer değiştirir.

1.3 Permuted input attention#

Q' = PQ K' = PK V' = PV
Attention output:
Attention(Q', K', V') = softmax(PQ (PK)^T / sqrt(d_k)) PV = softmax(PQ K^T P^T / sqrt(d_k)) PV = P softmax(QK^T / sqrt(d_k)) P^T PV = P softmax(QK^T / sqrt(d_k)) V [P^T P = I] = P Attention(Q, K, V)

1.4 Yorum#

Output da permute edildi. Yani input'u permute edince output da aynı şekilde permute oluyor.
Bu equivariance demek (permutation-equivariant), tam invariance değil. Ama sıra bilgisi içkin DEĞİL — herhangi bir token'ın output'u sadece set of tokens'a bağlı, sıraya değil.

1.5 Pratik etkisi#

'Köpek kediyi ısırdı' (sequence A) ve 'Kediyi köpek ısırdı' (sequence B):
  • Aynı tokens, farklı sıra
  • Attention output (each token's representation) yer değiştirilmiş — ama hala same set
  • Model özne-yüklem-nesne sıra ayrımı yapamaz

1.6 RNN niye sıra biliyordu#

h_t = f(h_{t-1}, x_t)
h_t önceki tüm input'lara sequential dependence. h_5 hesabı 5. token'da olur, h_3 hesabı 3. token'da. Sıra implicit.
Ama RNN'in dezavantajları (Modül 8.1): no parallelization, vanishing gradient.

1.7 Transformer'ın çözüm zorunluluğu#

Transformer parallel + attention-only. Permutation-equivariant. Sıra bilgisi explicitly injected edilmeli.
Position Encoding: her token'a 'ben i'inci pozisyondayım' bilgisi ekle.

4-5. Sinusoidal Position (Vaswani 2017)#

4.1 Formül#

PE(pos, 2i) = sin(pos / 10000^{2i/d_model}) PE(pos, 2i+1) = cos(pos / 10000^{2i/d_model})
pos = token position (0, 1, 2, ...) i = dimension index (0, 1, 2, ..., d_model/2 - 1)
Her position için d_model-dimensional vector.

4.2 İlk birkaç değer#

d_model=4 örnek:
  • pos=0: PE = [sin(0/1), cos(0/1), sin(0/100), cos(0/100)] = [0, 1, 0, 1]
  • pos=1: PE = [sin(1/1), cos(1/1), sin(1/100), cos(1/100)] = [0.84, 0.54, 0.01, 0.9999]
  • pos=2: PE = [sin(2/1), cos(2/1), sin(2/100), cos(2/100)] = [0.91, -0.42, 0.02, 0.9998]
Her dimension farklı frequency'de osilasyon yapıyor.

4.3 Frequency hierarchy#

Dimension i için:
frequency_i = 1 / 10000^{2i/d_model}
  • i=0: freq 1 (en hızlı, her token'da değişir)
  • i=d_model/2 - 1: freq 1/10000 (en yavaş, çok uzun period)
Bu, multi-scale temporal information. Aynı anda short-range (frequent) ve long-range (rare) pattern.
Fourier basis benzetmesi: her position d_model boyutlu Fourier representation'ı.

4.4 Sinusoidal + token embedding#

x = token_embedding(token_id) + sinusoidal_position(pos)
İki vector toplanır. Sonuç hem token kimliği hem pozisyon bilgisini içerir.

4.5 Niye sin + cos beraber#

Key property: relative position computability.
PE(pos + k) bir lineer fonksiyondur PE(pos)'tan k cinsinden: PE(pos+k) = R_k × PE(pos)
(R_k = rotation matrix depending on k.)
Yani modelin relative position'i çıkarması mümkün — sadece absolute değil.

4.6 Generalization argümanı#

Vaswani 2017 paper iddiası: sinusoidal extrapolation'a izin verir. Training'de 512 token görmüş model, inference'da 1024 token üzerinde çalışabilmeli (theoretically).
Gerçekte: zayıf extrapolation. Model training distribution dışında zorlanır. Daha sonra RoPE/ALiBi/YaRN daha iyi extrapolation sağladı.

4.7 Frequency choice (10000)#

Niye 10000 base? Empirical. Period spectrum 1 token ile 10000 × 2π token (≈63K) arası.
Daha sonra RoPE base = 10000 aynı, ama frequency adjust ile long context support.
python
import torch
import torch.nn as nn
import math
 
def sinusoidal_position_encoding(max_seq_len, d_model):
"""Vaswani 2017 sinusoidal position encoding."""
pe = torch.zeros(max_seq_len, d_model)
position = torch.arange(0, max_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
 
 
# Test
d_model = 512
max_seq = 1024
pe = sinusoidal_position_encoding(max_seq, d_model)
print(f"Shape: {pe.shape}") # [1024, 512]
print(f"PE[0]: {pe[0][:8]}")
print(f"PE[1]: {pe[1][:8]}")
print(f"PE[100]: {pe[100][:8]}")
 
# Inner product (relative position decay)
print(f"\nInner products with PE[10]:")
for offset in [0, 1, 5, 50, 500]:
sim = (pe[10] * pe[10 + offset]).sum() / 512
print(f" offset={offset}: {sim.item():.4f}")
 
# Visualize: heatmap of position encoding
import matplotlib.pyplot as plt
plt.figure(figsize=(15, 5))
plt.imshow(pe.numpy(), cmap='RdBu_r', aspect='auto')
plt.xlabel('Dimension')
plt.ylabel('Position')
plt.title('Sinusoidal Position Encoding')
plt.colorbar()
# plt.savefig('pe-heatmap.png')
Sinusoidal position encoding — Vaswani 2017 formula

7-8. GPT-2 Learned Absolute Position#

7.1 GPT-2 yaklaşımı#

Vaswani'nin sinusoidal'ı yerine: learnable parameters.
class GPT2Position(nn.Module): def __init__(self, max_seq_len, d_model): super().__init__() self.pos_emb = nn.Embedding(max_seq_len, d_model) def forward(self, token_emb, position_ids): return token_emb + self.pos_emb(position_ids)
Her pozisyon için ayrı d_model-dim vector. Random init, training'de öğrenilir.

7.2 max_position_embeddings sınırı#

GPT-2: max_position_embeddings = 1024. GPT-3: 2048. GPT-4 (initial): 8192. Llama-2: 4096.
Bu hard limit — model bu sayıdan fazla pozisyon görmedi, ekstrapolasyon güvenilmez.

7.3 Trade-offs#

Avantajlar (learned):
  • Esnek — model 'optimal' position pattern öğrenir
  • Specific corpus patterns yakalanabilir
Dezavantajlar (learned):
  • Max sequence length sabit (extending = re-training)
  • Extrapolation imkansız
  • Extra parameters (max_seq × d_model = milyonlar)
Avantajlar (sinusoidal):
  • No parameters
  • Theoretically extrapolation
Dezavantajlar (sinusoidal):
  • Less flexible
  • Empirik extrapolation zayıf

7.4 Empirical karşılaştırma#

Vaswani 2017 paper: sinusoidal ve learned comparable quality. Sinusoidal slight edge — extrapolation potential.
Ama 2018-2020 GPT/BERT learned tercih etti — implementation simpler, empirical OK.

7.5 Modern era (2022+)#

İkisi de bırakıldı. Modern modeller (Llama-3, Mistral, GPT-4): RoPE (Rotary Position Embedding, Ders 9.2).
RoPE:
  • Relative position info
  • Better long-context extrapolation
  • Attention'da inject (embedding'e eklenmez)
Klasik (sinusoidal + learned) tarihsel önem taşıyor. Modern modellerde nadir.

10. Türkçe Sözdizimi — SOV Pratik Etkileri#

10.1 Türkçe SOV#

Türkçe Subject-Object-Verb sözdizimi:
'Köpek kediyi ısırdı' = [Köpek (S)] [kediyi (O)] [ısırdı (V)]
İngilizce SVO:
'The dog bit the cat' = [The dog (S)] [bit (V)] [the cat (O)]

10.2 Position bilgisi Türkçe için kritik#

Türkçe'de yüklem cümlenin sonuna geliyor. Position encoding modelin 'yüklem geliyor' bilgisini taşıması için kritik.
Kötü position encoding:
  • 'Köpek kediyi ısırdı' ve 'Köpeği kedi ısırdı' anlamca farklı
  • Sıra olmadan model ikisini ayırt edemez

10.3 Türkçe'nin avantajı#

Türkçe morfolojik dil — durum ekleri (i-tamlama, e-yönelme, de-bulunma) sözdizimi'ne ek bilgi katar:
  • 'Köpeki kediye ısırdı' — durum ekleri özne/nesne ayrımı korur
  • Word order daha esnek (free word order'a yakın)
Ama model yine de pozisyon bilgisinden faydalanır — biased order tipik.

10.4 Llama-3 Türkçe ile position encoding#

Llama-3 RoPE kullanır (Ders 9.2). Türkçe için optimal — relative position bilgisi morfoloji ile uyumlu çalışır.
Production Türkçe LLM:
  • Llama-3 base (RoPE) fine-tune Türkçe: pozisyon bilgisi korunur
  • Custom Türkçe model: RoPE önerilir

10.5 Long Türkçe sentences#

Türkçe agglutinative — bir cümle 5-10 kelimeden çok daha uzun olabilir. Long context (8K+) support kritik. RoPE + YaRN-style scaling Türkçe için pratik.
✅ Ders 9.1 Özeti — Position Encoding Temelleri
Attention permutation-equivariant — sıra bilgisi içkin değil. Position encoding zorunlu. Sinusoidal (Vaswani 2017): sin/cos farklı frequency'lerde, no parameters, theoretical extrapolation. Learned absolute (GPT-2): nn.Embedding(max_seq, d_model), parameter cost, max_seq hard limit. İkisi de modern era'da bırakıldı — RoPE yerini aldı. Türkçe SOV sözdizimi için position bilgisi kritik, morfoloji avantaj sağlar. Ders 9.2'de RoPE'in matematik anatomisine geçeceğiz.

Sıradaki Ders: RoPE Derinlemesine#

Ders 9.2: Rotary Position Embedding (Su 2021) matematiksel anatomi, kompleks sayı rotation interpretation, Llama-3 implementation, niye 'rotary', relative position implicit how.

Sık Sorulan Sorular

Çalışır ama 'bag of words' modeli olur. Set-of-tokens semantic capture eder ama order ignore. Bazı tasks (basit classification) hâlâ acceptable. Sequence-sensitive tasks (translation, summarization, code) için critical.

Yorumlar & Soru-Cevap

(0)
Yorum yazmak için giriş yap.
Yorumlar yükleniyor...

İlgili İçerikler