피셔 행렬을 자로 쓰면 가장 가파른 걸음은 그래디언트에 피셔 행렬의 역행렬을 곱한 방향이었다. 이 걸음은 실제 학습에서 보통 경사하강과 얼마나 다르게 걸을까? 그리고 출발 문제가 물은 대로, 정말 좌표에 속지 않을까?
역사: 학습이 멈춰 서는 고원
다층 퍼셉트론(층을 여러 겹 쌓은 신경망)을 오차역전파(출력의 오차를 거꾸로 전해 그래디언트를 구하는 방법)로 학습시키면, 손실이 한참 동안 거의 줄지 않고 평평한 구간에 머무는 일이 생긴다. 이 구간을 고원(plateau) 현상이라 불렀다. 1998년 아마리 순이치는 논문 「Natural Gradient Works Efficiently in Learning」에서 매개변수 공간에 구조가 있으면 보통 그래디언트는 가장 가파른 방향이 아니라고 짚고, 퍼셉트론의 매개변수 공간과 블라인드 신호 분리(섞는 방식을 모른 채 섞인 신호를 원래 신호들로 가르는 일)에 쓰는 행렬의 공간에서 그 방향을 계산했다. 이 방향으로 데이터를 하나씩 받아 가며 학습하면, 데이터를 다 모아 한꺼번에 하는 최선의 추정과 데이터가 많아질수록 같은 성능을 낸다는 것도 보였다. 그러니 이 방향을 쓰면 고원 현상이 사라지거나 덜 심각해질 수 있다고 내다보았다. 올바른 매개변수화를 고르려 애쓰지 말고, 매개변수화에 기대지 않는 갱신 규칙을 쓰라는 것이다.
같은 출발점, 다른 길
가장 단순한 경우로 손실이 L(θ)=21θTFθ인 경우를 보자. 공분산을 아는 2차원 정규분포의 평균을 맞출 때 음의 로그가능도가 이 꼴이고, 그때 피셔 행렬이 바로 이 F다. 아래 그림의 F는 한 방향이 다른 방향보다 열 배 가파르게 골랐다. 보통 경사는 학습률을 0.2보다 키우면 가파른 방향으로 튕겨 나가므로 η=0.17로 걸어야 하고, 그러면 골짜기의 두 벽 사이를 지그재그로 오가며 네 걸음 뒤에 손실이 처음의 약 1/6로 준다. 그래디언트에 F−1을 곱한 걸음은 η=0.5에서 최솟값을 향해 곧장 가서, 네 걸음 뒤 손실이 처음의 1/256이다.
같은 손실 등고선(회색 타원) 위에서 같은 점을 출발한 두 길. 위: 보통 경사(η=0.17)는 가파른 벽 사이를 지그재그로 오간다. 아래: 그래디언트에 피셔 행렬의 역행렬을 곱한 자연 경사(η=0.5)는 최솟값으로 곧장 간다. 손실은 L(θ)=21θTFθ이고, F는 한 방향이 열 배 가파른 행렬로 골랐다
직관적인 비유를 하자면, 유클리드 그래디언트는 "지도 위에서의 가장 가파른 방향"이고, 피셔 계량으로 보정한 그래디언트, 곧 자연 경사는 "실제 지형 위에서의 가장 가파른 방향"이다. 메르카토르 도법으로 그린 지도에서는 극지방이 과도하게 크게 보이므로, 지도 위에서 가장 짧아 보이는 걸음이 실제 지형 위에서도 가장 짧은 걸음은 아니다. 피셔 계량은 이 "지도의 왜곡"을 보정한다. 유클리드 공간처럼 피셔 행렬이 단위행렬이면 두 걸음이 같지만, 확률 모델의 매개변수 공간처럼 자의 눈금이 장소와 방향마다 다르면 두 걸음은 크게 다를 수 있다.
자연 경사 (좌표 독립 경사 / Natural Gradient, ∇~L=F−1∇L) — 매개변수 공간을 피셔 계량을 가진 리만 매니폴드로 보았을 때의 “진정한” 최급강하 방향. 유클리드 그래디언트에 피셔 행렬의 역행렬을 곱한 것이다. F=I이면 보통 그래디언트와 같지만, 매개변수 공간이 휘어져 있거나 눈금이 방향마다 다르면 방향이 크게 달라질 수 있다. 자연 경사의 핵심 성질은 재매개변수화 불변성이며, 이는 매니폴드 위의 벡터가 좌표에 의존하지 않는 것과 같은 원리다.
아마리의 핵심 정리는 이것이다: 자연 경사는 재매개변수화에 대해 불변이다. 매개변수를 θ에서 φ=f(θ)로 바꾸고 새 좌표에서 자연 경사를 계산하면, 그것은 원래 좌표의 자연 경사를 f로 옮겨 놓은 것과 정확히 일치한다.
ML에서: 자연 경사의 후예들
실용적인 관점에서 자연 경사의 가장 큰 장벽은 계산 비용이다. 매개변수가 n개면 n×n 행렬의 역행렬을 매 단계 구해야 하는데, 현대 신경망에서 n은 수억에 달하므로 이것을 그대로 하기는 불가능하다. 하지만 자연 경사의 정신은 여러 실용적 알고리즘에 살아 있다. K-FAC(Kronecker-Factored Approximate Curvature, 마튼스·그로스 2015)은 피셔 행렬을 층마다 두 작은 행렬의 크로네커 곱(한 행렬의 칸마다 다른 행렬을 통째로 곱해 넣어 만든 큰 행렬)으로 근사하고, 널리 쓰는 최적화기 Adam은 그래디언트 제곱의 이동평균(모델 분포 대신 데이터 표본으로 스코어 제곱을 평균한 경험적 피셔 행렬의 대각 성분에 해당)의 제곱근으로 나눈다는 점에서 대각 근사의 먼 친척으로 볼 수 있다. 강화학습의 TRPO(Trust Region Policy Optimization)는 정책 공간에서의 자연 경사를 KL 발산 제약(신뢰 영역)과 결합한 것이며, PPO(Proximal Policy Optimization, 옛 정책 가까이에서만 고치는 정책 최적화)는 TRPO의 실용적 근사다. 이들 모두 "매개변수 공간의 기하학을 존중하라"는 아마리의 통찰에서 뻗어 나온 가지들이다.
문제 4 — 샤워 꼭지 두 개
확인 샤워기에 온수(60°C) 꼭지와 냉수(20°C) 꼭지가 따로 있고, 지금은 둘 다 1분에 5 L씩 나와 40°C 물이 1분에 10 L 나온다. 물 양은 그대로 두고 온도만 1°C 올리고 싶다. (1) 온수 꼭지만 1분에 0.25 L 더 열면 온도와 물 양은 어떻게 되는가? (2) 두 꼭지를 어떻게 돌려야 하는가?
같이 풀기 세션 4
김민준
온수를 더 열면 되죠. 섞인 온도는 (60×5.25+20×5)/10.25≈40.49°C. 1도가 안 오르네요. 그럼 더 많이 열면 되겠다.
선생님
그때 물 양은 어떻게 되죠? 문제는 물 양을 그대로 두라고 했어요.
김민준
10.25 L요. 더 열면 더 늘고요. 온수만 돌렸는데 물 양까지 같이 바뀌네요.
이서연
온수를 연 만큼 냉수를 잠그면 물 양은 10 L 그대로야. 온수 5.25, 냉수 4.75면 (315+95)/10=41°C. 딱 1도.
선생님
「온수 꼭지만」은 꼭지 쪽에서 보면 똑바른 한 방향이에요. 온도와 물 양 쪽에서 보면 어느 방향이었죠?
이서연
온도와 물 양이 함께 움직이는 비스듬한 방향이요. 결과 쪽에서 「온도만」 똑바로 가려면 꼭지 쪽에서는 (+0.25,−0.25), 두 꼭지를 함께 돌려야 하네요.
김민준
꼭지 하나가 결과 두 개에 얽혀 있어서 그렇구나. 하나만 돌리면 원하지 않는 쪽까지 끌려가네요.
문제 5 — 학습률만 키우면 같을까
킬러 두 매개변수가 서로 얽힌 모델의 한 점에서(계산하기 쉽게 고른 값) 피셔 행렬이 F=(2111)이고 그래디언트가 ∇L=(1,0)이다. 자연 경사 F−1∇L을 구하고, 보통 그래디언트와 방향이 어떻게 다른지 설명하라. 방향이 달라도 여전히 손실이 줄어드는 방향인 이유는 무엇인가?
같이 풀기 세션 5
김민준
PyTorch로 작은 모델에 자연 경사를 돌려 봤는데요, 보통 SGD(확률적 경사하강법)랑 궤적이 거의 비슷하고 빠르기만 하더라고요. 결국 자연 경사는 학습률을 방향마다 조금씩 키운 거 아니에요? 학습률만 잘 고르면 같을 것 같아요.
이서연
이 문제는 계산이 금방이야. 피셔 행렬 대각이 2랑 1이니까 역행렬은 diag(1/2,1), 그러면 F−1∇L=(1/2,0). 방향은 그래디언트랑 똑같고 길이만 반이네. 민준이 말이 맞는 것 같은데?
선생님
서연 학생, 역행렬을 구할 때 비대각 성분 1은 어디로 갔어요?
이서연
아… 대각 성분만 뒤집었어요. 대각행렬일 때만 되는 계산인데. 제대로 하면 행렬식이 2−1=1이니까 F−1=(1−1−12), F−1∇L=(1,−1). 그래디언트는 x축 방향인데 자연 경사는 45도 기울어졌어요.
김민준
방향이 바뀌네요. 그럼 제 PyTorch 실험은 뭐였죠?
선생님
그 모델의 피셔 행렬이 대각에 가까웠을 거예요. 매개변수들이 서로 얽혀 있지 않으면 자연 경사는 정말로 "방향마다 다른 학습률"이 돼요. Adam이 대각 근사의 친척인 것도 그래서고요. 하지만 비대각 성분이 있으면, 한 매개변수를 움직일 때 다른 매개변수도 같이 보정해야 분포 공간에서 똑바로 가요. 이건 성분별 학습률로는 흉내 낼 수 없어요.
김민준
그럼 45도나 틀어졌는데도 손실이 줄어드는 게 보장돼요? 그래디언트 반대 방향이 가장 가파른 방향이라면서요.
이서연
내적을 보면 돼. 손실의 1차 변화는 ∇L⋅δθ=−η∇LTF−1∇L이고, F가 양의 정부호(0이 아닌 벡터 v마다 vTFv>0)면 F−1도 양의 정부호라서 이 값은 항상 음수야. 여기서는 (1,0)⋅(1,−1)=1>0이니까 반대로 걸으면 줄어들고. 가장 가파른 방향은 "어떤 자로 재느냐"에 따라 달라질 뿐이야.
선생님
정확해요. 그래디언트 반대 방향은 유클리드 자로 잰 가장 가파른 방향이고, 자연 경사는 피셔 자로 잰 가장 가파른 방향이에요. 둘 다 내려가는 방향이지만, 좌표를 바꿔도 살아남는 건 뒤쪽뿐이죠.
김민준
아까 샤워 꼭지랑 같네요. 온수만 열면 물 양까지 바뀌어서 냉수를 같이 잠가야 했던 것처럼, 비대각 성분이 그 "같이 맞춰 주기"네요. 방향도 똑같이 (1,−1) 쪽이고요.
이서연
선형대수 시험에서도 "대각행렬이면"이라는 조건 없이 역행렬을 성분별로 뒤집었다가 감점당한 적이 있어요. 조건부터 확인하는 버릇을 들였는데도 또 놓쳤네요.