피셔 정보.logp=−logσ−2σ2(x−μ)2+상수이므로 스코어는 ∂μlogp=σ2x−μ, ∂σlogp=−σ1+σ3(x−μ)2이다. 제곱의 기댓값을 내면 F=diag(1/σ2,2/σ2)가 된다. KL 발산을 2차까지 전개해 얻는 계량과 같다.
출발점 (μ,σ)=(0,0.5)에서. 그래디언트는 ∇L=(−8,−38), 피셔 행렬은 diag(4,8)이므로 자연 경사는 F−1∇L=(−2,−4.75)다.
좌표를 s=logσ로 바꾸면. 같은 점에서 ∂L/∂s=σ∂L/∂σ=−19이고, 피셔 행렬은 Fs=diag(1/σ2,2)=diag(4,2)가 된다. 자연 경사는 (−2,−9.5)다.
두 결과를 맞춰 보면.σ 좌표의 자연 경사 성분 −4.75를 ds=dσ/σ로 옮기면 −4.75/0.5=−9.5로, s 좌표에서 직접 구한 값과 정확히 같다. 보통 그래디언트는 사정이 다르다. σ 좌표에서 한 걸음은 δσ∝38인데, s 좌표에서 한 걸음 δs∝19를 σ로 옮기면 δσ=σδs∝9.5다. 같은 학습률로 네 배나 다른 걸음을 걷는 셈이다.
위 따라 계산해 보기의 정규분포 맞추기 문제를 두 좌표로 나란히 그렸다. 왼쪽은 (μ,σ), 오른쪽은 (μ,logσ) 좌표이고, 배경 등고선은 같은 손실 L이다. 한쪽 평면을 눌러 출발점을 고르면 세 가지 길이 양쪽에 함께 그려진다. 보통 경사하강을 σ 좌표에서 한 길과 logσ 좌표에서 한 길은 서로 다르지만, 자연 경사의 길은 어느 좌표로 계산해도 하나로 겹치는지 확인해 보자.
위 계산에서 σ 좌표의 자연 경사 성분 −4.75를 σ=0.5로 나누자 s 좌표에서 직접 구한 값 −9.5가 정확히 나왔다. 보통 그래디언트는 맞지 않았다. 좌표를 바꿀 때 무엇은 맞고 무엇은 어긋나는 걸까? 먼저 가장 단순한 것, 한 걸음(작은 변화)이 좌표를 바꾸면 어떻게 되는지부터 보자.
번역표로 걸음 옮기기
σ 다이얼과 s=logσ 다이얼은 같은 분포를 가리키는 두 이름표다. σ=0.5에서 σ 다이얼을 0.01 돌리면 s 다이얼은 얼마나 돌아갈까? log0.51−log0.5≈0.0198, 거의 0.02다. 이 자리에서는 σ를 조금 움직이면 s가 그 1/σ=2배만큼 움직인다. 이 "2배"를 적어 둔 것이 번역표, 곧 야코비안 J=ds/dσ다. 다이얼이 여럿이면 번역표는 "이 다이얼을 조금 돌리면 저 다이얼이 얼마나 돌아가는가"를 칸마다 적은 행렬이 된다.
한 걸음은 번역표를 한 번 곱해서 옮긴다. σ 좌표의 걸음 δσ는 s 좌표에서 δs=Jδσ다. 걸음 자체는 그대로이고, 부르는 숫자만 바뀐다. 자연 경사가 맞아떨어진 것이 바로 이것이다. −4.75×2=−9.5.
푸시포워드 (밀어내기 / Push-Forward, f∗) — 매끄러운 함수 f:M→N(되돌릴 수 없어도 된다)을 따라, 이쪽의 작은 변화(한 점에서의 속도벡터 v)를 저쪽의 작은 변화 f∗v로 보내는 연산. 좌표로 쓰면 번역표 J를 한 번 곱하는 것, f∗v=Jv다. 화살표는 함수와 같은 방향, 앞으로 간다. f∗는 「에프 아래 별」로 읽고, 별이 아래에 붙으면 앞으로 미는 쪽이다.
좌표 바꾸기는 푸시포워드의 특별한 경우다. 옛 이름표에서 새 이름표로 가는 함수가 되돌릴 수 있고 양쪽 방향 모두 매끄러울 때, 이런 함수를 미분동형사상(매끄러움을 지키며 되돌릴 수 있는 함수)이라 부른다. 재매개변수화 φ=f(θ)가 그 예다.
변환 법칙으로 본 불변성
좌표를 바꿀 때 옮겨지는 것은 세 종류이고, 규칙이 제각각이다. σ=0.5, J=2에서 따라 계산해 보기의 숫자로 확인할 수 있다.
무엇
비유
좌표를 바꾸면
σ=0.5에서 확인
걸음 δθ (화살표)
다이얼을 돌린 양
번역표를 한 번 곱해 앞으로: δφ=Jδθ
자연 경사 −4.75→−9.5
그래디언트 ∇L (눈금자)
화살표를 넣으면 손실 변화를 돌려주는 장치
반대 방향: ∇θL=JT∇φL
−38=2×(−19)
피셔 행렬 F (자)
화살표 두 개를 받는 내적
번역표가 양쪽에 하나씩: Fθ=JTFφJ
8=2×2×2
보통 경사하강법은 눈금자(그래디언트)의 숫자를 그대로 걸음으로 쓴다. 눈금자는 걸음과 반대 규칙으로 바뀌므로, 좌표마다 다른 걸음이 나온다. σ 좌표의 걸음 38을 s로 옮기면 2×38=76인데, s 좌표에서 직접 구한 걸음은 19다. 네 배가 어긋난다. 자연 경사는 눈금자에 자의 역행렬을 곱해 걸음으로 바꾼다. 두 규칙을 식에 넣으면 번역표가 서로 지워지고, 걸음의 규칙 하나만 남는다.
맨 오른쪽이 J(⋅), 곧 걸음을 옮기는 규칙 그대로다. 자연 경사는 좌표를 바꿔도 같은 걸음을 가리키고, 부르는 숫자만 번역표를 따라 바뀐다. 한 가지 덧붙이면, 불변인 것은 무한히 작은 걸음의 방향(연속적인 흐름)이다. 학습률이 유한하면 좌표마다 차이가 남는다. 학습률을 줄이면 그 차이가 얼마나 빨리 줄어드는지는 아래 문제에서 직접 잰다.
ML에서: 노멀라이징 플로
노멀라이징 플로는 정규분포처럼 단순한 분포에서 뽑은 점 z를 되돌릴 수 있는 매끄러운 신경망 변환 f로 옮겨 x=f(z)를 만든다. f가 미분동형사상(되돌릴 수 있는 매끄러운 함수)이므로, 옮겨진 분포의 밀도는 변수변환 공식 px(x)=pz(z)∣det(∂f/∂z)∣−1로 정확히 계산된다. 여기서 쓰이는 야코비안이 바로 푸시포워드의 좌표 표현이다. 분포는 f를 따라 앞으로 밀려가지만, 밀도를 계산할 때는 x에서 z로 거꾸로 찾아가 그 자리의 밀도를 읽어 온다. 이 거꾸로 가는 계산에 행렬식이 붙는 이유는 다음 절에서 본다. RealNVP(딘(Dinh) 등, 2017) 같은 모델은 이 행렬식을 싸게 계산할 수 있도록 f의 모양을 제한한다. 움직이는 것은 f를 정하는 신경망 매개변수이고, 학습은 옮겨진 분포가 데이터 분포에 가까워지도록 이루어진다.
문제 6 — 바닥재 값을 cm로 적으면
확인 가로 4 m, 세로 3 m인 방에 1 m²당 20,000원인 바닥재를 깐다. 길이를 cm로 적기로 하면 가로·세로 숫자는 100배가 된다. 「1 cm²당 값」은 몇 원인가? 「가로 1 cm당 값」(가로 1 cm, 세로 3 m짜리 띠 한 줄의 값)은 몇 원인가? 방 전체 값으로 검산하라.
같이 풀기 세션 6
김민준
cm로 바꾸면 숫자가 100배니까 값은 거꾸로 100으로 나누면 되죠. 1 cm²당 200원, 가로 1 cm당 600원.
이서연
방 전체 값으로 검산해 보자. 단위를 바꿔도 값은 같아야 하잖아. m로 하면 12 m² × 20,000원 = 240,000원. cm로 하면 400 × 300 = 120,000 cm²에 200원씩이니 2,400만 원이야.
김민준
같은 방인데 100배가 비싸졌네요?
선생님
띠 쪽은 어때요? 띠 400줄에 600원씩이면요?
김민준
240,000원. 이건 맞네요. 그럼 넓이 쪽만 틀린 거예요?
선생님
1 m²짜리 칸 하나를 cm로 재면 가로로 몇, 세로로 몇이죠?
이서연
가로로도 100, 세로로도 100이요. 길이가 두 번 들어가니까 10,000으로 나눠야 해요. 1 cm²당 2원, 120,000 × 2 = 240,000원.
김민준
길이는 100배, 「길이당 값」은 1/100, 「넓이당 값」은 1/10,000. 길이가 몇 번 들어가느냐만큼 나누는 거구나.
문제 7 — 분산 좌표의 피셔 정보
계산 정규분포 N(μ,σ2)의 피셔 행렬은 (μ,σ) 좌표에서 diag(1/σ2,2/σ2)이다. 좌표를 (μ,v), v=σ2(분산)으로 바꿨을 때의 피셔 행렬을 변환 법칙으로 구하고, 스코어를 직접 계산해서 확인하라. 분산 방향 성분을 σ=1과 σ=2에서 견주어라.
같이 풀기 세션 7
김민준
바닥재처럼 두 번 나누면 되죠. J=dσ/dv=1/(2σ)로 놓고 Fv=J−TFσJ−1에 넣으면 2σ⋅σ22⋅2σ=8. σ와 상관없는 상수네요.
이서연
스코어로 검산해 볼게. logp=−21logv−2v(x−μ)2이니까 ∂vlogp=2σ21(σ2(x−μ)2−1). σ2(x−μ)2는 표준정규 변수 하나를 제곱한 것(자유도 1인 카이제곱)이라 분산이 2고. 그러면 Fvv=4σ42=2σ41. 상수가 아닌데?
선생님
두 답이 8과 1/(2σ4)로 갈렸네요. 바닥재 문제에서 m를 cm로 바꿀 때 나눈 100은 무엇을 무엇으로 나눈 비였죠?
김민준
1 m가 100 cm, 새 숫자 나누기 옛 숫자요. 이 장의 J도 ∂(새좌표)/∂(옛좌표)였는데, 저는 옛 것을 새 것으로 미분했어요. 거꾸로 잡았네요.
이서연
새 좌표가 v, 옛 좌표가 σ니까 J=dv/dσ=2σ. 그러면 Fv=2σ1⋅σ22⋅2σ1=2σ41. 스코어로 구한 것과 같아요.
선생님
σ=1과 σ=2에서는 몇 배 차이죠?
이서연
1/2과 1/32, 16배요. 따라 계산해 보기의 logσ 좌표에서는 분산 방향 값이 σ와 상관없이 2였는데, 분산 좌표에서는 σ가 작아질수록 가파르게 커지네요. 같은 학습률이면 어떤 곳에서는 걸음이 너무 크고 어떤 곳에서는 너무 작겠어요.
김민준
VAE 과제에서 인코더가 분산 대신 로그 분산을 내놓던 게 이거였구나. 자의 눈금이 어디서나 같은 좌표를 고른 거네요.
문제 8 — 유한한 걸음은 두 좌표에서 같은 곳에 닿을까
계산 따라 계산해 보기의 점 (μ,σ)=(0,0.5)에서 자연 경사의 σ 쪽 성분은 σ 좌표로 −4.75, s=logσ 좌표로 −9.5였다. 학습률 η로 자연 경사 한 걸음을 (가) σ 좌표에서, (나) s 좌표에서 걸은 뒤 σ 값을 각각 구하라. η=0.1과 η=0.01에서 두 도착점의 차이를 견주면, 학습률을 1/10로 줄일 때 차이는 몇 분의 1이 되는가?
같이 풀기 세션 8
김민준
η=0.1이면 σ 좌표는 0.5+0.1×4.75=0.975. s 좌표는 0.5+0.1×9.5=1.45. 차이가 꽤 크네요.
이서연
민준아, s 좌표에서 0.95 움직인 건 σ가 아니라 logσ야. s=log0.5+0.95≈0.257이니까 σ=e0.257≈1.293.
김민준
아, 걸음을 그대로 σ에 더했네요. 그래도 0.975 대 1.293이면 0.32 차이예요. η=0.01이면 0.5475 대 0.5498, 차이 0.0023. 학습률을 1/10로 줄였으니 차이도 1/10쯤 될 줄 알았는데 136분의 1이에요.
선생님
왜 1/10보다 훨씬 많이 줄었을까요? 두 도착점을 η에 대한 식으로 써 볼까요?
이서연
σ 좌표는 0.5(1+9.5η), s 좌표는 0.5e9.5η=0.5(1+9.5η+(9.5η)2/2+⋯)예요. η에 비례하는 항은 똑같고, 차이는 η2 항부터 시작해서 약 0.5×(9.5η)2/2≈22.6η2. η=0.01이면 0.00226, 거의 맞아요. 학습률을 1/10로 줄이면 차이는 1/100쯤 되고, 136과 100의 어긋남은 더 높은 차수 항의 몫이에요.
선생님
그래요. η에 비례하는 항이 같다는 것이 「무한히 작은 걸음의 방향은 좌표에 상관없다」는 말이에요. 유한한 걸음에서는 η2 항부터 좌표마다 달라져요.
김민준
단리와 복리 같네요. 이자율이 작으면 둘이 거의 같은데 크면 복리가 확 앞서잖아요. σ 좌표의 걸음이 단리, logσ 좌표의 걸음이 복리고요.