
Shampoo 옵티마이저 특집: 행렬의 구조를 보는 사전조건화의 예술
Adam은 파라미터를 개별 숫자로 본다. Shampoo는 가중치 '행렬'의 행과 열 구조를 본다 — 크로네커 분해로 2차 정보를 효율적으로 포착하면서, 뉴턴법의 정밀함과 1차 방법의 효율성 사이 최적점을 찾는다. Google 프로덕션에 배치되고, AlgoPerf 대회에서 우승하고, SOAP과 Muon으로 진화한 이 옵티마이저의 전 이야기.

Adam은 파라미터를 개별 숫자로 본다. Shampoo는 가중치 '행렬'의 행과 열 구조를 본다 — 크로네커 분해로 2차 정보를 효율적으로 포착하면서, 뉴턴법의 정밀함과 1차 방법의 효율성 사이 최적점을 찾는다. Google 프로덕션에 배치되고, AlgoPerf 대회에서 우승하고, SOAP과 Muon으로 진화한 이 옵티마이저의 전 이야기.

왜 이름이 Shampoo일까? 헤어케어에서 샴푸(shampoo)는 컨디셔너(conditioner) 전에 온다. 이 옵티마이저는 기울기를 사전조건화(preconditioning) 하는 것 — 즉, "프리컨디셔너" 다. 세련된 말장난이다.
핵심 아이디어는 단순하면서 강력하다. Adam은 가중치의 각 원소를 독립적으로 취급한다 — 행렬의 (i,j) 위치에 있는 숫자가 어떤 행, 어떤 열에 속하는지 무시한다. Shampoo는 가중치 행렬의 행과 열 구조를 보존하면서 사전조건화한다.
이것이 왜 중요한가? 행렬의 행은 출력 뉴런에 대응하고, 열은 입력 뉴런에 대응한다. 이 구조를 활용하면 기울기 공간의 곡률을 더 정확히 포착할 수 있다 — Adam의 대각 근사보다 훨씬 풍부하게.

m × n 가중치 행렬에 대해:
두 개의 작은 행렬의 크로네커 곱이 거대한 전체 사전조건화 행렬을 근사한다. 비유하자면: 도시 전체의 교통 흐름을 파악하기 위해 모든 교차로를 감시하는 대신, 각 도로의 동서 흐름과 남북 흐름만 따로 추적해도 상당히 정확한 그림을 얻는 것이다.
매 스텝 t에서 기울기 G_t (m × n)가 주어질 때:
-1/4 지수가 핵심이다. 전체 사전조건화 행렬은 (L ⊗ R)^{-1/2}이어야 하는데, 크로네커 곱의 성질에 의해 각 인자에 -1/4를 적용하면 동일한 효과를 얻는다.
| 속성 | Shampoo | K-FAC (Martens & Grosse, 2015) |
|---|---|---|
| 적용 범위 | 모든 텐서 최적화 | 신경망 레이어 구조에 특화 |
| 근사 대상 | 기울기 외적의 크로네커 분해 | 피셔 정보 행렬의 크로네커 분해 |
| 수렴 보장 | 볼록 경우 이론적 보장 있음 | 이론적 보장 없음 |
| 구현 | 범용적 | 활성화/기울기 통계에 의존 |
대규모 모델에 Shampoo를 적용하려면 행렬 역 p-차 근(matrix inverse p-th root) 계산이 병목이다. Google 팀은 5가지 혁신으로 이를 해결했다:
Google은 Shampoo를 검색 광고 CTR 모델에 프로덕션으로 배치했다. 2024년에는 Distributed Shampoo가 MLCommons AlgoPerf 대회에서 우승 — $25,000 상금과 함께, 비대각 사전조건화의 실용성을 공식적으로 입증했다.
Rohan Anil의 궤적이 특히 주목할 만하다. Scalable Shampoo의 주저자로서 대규모 옵티마이저 연구를 이끈 뒤, Google DeepMind의 Distinguished Engineer로서 Gemini 사전학습을 총괄했다. 2025년 1월 Anthropic으로 이적했다.
SOAP의 핵심 통찰: Shampoo(1/2 지수)는 Shampoo 사전조건화의 고유기저(eigenbasis)에서 Adafactor를 실행하는 것과 동치다.
결과: 360M~660M 언어 모델에서 AdamW 대비 반복 40%+ 감소, 벽시계 35%+ 향상. Shampoo 대비로도 ~20% 향상. 사전조건화 갱신 빈도에 대한 강건성도 Shampoo보다 우수하다.
NVIDIA NeMo가 SOAP을 공식 통합했다.
2024년, 번스타인과 뉴하우스(Bernstein & Newhouse) 의 "Old Optimizer, New Norm: An Anthology"가 결정적 연결을 밝혔다:
Shampoo에서 사전조건화 누적을 제거하면 = 스펙트럼 노름에서의 최급강하법
Muon (Keller Jordan, 2024년 10월)은 이 통찰에 기반한다:
Shampoo가 행렬 역제곱근(O(m³) SVD)을 사용하는 대신, Muon은 뉴턴-슐츠 반복(5차 다항식)으로 직교화한다 — bfloat16에서 안정적으로 동작하며 비용이 훨씬 낮다. NanoGPT 스피드런에서 AdamW 대비 35% 속도 향상.
| 계산 영역 | 최고 옵티마이저 |
|---|---|
| 1x~4x Chinchilla | Muon |
| 8x+ Chinchilla (과훈련) | SOAP, Kron |
그러나 중요한 단서: 규모가 커지면 이점이 줄어든다 — 0.1B에서 1.4배이던 것이 1.2B에서는 ~1.1배. 잘 튜닝된 AdamW/NAdamW도 큰 규모에서는 행렬 방법에 근접한다.
Shampoo의 가장 중요한 공헌은 구체적인 알고리즘이 아니라 패러다임의 전환이다.
2018년 이전, 딥러닝 최적화는 대각선의 세계였다. Adam, RMSProp, AdaGrad — 모두 파라미터를 독립적인 숫자로 취급했다. 가중치가 행렬이라는 사실, 그 행렬에 행과 열이라는 구조가 있다는 사실을 무시했다.
Shampoo는 이 구조를 보는 법을 가르쳤다. 크로네커 분해로 행과 열의 상관관계를 포착하면, 같은 기울기 정보에서 더 풍부한 곡률 추정을 얻을 수 있다.
이 아이디어는 이후 세 가지 방향으로 발전했다:
그리고 2025년의 결론: "가장 빠른 옵티마이저는 모두 행렬 사전조건화를 사용한다."
Adam이 아직 왕좌에 앉아 있지만, Shampoo가 개척한 행렬 사전조건화의 세계가 그 왕좌를 흔들고 있다. 다음 세대의 LLM을 학습시키는 것은, 대각선이 아니라 행렬을 보는 눈을 가진 옵티마이저일 수 있다.