← Day 6 Phase 0 · Week 1 · Day 7 Week 2 →

Day 7 — 통합, AD 내부 대응, 첫 글

한 주를 하나의 이론으로 묶는다. micrograd가 PyTorch autograd·JAX와 어떻게 대응되는지 내부 수준에서 짚고, 스칼라 AD의 한계(파이썬 오버헤드, 벡터화 부재)를 정량화해 Week 2(텐서)의 필연성을 못박는다. 그리고 "reverse-mode AD를 처음부터"라는 기술 글을 완성한다 — 단순 복습이 아니라 네 연구 역량을 보여주는 포트폴리오의 첫 페이지.

🎯 오늘의 목표

📖 1주차를 하나의 이론으로

Day핵심 결과한 줄
1ERM·표현력·다양체학습=함수공간 최적화, 깊이=선형영역 지수증가
2야코비안·JVP/VJP·복잡도미분=선형사상, gradient는 단일 VJP, reverse가 $O(T)$
3계산그래프·adjoint·checkpointingfan-out=합(증명), 위상역순, 메모리 $O(\sqrt T)$
4define-by-run·VJP 클로저그래프 자동구축, 노드가 자기 VJP를 보유
5backward·gradcheck·안정 CE위상정렬+adjoint, 복소스텝 검증, log-sum-exp
6초기화·옵티마이저·지형분산보존(He), Adam, 비볼록 단면 시각화

한 문장 통합: 학습은 $\arg\min_\theta \hat R(\theta)$를 reverse-mode AD로 얻은 단일 VJP gradient에 적응적 1차 방법을 적용해 비볼록 지형을 항해하는 것이고, 그 모든 단계의 정확성은 gradcheck로, 안정성은 분산보존·log-sum-exp로 보장된다. 이 문장이 GPT 사전학습에서도 글자 그대로 성립한다 — 규모만 다르다.

micrograd ↔ 실전 프레임워크 (내부 수준)

개념microgradPyTorchJAX
그래프_prev 집합 + 클로저grad_fn 객체 DAG(define-by-run)tracing으로 jaxpr 추출
VJP 단위노드별 _backwardFunction.backward각 prim의 transpose 규칙
gradient APIL.backward()loss.backward()jax.grad(f) (함수변환)
패러다임동적(eager)동적 + torch.compile함수형 + JIT(XLA)
고차미분grad를 Value로 확장 필요create_graph=Truegrad(grad(f)) 자연스러움
핵심 차이 한 줄: PyTorch는 "텐서가 자기 grad_fn을 들고 다니는" 우리 설계의 텐서·C++ 버전이고, JAX는 "미분을 함수 변환으로 보는" 더 함수형 관점이다. 우리가 만든 건 정확히 PyTorch eager의 스칼라 원형이다.

스칼라 AD는 왜 못 쓰나 — 텐서화의 필연성

우리 엔진은 옳지만 느리다. $d\times d$ 행렬곱 하나가 micrograd에선 $O(d^3)$개의 Value 노드와 그만큼의 파이썬 객체·클로저를 만든다. $d=1000$이면 노드 10억 개 — 파이썬 인터프리터로는 불가능하다. 텐서는 이 연산을 하나의 노드로 묶고, VJP도 하나의 행렬곱($\bar X = \bar Y W^\top$ 등)으로 처리해 BLAS/GPU에 맡긴다. 즉 텐서화는 (1) 그래프 노드 수를 $O(d^3)\to O(1)$로, (2) 연산을 벡터화해 SIMD/GPU로 가속한다. Week 2의 존재 이유가 이 두 줄이다.

🧪 심화 자기점검

8문제를 막힘없이 유도까지 할 수 있어야 Week 2로 간다. 하나라도 "직관은 알지만 유도가 막힌다"면 그 Day로 돌아가라.

✍️ 메인 과제 — 기술 글

"Reverse-mode AD를 처음부터" 글을 완성하라 (docs/01_reverse_mode_ad.md 또는 블로그). 대상 독자는 너와 같은 수준의 동료 — 초보용 튜토리얼이 아니라 정확하고 밀도 있는 글로. 추천 구성:
  1. 문제 설정 — ERM, 왜 gradient가 필요한가, 수치미분의 $O(nT)$ 한계
  2. 미분=선형사상, 연쇄법칙=야코비안 합성, JVP/VJP
  3. reverse-mode의 $O(T)$ 결과(Baur–Strassen) + 메모리 트레이드오프
  4. 구현 — define-by-run, VJP 클로저, 위상정렬, fan-out 합(증명 포함)
  5. 검증 — 복소스텝 gradcheck, 안정적 CE
  6. 학습 — 초기화·옵티마이저·지형 시각화로 two-moons 정복
  7. 한계와 다음 — 스칼라→텐서, 그리고 PyTorch와의 대응
왜 이 글이 무기인가: "autograd 써봤다"는 흔하지만, "reverse-mode를 $O(T)$ 복잡도와 fan-out 증명, 수치 안정성까지 포함해 처음부터 구현하고 글로 설명했다"는 학부 2학년에서 드물다. 랩 지원·면접에서 이해의 깊이를 즉시 증명한다. graphviz 그래프·gradcheck 표·손실 단면을 그림으로 넣어라.
(권장) 공개. micrograd 구현 + gradcheck + two-moons 노트북 + 이 글을 GitHub에. README에 "Week 1: reverse-mode autodiff from scratch, gradient-checked, with optimizer & loss-landscape experiments."

✅ 1주차 졸업 체크

📅 다음 주 — Week 2

텐서 AD & PyTorch 내재화 (Day 8–14). 스칼라 micrograd를 텐서로 올린다: broadcasting의 VJP(축 합산으로 grad 환원), einsum과 그 미분, 선형층/LayerNorm/softmax의 텐서 VJP를 직접 유도·구현하고 torch.autograd.gradcheck로 검증한다. 그 다음 nn.Module·AdamW·mixed precision으로 실전 학습 루프를 세운다. Week 1의 모든 이론이 GPU 위에서 벡터화되어 돌아간다.

준비되면 "Day 8 써줘".

← Day 6 Week 1 완료 🎉 커리큘럼으로 →