torch.optim.SGD를 쓸 때 우리는 ∇L을 “방향”이라고 부른다. 그런데 같은 목적함수라도 σ 좌표로 최적화하느냐 logσ 좌표로 하느냐에 따라 gradient 경로 전체가 달라진다. 좌표 선택이 수렴 경로를 바꾼다면, 우리가 “gradient”라고 부르는 것은 과연 무엇인가?
∇L은 방향이 아니다
편미분 벡터 ∇L=(∂1L,…,∂nL)은 “steepest ascent 방향”처럼 보인다. 하지만 이것은 좌표계가 직교정규이고 계량이 항등 행렬 g=I일 때만 사실이다.
미분기하 언어로 말하면, dL=∂iLdθi는 **1-form(covector)**이다. 방향을 입력으로 받아 실수를 돌려주는 함수. 반면 “gradient”는 방향을 가리키는 벡터다. 두 대상을 연결하는 것이 계량 g이다.
g(gradL,V)=dL(V)∀V∈TpM
좌표로 쓰면 (gradL)i=gij∂jL. 유클리드에서는 gij=δij이므로 두 개가 일치하지만, 이것은 특수한 일치일 뿐이다.
재매개변수화 ϕ=ϕ(θ), Jacobian J=∂ϕ/∂θ 아래 gradient는 역전치 Jacobian으로 변환한다.
∇ϕL=J−T∇θL
이것이 covector 변환 규칙이다. N(μ,σ2)에서 KL(N(μ,σ2)∥N(0,1))을 최소화할 때 이 차이가 선명해진다. σ 좌표에서 gradient의 σ 성분은 σ−1/σ≈−1/σ로 σ→0에서 발산한다. logσ 좌표에서는 −1+e2τ≈−1로 유계다. 같은 분포, 같은 목적함수, 다른 안정성 — 이것이 parameterization이 gradient에 새기는 편향이다.
Fisher 계량과 Natural Gradient
분포 공간에서 자연스러운 거리는 KL divergence다. 무한소에서 KL은 다음과 같이 근사된다.
KL(pθ∥pθ+dθ)=21dθTF(θ)dθ+O(∥dθ∥3)
여기서 F(θ)=E[∇logp⋅∇logpT]=−E[∇2logp]가 Fisher 정보 행렬이다. 0차 항은 KL(p∥p)=0이고, 1차 항은 score의 기댓값이 0이므로 소멸한다. KL의 로컬 구조는 Fisher 계량으로 완전히 결정된다.
이로부터 Natural Gradient는 제약 최적화의 해로 등장한다. “KL 반경 ε 안에서 L을 가장 많이 줄이는 방향”은 다음 문제의 해다.
이다. 즉 Fisher 타원체 내에서 L을 가장 많이 줄이는 방향은 항상 −F−1∇L 방향이다.
▷ 증명
Lagrangian L=∇LTdθ+λ(dθTFdθ−ε2)의 정류 조건은 ∇L+2λFdθ=0, 즉 dθ=−2λ1F−1∇L. ∇L=0이면 최적점은 경계 dθTFdθ=ε2에 있다. 이를 대입해 λ∗=2ε1∇LTF−1∇L을 얻고, 다시 대입하면 위 공식이 나온다. F≻0이므로 해는 유일하다. □
∎
지수족 MLE에서 L(θ)=−logp(x∣θ)의 Hessian은 ∇2L=F다. 따라서 F−1∇L=H−1∇L — Natural Gradient는 지수족 MLE에서 Newton’s method와 정확히 일치하며, 이론적으로 한 스텝에 수렴한다.
좌표 불변성 — Natural Gradient가 “옳은” 이유
Fisher는 (0,2) 텐서 법칙으로 변환한다.
Fϕ=J−TFθJ−1,Fϕ−1=JFθ−1JT
이 두 변환을 결합하면 Natural Gradient의 핵심 성질이 나온다.
∇~ϕL=Fϕ−1∇ϕL=(JFθ−1JT)(J−T∇θL)=J∇~θL
Natural gradient는 **반변 벡터 변환 규칙 Xϕ=JXθ**를 따른다. 이는 접벡터 dθ와 같은 변환이므로, 방향으로 쓰는 것이 기하학적으로 정당하다.
연속 시간 flow θ˙=−Fθ−1∇θL에서 ϕ(t)=ϕ(θ(t))로 변환하면 ϕ˙=Jθ˙=−Fϕ−1∇ϕL. 두 좌표계에서 Natural Gradient flow를 풀면 완전히 같은 분포 궤적을 그린다. 이산 업데이트에서는 O(η2) 오차가 남지만, η→0 극한에서 정확히 불변이다.
반면 유클리드 GD ϕt+1=ϕt−η∇ϕL이 θ 좌표의 경로와 일치하려면 JJT=I, 즉 Jacobian이 직교행렬이어야 한다. 일반적인 재매개변수화에서는 성립하지 않는다.
실전 근사 — K-FAC과 Shampoo
n=109 파라미터 신경망에서 F는 저장 자체가 불가능하다(O(n2) 메모리, O(n3) 역행렬). 핵심 관찰은 Fisher가 층 구조와 Kronecker 구조를 갖는다는 것이다.
층 ℓ의 출력 z=Wa에서 ∇WL=gaT이므로:
Fℓ=E[(a⊗g)(a⊗g)T]=E[aaT⊗ggT]
K-FAC(Martens & Grosse 2015)은 a와 g가 독립이라 근사하여
Fℓ≈AℓE[aaT]⊗GℓE[ggT]
으로 분해한다. Kronecker 역행렬 (A⊗G)−1=A−1⊗G−1과 vec 공식을 결합하면 업데이트가 닫힌 형태로 나온다.
ΔWℓ=−ηGℓ−1(∇WℓL)Aℓ−1
저장은 O(p2+q2), 계산은 O(p3+q3)으로 원래 O((pq)2), O((pq)3)에서 극적으로 감소한다. Shampoo(Gupta+ 2018)는 이를 일반 텐서로 확장해 각 축마다 preconditioner를 누적하며, Anil+ (2020)은 Shampoo가 full-matrix AdaGrad의 최적 Kronecker 근사임을 보였다.
TRPO(Schulman+ 2015)는 다른 접근을 택한다. F−1v를 conjugate gradient로 푸는데, 각 반복에서 Fisher-vector productFv=∇θ(∇θL⋅v)만 계산한다. 두 번의 backward pass, O(n) 비용으로 10~20 CG 반복이면 충분한 근사를 얻는다.
✎ 트레이드오프
Natural Gradient는 parameterization 불변이고 지수족 MLE에서 Newton과 동치다. 그 대가는 Fisher 역행렬의 계산 비용이다. K-FAC은 Kronecker 구조로 이를 줄이지만 a와 g의 독립 가정에 의존하고, Empirical Fisher(yi를 데이터에서 취함)는 θ가 최적에 수렴할수록 추정치가 0으로 붕괴해 업데이트가 폭주할 수 있다(Kunstner+ 2019). True Fisher는 y∼pθ에서 샘플링해야 한다.
정리
∇L은 covector다. 유클리드에서만 벡터(방향)와 일치하며, 이 일치는 g=I라는 특수 가정의 귀결이다.