기술 노트 · 2026-09
Chandra et al.(NeurIPS 2022, Gradient Descent: The Ultimate Optimizer)은 hyperoptimizer를 재귀적으로 쌓은 tower가 "arbitrarily tall"하게 쌓을 수 있고, 높을수록 "increasingly robust"하다고 보고했다. 이 노트는 그 tower의 깊이 한계를 소규모 실험으로 조사한 결과를 정리한다. 결과는 SGD tower에 한정된다. Adam tower로는 옮겨 가지 않았으며, 이 부정적 결과도 함께 적는다.
- SGD tower는 약 3층에서 포화한다. 그보다 깊이 쌓아도 결과가 달라지지 않는다.
- SGD tower의 발산은 tower를 만들기 전에 가를 수 있다. 일반 SGD로 학습할 때 연속 gradient의
내적
C = g_t · g_(t-1)을 재고, 그 꼬리 크기 q(|C|의 99분위수)가 1보다 작으면 발산하지 않았다. - meta learning rate는 발산 여부가 아니라 발산이 시작되는 깊이를 옮긴다.
- 이 결과들은 Adam tower로 옮겨 가지 않는다. Adam tower는 포화하지 않고 깊어질수록 나빠지며, 발산도 q로 예측되지 않는다.
- tower: 가장 아래 레벨이 모델 가중치를 학습하고, 각 상위 레벨이 바로 아래 레벨의 학습률을 학습한다. 레벨 사이의 연결은 Chandra et al.의 방식대로 한 step 안에서만 미분한다(이전 step과는 detach).
- depth D는 학습되는 학습률의 개수다. Chandra et al.의 "height-D"와 같다. D = 0은 학습률이 고정된 일반 optimizer다.
- 구현: 저자들의 공식 패키지(
gradient-descent-the-ultimate-optimizer)와 궤적을 대조했고 float64에서 오차가 정확히 0이었다. 그러므로 아래 결과는 축약본이 아니라 실제 tower에 대한 것이다. - 과제: MNIST MLP(784–h–10, tanh)와 CIFAR-10 소형 tanh CNN(약 25k 파라미터). 모두 1 epoch의 짧은 학습이다(대부분 313 step).
- 발산: test loss가 10을 넘거나 NaN이면 발산으로 센다. 표의 평균 loss는 발산하지 않은 run만의 평균이다.
- 표의 X/Y는 "발산한 run 수 / 전체 run 수"다.
MNIST MLP(h64), 학습 20,000개, test 10,000개, meta LR 1e-2, 초기 학습률 5개(0.001–0.2) × seed 3개 = 깊이당 15 run.
| D | 평균 test loss | 평균 정확도 | 최상위 레벨 |H| 중앙값 | 초기 학습률 민감도(loss SD) | 발산 |
|---|---|---|---|---|---|
| 0 | 0.931182 | 76.21% | – | 0.721574 | 0/15 |
| 1 | 0.338729 | 90.51% | 5.8e-2 | 0.011228 | 0/15 |
| 2 | 0.346023 | 90.52% | 2.2e-3 | 0.009997 | 0/15 |
| 3 | 0.348060 | 90.48% | 4.4e-6 | 0.011119 | 0/15 |
| 4 | 0.348065 | 90.48% | 1.5e-11 | 0.011123 | 0/15 |
| 5 | 0.348065 | 90.48% | 2.1e-22 | 0.011123 | 0/15 |
CIFAR-10 소형 CNN, 학습 20,000개, test 2,000개, meta LR 1e-4, 같은 15 run 구성.
| D | 평균 test loss | 평균 정확도 | 최상위 레벨 |H| 중앙값 | 초기 학습률 민감도 | 발산 |
|---|---|---|---|---|---|
| 0 | 1.713052 | 39.96% | – | 0.251402 | 0/15 |
| 1 | 1.623544 | 43.17% | 4.8e-1 | 0.161342 | 0/15 |
| 2 | 1.624290 | 43.35% | 8.9e-2 | 0.062979 | 0/15 |
| 3 | 1.669560 | 41.97% | 7.1e-3 | 0.087484 | 2/15 |
| 4 | 1.681993 | 41.36% | 3.5e-5 | – | 10/15 |
| 5 | 1.682080 | 41.29% | 1.2e-9 | – | 10/15 |
- 두 과제 모두 최고 성능은 1–2층이다. 3층 위로는 loss와 정확도가 소수점 넷째 자리 안에서 같다.
- Chandra et al.이 쓰는 지표인 초기 학습률 민감도도 같은 지점에서 멈춘다. 다만 이 표의 초기 학습률 범위와 학습 길이는 Chandra et al.의 설정과 다르다.
- CIFAR에서는 깊을수록 발산이 늘어난다. MNIST용 meta LR 1e-2를 그대로 쓰면 CIFAR의 발산은 D1–D4에서 0/15, 11/15, 15/15, 15/15였다.
SGD tower에서 레벨 D의 hypergradient는 연속 gradient 내적 C를 거듭제곱해 곱한 꼴이다.
그 차수는 2^(D-1)로 깊이마다 두 배가 된다. 위 표의 |H| 열에서 각 값이 대략 앞 값의 제곱인 것이 그 흔적이다.
- |C| < 1인 일반적인 경우: 깊은 레벨의 신호가 두 배 차수로 줄어든다. 3–4층이면 사실상 0이 되어 더 위의 레벨은 아무것도 바꾸지 못한다. 이것이 포화다.
- |C| > 1인 순간이 있으면: 같은 거듭제곱이 그 순간을 증폭한다. 깊을수록 증폭이 커서 tower가 발산한다.
이 설명은 정성적이다. 핵심 항등식은 로그를 취하면 자명하며, 이 위에 세우려던 정량 공식은 모두 실패했다(아래 참조).
레벨별로 hypergradient를 자신의 크기 추정(EMA)으로 나눠 깊은 레벨을 훨씬 크게 움직여 보았다. 정규화 강도 α = 0.5에서 D5의 학습률 총변동은 원래 tower의 약 10^6배였다. MNIST, 학습 5,000개, seed 10개, 같은 seed끼리 짝지은 차이다.
| 비교 | 평균 loss 차이 | 95% CI |
|---|---|---|
| 최적 D5 − 최적 D4 | +0.000001 | [−0.000000, +0.000002] |
| 최적 D4 − 최적 D3 | +0.000079 | [−0.000074, +0.000236] |
깊은 레벨이 움직여도 3층 이상의 결과는 서로 구별되지 않았다. 정규화 강도는 같은 데이터에서 골랐으므로 절대 성능 수치에는 낙관 편향이 있다. 이 비교는 D3–D5 사이의 차이만 본다.
tower를 만들기 전에 일반 SGD(D = 0)로 한 번 학습하면서 q를 잰다. 같은 MNIST 안에서 모델 폭, 배치 크기, 입력 스케일이라는 서로 다른 조작으로 q를 움직였다. base LR 0.05, meta = outer LR 1e-2, 313 step, seed 3개. 예측은 depth 1 이상을 돌리기 전에 문서로 적어 두었다.
1차 (예측 8/8 적중)
| 설정 | q | 파라미터 | 예측 | D1 | D2 | D3 | D4 | D5 |
|---|---|---|---|---|---|---|---|---|
| h64 b64 | 0.47 | 50k | 안전 | 0/3 | 0/3 | 0/3 | 0/3 | 0/3 |
| h512 b64 | 0.62 | 407k | 안전 | 0/3 | 0/3 | 0/3 | 0/3 | 0/3 |
| h2048 b64 | 0.94 | 1.6M | 안전 | 0/3 | 0/3 | 0/3 | 0/3 | 0/3 |
| h64 b64, 입력 ×3 | 1.43 | 50k | 발산 | 0/3 | 0/3 | 1/3 | 1/3 | 1/3 |
| h8192 b64 | 1.65 | 6.4M | 발산 | 0/3 | 3/3 | 3/3 | 3/3 | 3/3 |
| h64 b64, 입력 ×5 | 1.66 | 50k | 발산 | 0/3 | 1/3 | 3/3 | 3/3 | 3/3 |
| h64 b8 | 1.67 | 50k | 발산 | 0/3 | 1/3 | 3/3 | 3/3 | 2/3 |
| h2048 b8 | 3.57 | 1.6M | 발산 | 0/3 | 3/3 | 3/3 | 3/3 | 3/3 |
발산 여부는 모델 크기나 배치 크기를 따르지 않았다. 1.6M 파라미터(q = 0.94)는 안전했고 50k 파라미터(q = 1.43)는 발산했다.
2차: 임계값 1 부근 탐색 (예측 4개 중 3개 적중, D1–D7)
| 설정 | q | 예측 | 발산 (D1–D7 합계) |
|---|---|---|---|
| h64 b64, 입력 ×1.5 | 0.77 | 없음 | 0/21 ✅ |
| h64 b64, 입력 ×2 | 0.99 | 없음 | 0/21 ✅ |
| h64 b64, 입력 ×2.5 | 1.26 | 1건 이상 | seed 하나가 D3–D7에서 발산 ✅ |
| h4096 b64 | 1.27 | 1건 이상 | 0/21 ❌ |
정리하면 다음과 같다.
- q < 1이면 안전하다. 검증한 모든 설정에서 성립했다. q = 0.99인 설정도 7층까지 안전했다.
- q가 약 1.6 이상이면 깊이에 따라 발산한다.
- 1 < q < 1.6에서는 설정과 seed에 따라 갈린다. 1은 날카로운 임계값이 아니다.
최상위 learning rate(outer LR)가 지나치게 크면 q와 무관한 별개의 불안정이 생긴다. h64 b64(q = 0.47), meta = outer = r × base, seed 3개의 D1 발산이다.
| outer LR | base 0.05 | base 0.1 |
|---|---|---|
| 0.25 | 0/3 | – |
| 0.35 | 0/3 | – |
| 0.5 | 0/3 | 0/3 |
| 0.7 | – | 1/3 |
| 1.0 | 3/3 | 3/3 |
| 2.0 | – | 3/3 |
경계는 base 대비 비율이 아니라 outer LR의 절대 크기(0.5와 0.7 사이)에 있었다. 학습률 궤적을 보면 초기 base 값은 약 10 step 안에 잊히고, 학습률이 음수까지 진동한다. 이 상한은 이 문제(MNIST MLP)에 한정된 값이며 q로 예측할 수 없다. 따라서 "q < 1이면 안전하다"는 이 상한 아래에서만 성립한다.
h64 b8(q = 1.67), meta = outer LR을 바꿨다. 각 칸은 seed 하나의 D1…D5이고 X는 발산이다. 예측은 사전에 적었다.
| meta LR | seed 0 | seed 1 | seed 2 |
|---|---|---|---|
| 1 | XXXXX | XXXXX | XXXXX |
| 1e-1 | .XXXX | XXXXX | .XXXX |
| 1e-2 | ..XX. | ..XXX | .XXXX |
| 1e-3 | ..... | ....X | ...XX |
| 1e-4 | ..... | ..... | ...XX |
| 1e-5 | ..... | ..... | ....X |
meta LR을 줄이면 첫 발산 깊이가 깊어지기만 했다(15개 전이 모두 단조). seed 2는 1e-5에서도 D5에서 발산했다. q = 0.47인 h64 b64는 meta LR 1에서 D1만 3/3 발산했고(위의 절대 상한), 1e-1 이하에서는 발산이 없었다.
Chandra et al.의 주력 설정은 Adam tower다. 공식 구현으로 Adam(α=1e-3) 위에 hyper Adam(초기 α = h)을
D개 쌓았다. MNIST, 313 step, seed 3개, test 2,000개.
1차 (설정 3개). 칸은 평균 test loss이고, 괄호는 발산 수다.
| 설정 (q) | h | D0 | D1 | D2 | D3 | D4 |
|---|---|---|---|---|---|---|
| h64 b64 (0.47) | 1e-3 | 0.396 | 0.272 | 0.366 | 0.513 | 0.618 |
| h64 b64 | 1e-4 | 0.396 | 0.289 | 0.281 | 0.355 | 0.478 |
| h64 b8 (1.67) | 1e-3 | 0.554 | 0.501 | 0.678 | 0.817 (1/3) | 0.862 (2/3) |
| h64 b8 | 1e-4 | 0.554 | 0.492 | 0.444 | 0.687 | 0.820 |
| h2048 b8 (3.57) | 1e-3 | 0.597 | 0.729 | (3/3) | 0.805 (2/3) | (3/3) |
| h2048 b8 | 1e-4 | 0.597 | 0.562 | 2.179 | 0.710 (2/3) | (3/3) |
- 포화하지 않고 깊어질수록 나빠진다. h64 b64에서 같은 seed의 D4 − D3 평균은 +0.106(h = 1e-3), +0.123(h = 1e-4)이었다. Adam은 업데이트를 정규화하므로 hypergradient가 작아져도 상위 레벨이 계속 아래 레벨을 움직이는 것으로 보인다(사후 해석).
- 처음에는 Adam의 정규화 때문에 레벨마다 제곱으로 줄어드는 감쇠가 사라질 것으로 예측했다. 일부 설정에서는 틀렸다.
h64 b64 D4의 레벨별 |H| 중앙값은 0.044, 2.5e-4, 1.1e-7, 9.2e-14로 여전히 제곱에 가깝게 줄었다.
Adam의 정규화 인자
m̂/√v̂는 신호 대 잡음비라서 잡음이 지배적이면 작아지기 때문이다. - 이 표에서는 q가 높은 설정만 발산했다. 이 패턴이 우연인지 보려고 새 설정 4개로 예측을 적은 뒤 검증했다.
2차: 표본 외 검증 (예측 4개 중 2개 적중). 칸은 깊이별 발산 수이며 h 두 값을 합쳤다.
| 설정 | q | 예측 | D0 | D1 | D2 | D3 | D4 | 판정 |
|---|---|---|---|---|---|---|---|---|
| h2048 b64 | 0.94 | 발산 없음 | 0/3 | 0/6 | 0/6 | 0/6 | 4/6 | ❌ |
| h64 b64, 입력 ×2 | 0.99 | 발산 없음 | 0/3 | 0/6 | 0/6 | 0/6 | 0/6 | ✅ |
| h8192 b64 | 1.65 | D3–4가 D0–1보다 많음 | 0/3 | 0/6 | 2/6 | 4/6 | 4/6 | ✅ |
| h64 b64, 입력 ×5 | 1.66 | D3–4가 D0–1보다 많음 | 0/3 | 0/6 | 0/6 | 0/6 | 0/6 | ❌ |
미리 정한 규칙(넷 다 맞아야 확장)에 따라 q 기준은 Adam tower로 옮겨 가지 않는다고 판정했다.
- 동역학이 혼돈적이다. 같은 초기 가중치에서 CPU와 GPU의 반올림 차이(1e-16)가 약 40 step마다 1000배씩 자라, step 312에서 loss 상대오차가 28%가 되었다. 단일 run의 최종 loss는 하드웨어만 바꿔도 달라진다. 의미 있는 것은 여러 seed에 걸친 통계뿐이다. h2048 b64 D4의 발산 4건은 CPU와 GPU에서 똑같이 나왔다.
측정하지 않은 것: Chandra et al.이 말한 robustness는 나쁜 초기 학습률에 대한 둔감성이다. Adam tower에서는 좋은 초기값(α = 1e-3)에서의 성능만 쟀다. 따라서 Adam tower에 대한 그들의 주장을 반박하지 않는다.
결과를 보기 전에 예측과 판정 기준을 적은 검증만 모았다.
| 검증 | 적중 | 결과 |
|---|---|---|
| q로 SGD 발산 예측 (설정 8개) | 8/8 | 채택 |
| 임계값 1 부근 탐색 | 3/4 | "q < 1 안전"만 유지, 날카로운 임계값은 폐기 |
| meta LR 스윕: 발산 시점을 옮긴다 / q만으로 여부가 정해진다 | 1/2 | 시점은 채택, "q만으로"는 폐기 |
| meta/base 비율 경계 | 0/2 | 비율 조건 폐기, 절대 상한으로 대체 |
| Adam tower 1차 (제곱 없음 / q 무관 / 포화 약화) | 1/3 | 포화 약화만 적중 |
| Adam tower 표본 외 q 검증 | 2/4 | q 기준은 SGD 한정 |
과정에서 세웠다가 검증에 실패한 주장을 남긴다.
- 깊을수록 좋다 → 최고 성능은 1–2층이었다.
- 레벨별 정규화를 새 방법으로 제안 → Baydin et al.(ICLR 2018)에 이미 있다.
- CIFAR에서의 발산이 새로운 현상 → Chandra et al.이 이미 언급했다.
- 발산 깊이의 정량 공식, 날카로운 임계값 1, meta learning rate가 상쇄된다는 유도, meta/base 비율 조건 → 모두 실험으로 반박됐다.
- q 기준이 optimizer와 무관하다 → Adam에서 반박됐다.
- 과제가 작고 학습이 짧다(MNIST, CIFAR-10 소형 CNN, 1 epoch). 긴 학습이나 큰 모델에서 유지되는지는 모른다.
- seed가 대부분 3개다. 특히 Adam tower처럼 혼돈적인 영역에서는 얇다.
- 모든 레벨이 스칼라 학습률 하나를 공유하는 tower만 보았다.
- q의 1–1.6 구간과 outer LR 상한은 설정마다 따로 확인해야 한다.
- 선행연구 조사는 광범위했지만 전수 조사는 아니다. 특히 bilevel·multilevel 최적화 이론 문헌은 따로 보지 않았다. 가장 가까운 선행 관찰은 "연속 gradient의 정렬 상승이 학습 붕괴에 선행한다"는 보고(GAC, arXiv 2603.01501)로, 설정과 목적이 다르다.
코드는 code/에, 결과를 보기 전에 적은 예측은 preregistration/에 있다.
사전등록 문서는 이 저장소를 만들기 전에 로컬에서 작성했으므로, git 기록만으로는 작성 시점을 증명하지 못한다.
PREREGISTRATION_ADAM.md에는 예측 뒤에 결과가 이어서 적혀 있다.
cd code
pip install -r requirements.txt
python semantic_check.py # autograd와 closed-form hypergradient 대조
python independent_check.py # 복소 스텝 수치미분으로 독립 검증
python chandra_check.py # 공식 gdtuo 구현과 궤적 대조표별 명령은 다음과 같다. MNIST와 CIFAR-10은 code/data/에 자동으로 내려받는다. 결과 1의 세 표는 실행 인자를
따로 저장하지 않았으므로, 결과 파일에 남은 설정(학습 개수, step 수, seed, 학습률)에서 명령을 복원했다.
| 표 | 명령 |
|---|---|
| 결과 1 MNIST | python grid_experiment.py --train-limit 20000 --test-limit 10000 --output results_grid_20k 후 python analyze_grid.py --input results_grid_20k/summary.json |
| 결과 1 CIFAR | python cifar_experiment.py --train-limit 20000 --meta-lr 1e-4 --outer-lr 1e-4 후 analyze_grid.py로 집계 |
| 결과 1 정규화 | python grid_experiment.py(상수 gain 원본) 후 python rescale_experiment.py --normalizer ema --seeds 0 1 2 3 4 5 6 7 8 9, python analyze_rescale.py --inputs <결과 폴더> |
| 결과 2 1차 | python alignment_regime_experiment.py |
| 결과 2 2차 | python alignment_regime_experiment.py --only scale1.5 scale2 scale2.5 huge --depths 0 1 2 3 4 5 6 7 |
| 결과 2 outer LR | python alignment_regime_experiment.py --only base --depths 1 2 3 --base-lr B --meta-lr M --outer-lr M (M = r × B) |
| 결과 3 | python alignment_regime_experiment.py --only base small --depths 1 2 3 4 5 --meta-lr M --outer-lr M |
| 결과 4 1차 | python adam_tower_experiment.py |
| 결과 4 2차 | python adam_tower_experiment.py --only wider scale2 widest scale5 --device cuda |
모든 실험은 float64로 돈다. Adam tower는 혼돈적이라 CPU와 GPU의 개별 loss가 다를 수 있다. 비교할 것은 seed 통계와 발산 수다.
연구 질문은 작성자가 착안해 ChatGPT와의 대화로 구체화했다. 실험 코드 구현, 실행, 결과 분석, 문서 작성은 AI 코딩 도구(OpenAI Codex, Claude Code)와 함께 수행했다. 계속할지와 종료할지, 무엇을 공개할지 같은 연구 방향의 결정과 결과 검토는 작성자가 했다.
- K. Chandra, A. Xie, J. Ragan-Kelley, E. Meijer. Gradient Descent: The Ultimate Optimizer. NeurIPS 2022.
- A. G. Baydin, R. Cornish, D. Martínez Rubio, M. Schmidt, F. Wood. Online Learning Rate Adaptation with Hypergradient Descent. ICLR 2018.
- L. Metz et al. Understanding and correcting pathologies in the training of learned optimizers. ICML 2019.