Grokking
그로킹은 일반화가 지연되는 현상입니다. 네트워크가 초기에 학습 데이터에 맞춰진 뒤 여러 단계가 지나면 검증 정확도가 우연 수준에서 거의 완벽한 수준으로 급상승합니다.
그로킹은 지연된 일반화 현상입니다. 신경망은 학습 데이터에서 이른 시점에 정확도 100%에 도달하지만, 오랫동안 검증 데이터에서 우연 수준의 성능에 머뭅니다. 그런 다음 과적합된 것처럼 보인 뒤에도 한참이 지나서야 갑자기 일반화합니다. OpenAI의 Power 등(2022)은 모듈러 산술과 같은 알고리즘 작업으로 소형 트랜스포머를 학습시키는 동안 이 현상을 발견하고 이름을 붙였습니다. 학습 정확도가 이미 포화된 후에도 검증 정확도가 무작위 수준에서 완벽한 수준으로 상승했습니다. 이 용어는 Robert Heinlein의 소설 Stranger in a Strange Land에서 유래했으며, grok은 어떤 것을 완전히 이해한다는 뜻입니다.
그로킹이 진행되는 과정#
모듈러 덧셈은 대표적인 그로킹 작업입니다. 네트워크에는 (a, b) 쌍이 입력되고 (a + b) mod p를 출력해야 하며, 전체 쌍 중 일부만 학습에 사용할 수 있습니다. 아래 실행 예제는 PyTorch의 AdamW 옵티마이저를 사용해 p = 97인 9,409개 쌍 중 30%로 소형 다층 퍼셉트론을 학습하며, CPU에서 1분 이내에 완료됩니다:
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에서 학습 정확도는 이미 1.00이지만 검증 정확도는 0.00입니다. 이후 검증 정확도는 단계 8,000에서 0.16, 단계 12,000에서 0.54, 단계 16,000에서 0.84, 단계 20,000에서 0.97로 상승합니다. weight_decay=0.0을 사용하면 같은 실행에서도 20,000단계 내내 검증 정확도가 0.00에 머뭅니다.
Nanda 등(2023)은 모듈러 덧셈으로 학습한 1계층 트랜스포머를 역공학하여 성능 정체를 설명했습니다. 네트워크는 이산 푸리에 특성과 삼각 항등식을 사용하여 덧셈을 원 위의 회전으로 바꾸는 방법을 학습합니다. 학습은 암기, 회로 형성, 정리의 세 가지 연속 단계로 진행됩니다. 일반화 회로는 점진적으로 성장하는 동안 검증 정확도는 정체되어 있으며, 가중치 감쇠가 여전히 출력을 지배하는 암기된 해법을 제거할 때 성능이 급상승합니다.
그로킹이 발생하는 요인#
- 정규화: 원래 실험에서 가장 효과적인 개입은 가중치 감쇠였으며, 위 실행에서는 가중치 감쇠 없이는 전혀 일반화되지 않습니다.
- 데이터 세트 크기: 학습에 사용하는 데이터 비율이 낮을수록 일반화 전에 훨씬 더 많은 최적화가 필요하며, 특정 임계값 아래에서는 실용적인 학습 예산 내에 일반화되지 않습니다.
- 가중치 노름: Omnigrok은 일반화된 해법의 가중치 노름이 암기된 해법보다 작다는 점에서 그로킹을 가중치 크기와 연결합니다. 저자들은 큰 초기 가중치에서 시작해 이미지, 언어, 분자 작업에서 그로킹을 유도했으며, 가중치 노름을 제한해 알고리즘 작업에서 그로킹을 제거했습니다.
- 수치 안정성: Prieto 등(2025)은 정규화가 없으면 교차 엔트로피 학습에서 로짓이 계속 커지다가 소프트맥스의 부동소수점 오류로 학습이 멈추며, 이를 Softmax Collapse라고 설명했습니다. 이들의 StableMax 활성화 함수와 ⊥Grad 옵티마이저는 가중치 감쇠 없이 그로킹을 일으킵니다.
그로킹과 관련 개념 비교#
- 과적합: 학습 성능과 검증 성능 간의 격차가 유지되거나 커지는 현상입니다. 그로킹에서는 학습을 계속하면 격차가 저절로 줄어듭니다.
- 이중 하강: 모델 크기나 학습 시간이 증가함에 따라 테스트 오류가 감소하고, 증가한 다음, 다시 감소합니다. 에포크별 이중 하강은 지연된 개선의 또 다른 형태로, 학습 도중 테스트 오류가 한동안 증가하다가 다시 감소합니다.
- 메커니즘 해석 가능성: 학습된 네트워크 내부 알고리즘을 연구하는 분야입니다. 모듈러 산술에서 나타나는 그로킹은 학습된 알고리즘을 완전히 읽어낼 수 있어 주요 사례 연구 중 하나가 되었습니다.
실무에서의 그로킹#
그로킹은 하나의 정확한 규칙으로 정의되는 소규모 알고리즘 데이터 세트에서 가장 명확하게 나타납니다. 그로킹 실행은 검증 지표가 더 이상 개선되지 않으면 중단하는 조기 종료로 인해 정체 구간 중간에 끝날 수 있으므로, 실험 설계에서도 중요합니다. Ultralytics YOLO 학습은 기본적으로 검증 적합도가 개선되지 않는 에포크인 patience 에포크가 지나면 중단되며, patience=0이면 매 에포크마다 실행됩니다.










