피셔 정보.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이므로, σ=0.5인 점에서는 σ를 조금 움직이면 s가 그 1/σ=2배만큼 움직인다. 이 "2배"를 적어 둔 것이 자코비안 J=ds/dσ다. 좌표가 여럿이면 자코비안은 "옛 좌표 하나를 조금 바꾸면 새 좌표 하나가 얼마나 바뀌는가"를 칸마다 적은 행렬이 된다.
한 스텝은 자코비안을 한 번 곱해서 옮긴다. σ 좌표의 스텝 δσ는 s 좌표에서 δs=Jδσ이고, 스텝 자체는 그대로인 채 스텝을 부르는 숫자만 바뀐다. 따라 계산해 보기에서 두 좌표의 자연 그래디언트가 맞아떨어진 것도 자코비안 J=2를 곱하는 이 규칙 때문이다(−4.75×2=−9.5).
푸시포워드 (밀어내기 / Push-Forward, f∗): 매끄러운 함수 f:M→N(되돌릴 수 없어도 된다)을 따라, M의 작은 변화(한 점에서의 속도벡터 v)를 N의 작은 변화 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(⋅)은 스텝을 옮기는 규칙과 같다. 자연 그래디언트는 좌표를 바꿔도 같은 스텝을 가리키고, 스텝을 부르는 숫자만 자코비안을 따라 바뀐다. 한 가지 덧붙이면, 불변인 것은 무한히 작은 스텝의 방향(연속적인 흐름)이어서, 학습률이 유한하면 좌표마다 차이가 남는다. 학습률을 줄이면 좌표 사이의 차이가 얼마나 빨리 줄어드는지는 아래 문제 8에서 직접 잰다.
ML에서: 노멀라이징 플로우
노멀라이징 플로우는 정규분포처럼 단순한 분포에서 뽑은 점 z를 되돌릴 수 있는 매끄러운 신경망 변환 f로 옮겨 x=f(z)를 만든다. f가 미분동형사상(되돌릴 수 있는 매끄러운 함수)이므로, 옮겨진 분포의 밀도는 변수변환 공식 px(x)=pz(z)∣det(∂f/∂z)∣−1로 정확히 계산된다. 여기서 쓰이는 자코비안이 바로 푸시포워드의 좌표 표현이다. 분포는 f를 따라 앞으로 밀려가지만, 밀도를 계산할 때는 x에서 z로 거꾸로 찾아가 그 점의 밀도 pz(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짜리 띠 한 줄의 값)은 몇 원인가? 방 전체 값으로 검산하라.
가로 4 m, 세로 3 m 방과 그 안의 1 m² 칸 하나, 가로 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에서 비교하라.
표준편차 σ 축의 0.25 간격 눈금을 분산 v=σ2 축으로 옮긴 것. 굵은 선은 σ=1과 σ=2
같이 풀기 세션 7
김민준
바닥재처럼 두 번 나누면 되죠. J=dσ/dv=1/(2σ)로 놓고 Fv=J−TFσJ−1에 넣으면 2σ⋅σ22⋅2σ=8. σ와 상관없는 상수네요.
σ2(x−μ)2는 표준정규 변수 하나를 제곱한 것(자유도 1인 카이제곱)이라 평균 1, 분산 2예요. 1을 빼면 평균이 0이니까 제곱의 기댓값은 분산 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이 되는가?
출발점 σ=0.5를 σ 축(가)과 s=logσ 축(나)에 찍고, 각 좌표에서 걸을 한 스텝의 방향을 그렸다
같이 풀기 세션 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η예요. 하나는 1차식이고 하나는 지수함수네요.
선생님
지수함수 쪽을 η에 대해 펼쳐 보면요?
이서연
0.5(1+9.5η+(9.5η)2/2+⋯). 아, η에 비례하는 항은 똑같아요. 차이는 η2 항부터 시작해서 약 0.5×(9.5η)2/2≈22.6η2이에요.
김민준
η=0.01이면 0.00226, 내 0.0023이랑 거의 맞네. 그럼 136분의 1은?
이서연
η2에 비례하니까 학습률을 1/10로 줄이면 차이는 1/100쯤이야. 136과 100이 어긋나는 건 η3 이상의 더 높은 차수 항 때문이고.
선생님
그래요. η에 비례하는 항이 같다는 것이 「무한히 작은 스텝의 방향은 좌표에 상관없다」는 말이에요. 유한한 스텝에서는 η2 항부터 좌표마다 달라져요.
김민준
단리와 복리 같네요. 이자율이 작으면 둘이 거의 같은데 크면 복리가 확 앞서잖아요. σ 좌표의 스텝이 단리, logσ 좌표의 스텝이 복리고요.