sinusoidal 인코딩의 가장 단순한 대안: token embedding처럼 위치별 embedding을 처음부터 학습. embedding 행렬 shape (max_seq_len × d_model). 위치 0은 자기 행, 위치 1은 자기 행, 등.
BERT랑 GPT-2가 이걸 써. 구현 간단, 학습 중 예측 가능한 동작, sinusoidal로는 못 잡는 위치 의존 패턴 잡을 수 있어(예: "위치 0은 항상 [CLS] 토큰 차지하니까 그 embedding이 특화 가능"). 비용: max_seq_len × d_model 파라미터 추가, 그리고 — 결정적으로 — max_seq_len 너머 외삽 불가. max_seq_len=1024로 학습된 모델은 위치 1500에 대한 embedding이 없어.
이 하드 캡 때문에 BERT(max 512)랑 GPT-2(max 1024)가 시대 대비 짧은 컨텍스트 가졌던 거야. 더 긴 컨텍스트 얻으려면 (a) 처음부터 긴 시퀀스로 사전학습, (b) 위치 embedding을 사후 보간하고 fine-tune("Position Interpolation" 기법), (c) 다른 위치 인코딩으로 통째 갈아치우기. 모던 LLM은 (c)를 골랐어.