6장 — 해밀토니안과 위상공간

모멘텀 최적화: 마찰이 넓이를 줄여 바닥에 멈춘다

HMC는 마찰 없이 공을 굴려 분포 전체를 돌아다녔다. ML에서 공을 굴리는 또 한 곳은 최적화의 모멘텀 방법인데, 모멘텀 계수를 1로 두면 손실의 바닥에 멈추지 못하고 영원히 흔들린다. 그렇다면 모멘텀 계수가 1보다 작으면 왜 바닥에 멈출 수 있을까?

한 걸음의 넓이 배율

우리가 모멘텀 SGD라 부르는 갱신은 소련의 폴랴크가 1964년 논문에서 내놓은 「무거운 공」(heavy-ball) 방법이다. 폴랴크는 지난 걸음을 기억하는 이 방법이 해 근처에서 기울기만 쓰는 방법보다 훨씬 빨리 수렴한다는 것을 보였다. 이름대로 손실을 위치에너지 U(θ)로 보면, 이 갱신은 운동량이 있는 공의 운동이다.

p←μ p−η ∇U(θ),θ←θ+p\textcolor{#dd6677}{p} \leftarrow \textcolor{#6d45e6}{\mu}\, \textcolor{#dd6677}{p} - \textcolor{#006600}{\eta}\, \nabla \textcolor{#a6761d}{U}(\textcolor{#1b9e77}{\theta}), \qquad \textcolor{#1b9e77}{\theta} \leftarrow \textcolor{#1b9e77}{\theta} + \textcolor{#dd6677}{p}
θ매개변수 (위치 역할)p모멘텀 버퍼 (운동량 역할)U손실 (위치에너지 역할)μ모멘텀 계수 (1−μ 가 마찰 역할)η학습률 (한 걸음에 기울기를 몇 배 해서 쓰는가)\begin{array}{ll} \textcolor{#1b9e77}{\theta} & \text{매개변수 (위치 역할)} \\ \textcolor{#dd6677}{p} & \text{모멘텀 버퍼 (운동량 역할)} \\ \textcolor{#a6761d}{U} & \text{손실 (위치에너지 역할)} \\ \textcolor{#6d45e6}{\mu} & \text{모멘텀 계수 (} 1 - \textcolor{#6d45e6}{\mu} \text{ 가 마찰 역할)} \\ \textcolor{#006600}{\eta} & \text{학습률 (한 걸음에 기울기를 몇 배 해서 쓰는가)} \end{array}

μ(뮤) = 1이면 이 갱신은 운동량을 먼저 바꾸고 새 운동량으로 위치를 옮기는, 마찰 없는 공 굴리기다. 마찰 없는 해밀턴 흐름은 위상공간의 넓이를 바꾸지 않았고, 넓이가 그대로이면 넓은 영역에서 출발한 상태들이 한 점으로 모일 수 없다. 그런데 최적화가 수렴한다는 것은 여러 출발점이 모두 손실의 바닥, 곧 (θ, p) = (바닥, 0)이라는 한 점으로 모여든다는 뜻이다. 앞에서 진자에 마찰을 넣자 넓이가 줄어들었듯, 모멘텀 계수 μ < 1이 운동량을 깎는 마찰 노릇을 한다면 넓이도 줄어들 것이다. 그렇다면 한 번의 갱신은 넓이를 몇 배로 바꿀까? 그 배율은 학습률에도 달려 있을까? 아래 위젯에서 여러 출발 상태를 한꺼번에 갱신해 보며 짐작해 보고, 문제 15에서 직접 계산해 보자.

직접 움직여 보기모멘텀 SGD의 넓이새 창에서 열기 ↗

문제 14. 밀어 주지 않는 그네

아무도 밀어 주지 않는 그네가 공기 저항 때문에 조금씩 잦아든다. 한 번 왕복할 때마다 가장 멀리 가는 거리도 0.9배, 가장 낮은 곳을 지나는 빠르기도 0.9배가 된다고 하자. 위치–운동량 평면에서 그네 상태들의 무리가 차지하는 넓이는 한 번 왕복할 때마다 몇 배가 되는가? 10번 왕복하면?

김민준 M11
김민준

흔들리는 폭이 0.9배니까 넓이도 0.9배요. 10번이면 0.9^10 ≈ 0.35배.

이서연 S06
이서연

넓이는 가로 곱하기 세로잖아. 위치 방향도 0.9배, 운동량 방향도 0.9배면?

김민준 M04
김민준

아, 0.9 × 0.9 = 0.81배네요. 10번이면 0.81^10 ≈ 0.12배.

선생님 T01
선생님

그럼 계속 왕복하면 상태들의 무리는 어디로 가죠?

이서연 S01
이서연

넓이가 0으로 줄어드니까 원점, 곧 가장 낮은 곳에 멈춘 상태 한 점으로 모여요. 마찰 없는 그네였다면 넓이가 그대로라 한 점에 모일 수 없었을 거고요.

문제 15. 모멘텀 SGD의 위상공간

손실 U(θ) = θ²/2를 모멘텀 SGD(p ← μp − η∇U(θ), θ ← θ + p)로 최소화한다. 학습률 η = 0.1, 모멘텀 계수 μ = 0.9일 때 한 번의 갱신이 (θ, p) 평면의 넓이를 몇 배로 바꾸는지 구하고, μ = 1이면 어떻게 되는지 말하라. (풀어 본 뒤 위젯 4의 「문제 15 불러오기」로 확인해 보자.)

김민준 M11
김민준

아까 그네랑 같은 셈이죠? 버퍼에 0.9를 곱하니까 운동량 방향이 0.9배, 위치 방향도 0.9배, 그래서 넓이는 0.81배요.

이서연 S06
이서연

위치에는 0.9를 곱하지 않잖아. θ ← θ + p라서 위치는 줄어들지 않고 새 운동량만큼 옮겨지기만 해. 그네처럼 두 방향이 다 줄어든다고 볼 수 없어.

김민준 M05
김민준

어… 그럼 위치 방향은 1배라서 넓이도 0.9배? 그런데 학습률이 위치를 움직이니까 그것도 섞일 것 같은데. 뭔가 헷갈리네.

선생님 T01
선생님

직접 계산해 봐요. 갱신 전후의 (θ, p) 사이의 야코비 행렬이요.

이서연 S08
이서연

p′ = 0.9p − 0.1θ, θ′ = θ + p′ = 0.9θ + 0.9p예요. (θ, p) 순서로 쓰면 행렬은 [[0.9, 0.9], [−0.1, 0.9]]이고 행렬식은 0.81 + 0.09 = 0.9예요. η를 바꿔 봐도… μ(1 − η) + μη = μ라서 항상 μ네요.

선생님 T13
선생님

그래요. 한 걸음마다 넓이가 0.9배, 50걸음이면 0.9^50 ≈ 0.0052배예요. 운동량을 매번 0.9배로 깎는 게 마찰이고, 마찰이 넓이를 줄여 상태들을 바닥으로 모아요. μ = 1이면요?

김민준 M08
김민준

행렬식이 1이니까 넓이가 보존되고… 돌려 보니까 200걸음 뒤에도 θ가 0.68이고, 마지막 50걸음 동안에도 진폭 1 안팎으로 계속 오가요. 수렴을 안 해요!

이서연 S09
이서연

μ = 1이면 걸음 크기를 √η로 보고 운동량의 눈금만 바꾸면 문제 12에서 민준이가 만든 운동량 먼저 갱신하는 적분법이랑 똑같은 식이네. 그네를 시뮬레이션하고 있었던 거야.

김민준 M10
김민준

과제에서 μ = 0.99로 했을 때 손실이 한참 출렁였던 게 이거였네요. 마찰이 1%밖에 없었던 거예요.

선생님 T14
선생님

그래서 HMC와 모멘텀 최적화는 같은 기계예요. HMC는 마찰을 0으로 두고 운동량을 다시 뽑아서 분포 전체를 돌아다니고, 최적화는 마찰로 운동량을 깎아서 한 점에 멈춰요.