넓히기와 좁히기

α-발산: 두 KL 사이를 잇는 다이얼

“KL(π‖목표)는 너무 좁히고 KL(목표‖π)는 너무 넓히면, 그 사이를 걸을 수는 없는가?”

비유

라디오의 수신 폭 조절 다이얼 — 지금까지 라디오에는 두 가지 수신 방식만 있었다. 전 주파수대 수신(넓음)과 단일 주파수 수신(좁음)이다. 그런데 수신 폭 다이얼이 하나 더 있다면? 다이얼을 돌려 수신 폭을 고른다. 넓으면 여러 채널이 겹쳐 들리고(봉우리를 덮는 쪽), 좁으면 하나만 선명하게 들린다(봉우리를 찾는 쪽). 이 다이얼이 α다.

정의 — 아마리의 규약

아마리의 규약을 쓴다. α = +1 이 e 쪽, α = −1 이 m 쪽이다.

Dα(p ∥ q)=41−α2(1−∑yp(y)1−α2 q(y)1+α2)\begin{aligned} &\textcolor{#c2398a}{D}_{\textcolor{#8f7a5a}{\alpha}}(\textcolor{#d6479f}{p}\,\|\,\textcolor{#7f8f10}{q}) \\ &= \frac{4}{1-\textcolor{#8f7a5a}{\alpha}^2}\Big(1 - \sum_y \textcolor{#d6479f}{p}(\textcolor{#506890}{y})^{\frac{1-\textcolor{#8f7a5a}{\alpha}}{2}}\, \textcolor{#7f8f10}{q}(\textcolor{#506890}{y})^{\frac{1+\textcolor{#8f7a5a}{\alpha}}{2}}\Big) \end{aligned}
Dαα-발산α발산 지수p목표 (현실) 분포y결과 (답변)q모형\begin{array}{ll} \textcolor{#c2398a}{D}_{\textcolor{#8f7a5a}{\alpha}} & \alpha\text{-발산} \\ \textcolor{#8f7a5a}{\alpha} & \text{발산 지수} \\ \textcolor{#d6479f}{p} & \text{목표 (현실) 분포} \\ \textcolor{#506890}{y} & \text{결과 (답변)} \\ \textcolor{#7f8f10}{q} & \text{모형} \end{array}

α → −1 이면 KL(p‖q): 목표 쪽에 무게, m-사영, 봉우리를 덮는 쪽. α → +1 이면 KL(q‖p): 모형 쪽에 무게, e-사영, 봉우리를 찾는 쪽. α = 0 이면 2 Σ(√p − √q)² 로 대칭이다. 헬링거 거리 제곱을 ½ Σ(√p − √q)² 으로 정의하면 그 네 배다. α-발산은 "무엇을 곧은 길로 볼지"를 정하는 규칙(접속)도 ±α 한 쌍으로 만든다. 그래서 이 다이얼은 발산의 다이얼이면서 곧음의 다이얼이기도 하다.

봉우리 둘인 목표를 가우시안 하나로 근사하면서 α를 돌려 보자. α가 −1에서 올라가는 동안 근사는 두 봉우리 사이에 넓게 걸쳐 있다가, 어느 지점에서 한쪽 봉우리로 뛰어넘는다. 연속적인 다이얼인데 결과는 연속적이지 않을 수 있다. 두 극소점이 경쟁하다가 순위가 바뀌는 순간이다.

직접 움직여 보기

불러오는 중…

α를 스케줄링한다면

강화학습 초기에는 α를 m 쪽에 두어 다양성을 지키고, 후기에는 e 쪽으로 옮겨 정답 경로에 집중하는 설계를 생각해 볼 수 있다. “처음에는 넓게 듣다가, 점점 좁혀간다.” 다만 뒤의 엔트로피 붕괴 절에서 따로 보듯이, 다양성이 무너지는 것은 KL 벌칙을 아예 빼도 일어난다. 붕괴를 미는 힘은 KL 방향보다 보상 쪽에 있다. 발산의 모양을 바꾸는 것만으로 다양성이 지켜진다고 기대하면 안 된다.

파이썬

봉우리 둘(무게 0.6, 0.4)인 목표에 가우시안 하나를 격자 탐색으로 맞춘다.

import numpy as np

x = np.linspace(-8, 8, 401); dx = x[1] - x[0]
N = lambda m, s: np.exp(-0.5 * ((x - m) / s)**2) / (s * np.sqrt(2 * np.pi))
p = 0.6 * N(-2.5, 0.8) + 0.4 * N(2.5, 0.8)       # 봉우리 둘인 목표

def D(p, q, a):
    p, q = p + 1e-300, q + 1e-300
    if a <= -0.999: return np.sum(p * np.log(p / q)) * dx          # KL(p‖q)
    if a >= 0.999:  return np.sum(q * np.log(q / p)) * dx          # KL(q‖p)
    return 4 / (1 - a * a) * (1 - np.sum(p**((1 - a) / 2) * q**((1 + a) / 2)) * dx)

mus, ss = np.linspace(-4, 4, 161), np.linspace(0.3, 4, 75)
for a in [-1, -0.2, 0.2, 0.4, 1]:
    d, m, s = min((D(p, N(m, s), a), m, s) for m in mus for s in ss)
    print(f"α={a:+.1f}  평균 {m:+.2f}  표준편차 {s:.2f}")
# α=-1.0  평균 -0.50  표준편차 2.60
# α=-0.2  평균 -0.50  표준편차 2.50
# α=+0.2  평균 -0.45  표준편차 2.45
# α=+0.4  평균 -2.50  표준편차 0.80
# α=+1.0  평균 -2.50  표준편차 0.80

α = −1 의 답은 목표의 평균(−0.5)과 표준편차(2.58)를 맞춘 것, 곧 평균과 분산을 맞춘 것(모멘트 일치)이다. α = 0.2 와 0.4 사이에서 답이 큰 봉우리로 뛰어넘는다.

수확

“두 KL은 α-발산 한 족의 양 끝이다. 규약은 α = +1 이 e 쪽, α = −1 이 m 쪽. α는 발산의 다이얼이면서 접속의 다이얼이다. 연속적인 다이얼이 불연속적인 답을 낼 수 있다.”

문제 8. 이항족에서 α 다이얼 돌리기

결과가 0, 1, 2 인 분포 p = (0.45, 0.1, 0.45) 를 이항족 q = ((1−m)², 2m(1−m), m²) 으로 근사한다. α = −1, 곧 KL(p‖q) 를 줄이면 m = 0.5 이고, α = +1, 곧 KL(q‖p) 를 줄이면 m ≈ 0.75 (또는 0.25) 다. (가) α = 0 에서 Dα 를 m = 0.5 와 m = 0.75 에서 계산해 어느 쪽이 작은지 보라. (나) α 를 −1 에서 +1 로 천천히 올리면 가장 좋은 m 은 어떻게 움직이는가? 위 가우시안 예처럼 한순간에 뛰어넘는가?

함께 풀기

김민준 M01
김민준

(가)는 넣기만 하면 돼요. α = 0 이면 4(1 − Σ√(pq)) 니까, m = 0.5 에서 0.422, m = 0.75 에서 0.542 예요. 0.5 쪽이 작아요.

이서연 S01
이서연

α = 0 이면 p 와 q 를 바꿔도 값이 같은 대칭 발산이잖아. 어느 한쪽 끝의 편을 들 까닭이 없으니 가운데가 이기는 게 자연스러워.

김민준 M01
김민준

(나)는 위 가우시안에서 봤잖아요. 어느 α 에서 0.5 에서 0.75 로 툭 뛰어넘을 거예요. 격자로 훑어볼게요.

김민준 M06
김민준

α = 0.8 까지는 0.5 그대로인데, 0.83 에서 0.546, 0.86 에서 0.628, 0.9 에서 0.681, 0.95 에서 0.722… 어, 안 뛰어요. 조금씩 미끄러져서 0.75 로 가요.

선생님 T01
선생님

위 가우시안 예와 무엇이 다르죠?

이서연 S07
이서연

목표의 봉우리 무게요. 가우시안 예는 0.6 대 0.4 라서, 큰 봉우리 쪽 극소점과 가운데 극소점이 따로 있다가 순위가 바뀌는 순간 뛰어넘었어요. 여기는 0.45 대 0.45 로 똑같아서 m 과 1 − m 이 늘 같은 값을 줘요. 가운데 m = 0.5 가 가장 낮은 점이었다가, α ≈ 0.83 을 넘으면서 양옆으로 낮은 점 두 개가 갈라져 나오는 거예요.

선생님 T01
선생님

그러면 갈라진 두 답 가운데 실제 학습은 어느 쪽에 앉을까요?

김민준 M01
김민준

두 쪽 값이 똑같으니 출발점에 달렸겠네요. 처음 m 이 0.5 보다 조금이라도 크면 0.75 쪽, 작으면 0.25 쪽이요.

이서연 S01
이서연

연속인 다이얼이 불연속인 답을 내는 건 극소점 둘이 순위를 바꿀 때고, 대칭인 목표에서는 답이 이어진 채로 둘로 갈라지는 거네요. 해석학 시간에 x⁴ − c·x² 의 극소점이 c 가 0 을 지날 때 하나에서 둘로 갈라지던 것과 같아요.