Grokking
Grokking, genellemenin gecikmeli gerçekleşmesidir: Bir ağ önce eğitim kümesine uyum sağlar, ardından çok sayıda adım sonra doğruluk kümesindeki başarısı şans düzeyinden neredeyse kusursuz düzeye sıçrar.
Grokking, gecikmeli genellemedir: Bir sinir ağı, eğitim verilerinde erkenden kusursuz doğruluğa ulaşır, doğrulama verilerinde uzun süre şans düzeyinde kalır ve aşırı uyum sağlamış gibi göründükten epey sonra aniden genelleme yapar. OpenAI'den Power ve çalışma arkadaşları (2022), modüler aritmetik gibi algoritmik görevlerde küçük transformer'ları eğitirken gördükleri bu etkiye adını verdi: eğitim doğruluğu doygunluğa ulaşmışken doğrulama doğruluğu rastgele tahmin düzeyinden kusursuzluğa yükseldi. Sözcük, Robert Heinlein'ın Stranger in a Strange Land romanından gelir; romanda "grok", bir şeyi bütünüyle anlamak demektir.
Grokking Nasıl Gerçekleşir?#
Modüler toplama, grokking'in klasik görevidir: Ağ, (a, b) çiftlerini görür ve tüm çiftlerin yalnızca bir bölümüyle eğitilirken (a + b) mod p değerini tahmin etmelidir. Aşağıdaki çalışma, p = 97 için 9.409 çiftin %30'u üzerinde PyTorch'un AdamW iyileştiricisiyle küçük bir çok katmanlı algılayıcıyı eğitir ve bir CPU'da bir dakikadan kısa sürede tamamlanır:
import torch
import torch.nn.functional as F
torch.manual_seed(0)
p = 97 # task: predict (a + b) mod 97 from one-hot encodings of a and b
a, b = torch.cartesian_prod(torch.arange(p), torch.arange(p)).T
x, y = torch.cat([F.one_hot(a, p), F.one_hot(b, p)], dim=1).float(), (a + b) % p
idx = torch.randperm(p * p)
train, val = idx[: p * p * 3 // 10], idx[p * p * 3 // 10 :] # train on 30% of all pairs
model = torch.nn.Sequential(torch.nn.Linear(2 * p, 256), torch.nn.ReLU(), torch.nn.Linear(256, p))
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1.0) # strong weight decay
for step in range(1, 20001):
loss = F.cross_entropy(model(x[train]), y[train])
optimizer.zero_grad()
loss.backward()
optimizer.step()
if step % 4000 == 0:
train_acc, val_acc = [(model(x[i]).argmax(1) == y[i]).float().mean().item() for i in (train, val)]
print(f"step {step:5d}: train accuracy {train_acc:.2f}, validation accuracy {val_acc:.2f}")4.000. adımda eğitim doğruluğu zaten 1,00 iken doğrulama doğruluğu 0,00'dır. Doğrulama doğruluğu 8.000. adımda 0,16'ya, 12.000. adımda 0,54'e, 16.000. adımda 0,84'e ve 20.000. adımda 0,97'ye yükselir. weight_decay=0.0 ile aynı çalışma, 20.000 adımın tamamında doğrulama doğruluğunu 0,00 düzeyinde tutar.
Nanda ve çalışma arkadaşları (2023), modüler toplama üzerinde eğitilmiş tek katmanlı bir transformer'ın iç işleyişini tersine mühendislikle inceleyerek bu yatay seyri açıkladı. Ağ, ayrık Fourier özellikleri ve trigonometrik özdeşlikler kullanarak toplamayı bir çember etrafında dönmeye dönüştürmeyi öğrenir. Eğitim üç kesintisiz aşamaya ayrılır: ezberleme, devre oluşturma ve arındırma. Genelleme yapan devre yavaş yavaş büyürken doğrulama doğruluğu sabit kalır; ağırlık azalmasının çıktılara hâlâ hâkim olan ezberlenmiş çözümü ortadan kaldırmasıyla sıçrama gerçekleşir.
Grokking'e Ne Yol Açar?#
- Düzenlileştirme: İlk deneylerde en etkili müdahale ağırlık azalmasıydı; yukarıdaki çalışma bu olmadan hiç genelleme yapmıyor.
- Veri kümesi boyutu: Eğitim verisinin daha küçük bir bölümüyle genelleme yapmadan önce çok daha fazla optimizasyon gerekir; belirli bir eşiğin altında ağ, uygulanabilir bir bütçe içinde hiç genelleme yapmaz.
- Ağırlık normu: Omnigrok, genelleme yapan çözümlerin ağırlık normu ezberleyen çözümlerinkinden daha küçük olduğu için grokking'i ağırlıkların büyüklüğüyle ilişkilendirir. Yazarlar, büyük başlangıç ağırlıklarından yola çıkarak görüntü, dil ve molekül görevlerinde grokking'i ortaya çıkardı; ağırlık normunu kısıtlayarak da algoritmik görevlerde grokking'i ortadan kaldırdı.
- Sayısal kararlılık: Prieto ve çalışma arkadaşları (2025), düzenlileştirme olmadığında çapraz entropi eğitiminin, softmax'taki kayan nokta hataları öğrenmeyi durdurana dek logit'leri ölçeklendirmeyi sürdürdüğünü buldu; bu olaya Softmax Çökmesi adını verdiler. StableMax aktivasyonları ve ⊥Grad iyileştiricisi, ağırlık azalması olmadan grokking sağlar.
Grokking ve İlgili Kavramlar#
- Aşırı uyum: Eğitim ve doğrulama performansı arasındaki, süren veya büyüyen farktır. Grokking'de bu fark, eğitim devam ettikçe kendiliğinden kapanır.
- Çift iniş: Model boyutu veya eğitim süresi arttıkça test hatası düşer, yükselir ve yeniden düşer. Dönem bazında çift iniş, test hatasının eğitim sırasında bir süre yükselip sonra yeniden düştüğü başka bir gecikmeli iyileşme biçimidir.
- Mekanik yorumlanabilirlik: Eğitilmiş ağların içindeki algoritmaların incelenmesidir. Modüler aritmetikteki grokking, öğrenilen algoritmanın bütünüyle okunabilmesi sayesinde bu alanın başlıca vaka çalışmalarından biri hâline geldi.
Grokking'i Uygulamada Kullanma#
Grokking, tek ve kesin bir kuralla yönetilen küçük algoritmik veri kümelerinde en açık biçimde görülür. Deney tasarımı açısından da önemlidir; çünkü erken durdurma, doğrulama metriği iyileşmeyi bıraktığında çalışmayı sonlandırır ve grokking çalışmasını yatay seyir sırasında keser. Ultralytics YOLO eğitimi, varsayılan olarak 100 olan patience dönem boyunca doğrulama uygunluğu iyileşmediğinde durur ve patience=0 olduğunda her dönemi çalıştırır.










