저는 Prof. Prathosh AP의 공개 강의인 Generative AI의 수학적 기초를 공부하고 있습니다. 이 플레이리스트가 핵심입니다. 본 노트는 각 섹션에 대한 저의 심층 분석 자료이며, 그림이 중요한 부분에서는 시각적 설명으로, 선행 지식이 필요한 부분에서는 우회적인 설명을, 그리고 공식은 제가 이해한 말로 풀어서 설명합니다.
이전 내용: 섹션 2: 생성 모델의 일반 원리.
섹션 3a: f-발산 (f-divergences)
섹션 2는 발산(divergence)에 대한 빈 공간을 남겼고, 이 노트가 그 자리를 채웁니다. 하나의 볼록 함수 $f$가 점수(score)를 선택합니다. 아직 작성되지 않은 섹션 3b는 볼록 쌍대 함수(convex conjugate)이며, 이는 샘플로부터 $D_f$를 추정하는 재작성 방식이고, GAN으로 넘어가는 다리 역할을 합니다.
제가 전달하고자 하는 명제는 다음과 같습니다:
밀도 함수가 각각 $P_x$와 $P_ heta$인 두 분포에 대해,
$$
D_f(P_x | P_ heta) = \int_{\mathcal{X}} P_\theta(x), f!\left(\frac{P_x(x)}{P_\theta(x)}\right) dx
$$
여기서 $f: \mathbb{R}+ \to \mathbb{R}$는 볼록하고 하한 연속(lower-semicontinuous)이며, $f(1) = 0$입니다. 그러면 $D_f \ge 0$이고, $P_x = P\theta$일 때만 $D_f = 0$입니다.
직관 (Intuition)
저는 각 지점 $x$에서 데이터가 그곳에 얼마나 많은 확률을 할당하는지(data puts)와 모델이 그곳에 얼마나 많은 확률을 할당하는지(model puts)를 비교합니다. 비율 $P_x / P_ heta$는 두 값이 일치할 때 1이고, 그렇지 않을 때는 다른 값을 가집니다. 함수 $f$는 이러한 국소적인 불일치(local mismatch)를 페널티로 바꿉니다. 적분은 이 페널티들을 평균화합니다. 서로 다른 $f$는 서로 다른 종류의 불일치를 처벌하므로, 하나의 템플릿이 한 가족을 만듭니다.
종단점별 부하 테스트 (The load test, by endpoint)
저는 합성 트래픽과 실제 접근 로그를 종단점(endpoint)별로 비교합니다.
$$
\text{비율} = \frac{\text{실제 트래픽 점유율}}{\text{합성 트래픽 점유율}}
$$
비율이 1이라는 것은 생성기(generator)가 해당 종단점을 정확히 맞췄다는 의미입니다. 비율이 3이라는 것은 실제 사용자가 생성기가 하는 것보다 3배 더 자주 접근했다는 의미입니다. 비율이 0.2라는 것은 생성기가 과도하게 특정 종단점을 강조했지만, 실제 사용자는 거의 건드리지 않았다는 의미입니다.
단일 점수는 어떤 실패에 중점을 두는지에 따라 달라진다.
- 실제 트래픽 패턴 누락. 비율이 클 때 페널티가 커진다. 이것이 forward KL이다.
- 실제 사용자가 절대 보내지 않을 가짜 트래픽. 비율이 0에 가까울 때 페널티가 커진다. 이것이 reverse KL이다.
- 무한대로 발산하지 않는 균형 잡힌 점수. 이것이 Jensen–Shannon 또는 total variation이다.
$f$는 페널티이며, 적분은 끝점들(endpoints)에 대한 평균을 나타낸다.
시각 자료 (Visual)
$P_x$는 0을 중심으로 하는 표준 종 모양 분포(bell). $P_{ heta}$는 같은 종 모양 분포를 $\mu$로 이동시킨 것이다. 임의의 $f$를 선택한다. 상단 곡선이 페널티이며, $(1, 0)$을 지난다. 코랄 곡선은 적분 함수인 $P_{ heta}(x) \cdot f(P_x(x)/P_{ heta}(x))$이다. 네 개의 숫자는 적분값들이다.
$\mu$를 이동하면서 내가 원하는 세 가지 사항:
- $\mu = 0$일 때 모든 발산 값은 0이다. 분포가 일치한다는 것은 $f(1) = 0$인 모든 $f$에 대해 페널티가 0임을 의미한다.
- forward KL의 경우, 코랄 곡선이 특정 지점에서 0 아래로 떨어진다. 단일 점수가 음수 기여를 할 수 있다. 하지만 전체 합은 절대 그렇지 않다. 그 증명은 아래에 있다.
- Jensen–Shannon과 total variation은 $\mu$가 커짐에 따라 평탄해진다(level off). 둘 다 유계(bounded)이다. 두 KL 값은 계속해서 상승한다. 이러한 포화 현상(saturation)이 GAN이 Jensen–Shannon을 목표로 삼기 때문에, 데이터와 모델이 겹치지 않을 때 학습을 멈출 수 있는 나중의 이유가 된다.
비유적 설명 (Detours)
밀도 비율 (Density ratio). $u(x) = P_x(x) / P_{ heta}(x)$는 $x$ 지점에서 실제 데이터가 모델 데이터보다 얼마나 더 가능성이 높은지를 묻는다.
- $u = 1$: 이 지점에서 일치함.
- $u > 1$: 모델이 여기서 과소 생산(under-produces)하고 있음.
- $u < 1$: 모델이 여기서 과다 생산(over-produces)하고 있음.
- $u = 0$: 모델이 데이터가 절대 가지 않는 곳에 질량(mass)을 배치함.
만약 모든 곳에서 $P_x = P_{ heta}$라면, $u(x)$는 어디서나 1이다. $f$는 오직 이 비율만을 본다.
볼록성 (Convexity). 함수가 볼 모양일 때 볼록하다고 한다: 그래프 위의 임의의 두 점을 잇는 직선이 곡선 위에 있거나 그보다 위에 놓인다. $\lambda \in [0, 1]$에 대해,
$$ [\lambda f(u_1) + (1-\lambda) f(u_2) ;\ge; f\big(\lambda u_1 + (1-\lambda) u_2\big)]$$
출력값의 평균은 평균 출력값보다 크거나 같다. $f(u) = u^2$, $u_1 = 0$, $u_2 = 2$, $\lambda = \tfrac{1}{2}$로 확인해 보자. 출력값의 평균은 $\tfrac{1}{2}(0 + 4) = 2$이다. 평균의 출력값은 $f(1) = 1$이다. 그리고 $2 \ge 1$이다.
볼록성(Convexity)이 $D_f \ge 0$을 강제한다.
기댓값 (Expectation)을 적분으로. 연속 밀도 함수 $p$에 대해, $h(x)$의 기댓값은 확률 가중 평균이다:
$$ [\mathbb{E}{x \sim p}[h(x)] = \int{\mathcal{X}} p(x)\cdot h(x)\cdot dx ]$$
젠센 부등식 (Jensen's inequality). 볼록한 $f$와 확률 변수 $U$에 대해,
$$ [\mathbb{E}[f(U)] ;\ge; f(\mathbb{E}[U]) ]$$
이는 두 지점 정의를 모든 평균으로 확장한 것이다. 그릇 모양의 표면 위에서 점들의 평균은 평균값에서의 값보다 높게 떨어지며, 결코 낮지 않다.
$$ D_f(P_x ,|, P_\theta) = \int_{\mathcal{X}} P_\theta(x)\cdot f!\left(\frac{P_x(x)}{P_\theta(x)}\right) dx = \mathbb{E}{x \sim P\theta}!\left[f!\left(\frac{P_x(x)}{P_\theta(x)}\right)\right] $$
소리 내어 읽기: 모델에서 추출된 점들 각각에 대해 두 밀도가 얼마나 불일치하는지에 대한 평균 페널티.
| 기호 | 의미 | 유형 / 형태 | 역할 |
|---|
| $P_x(x)$ | $x$에서의 실제 밀도 (true density) | 스칼라 $\ge 0$ | 데이터의 가중치 |
| ... | | | |
| 각 조건은 그 자리를 차지한다: | | | |
- $f(1) = 0$. 분포가 일치하면, $u = 1$이 모든 곳에서 성립하므로 $D_f = \int P_\theta \cdot 0, dx = 0$.
- 볼록성 (Convex). 이는 아래의 $D_f \ge 0$ 증명이다.
- 아래준연속성 (Lower-semicontinuous). 갑작스러운 하향 점프가 없어야 한다. 섹션 3b에서 결측 함수(conjugate)가 잘 작동하기 위해 필요하다.
$D_f \ge 0$ 증명
강의에서는 이 속성을 언급한다. 이것이 간략한 증명이다.
첫 번째 줄은 기대값(expectation) 형태입니다. 두 번째는 젠센 부등식(Jensen's inequality)을 이용한 것입니다. 세 번째는 기대값을 적분으로 표현한 것이며, $P_{\theta}$가 상쇄됩니다. 밀도 함수(density)는 적분하면 1이 되므로, $f(1) = 0$입니다.
말로 풀어서 설명하자면: 모델에 의해 가중치가 부여된 평균 비율은 정확히 1입니다. 1 주변에서 평균화되는 그릇 모양의 페널티는 1에서의 값인 0보다 낮아질 수 없습니다. 이것이 바로 코랄 곡선(coral curve)이 국소적으로 음수가 될 수는 있지만 전체 합계는 항상 비음수(non-negative)를 유지할 수 있는 이유입니다.
하나의 템플릿, 네 가지 $f$ 선택지
| 이름 | $f(u)$ | 결과 분산 (Resulting divergence) | 행동 양식 (Behaviour) |
|---|
| Forward KL | $u \log u$ | $\displaystyle\int P_x \log\frac{P_x}{P_{\theta}}, dx = D_{\mathrm{KL}}(P_x , | , P_{\theta})$ |
| ... | | | |
| Forward KL은 $f(u) = u \log u$를 가진 템플릿이며, $P_{\theta}$가 상쇄됩니다: | | | |
$$
\int P_\theta \cdot \frac{P_x}{P_\theta} \log\frac{P_x}{P_\theta}, dx = \int P_x \log\frac{P_x}{P_\theta}, dx
Reverse KL은 $f(u) = -\log u$로 동일한 템플릿을 사용합니다. 이를 대입하면 $\int P_{\theta} \log(P_{\theta} / P_x), dx$를 복원할 수 있습니다. 위에서 언급된 Jensen–Shannon $f$는 $f(1) = 0$을 만족합니다. GAN 관련 글에서는 종종 $f(u) = u \log u - (u+1)\log(u+1)$를 사용하는데, 이는 상수 이동(constant shift)으로 인해 이 공식과 다르며, 이것이 그 손실 함수가 Jensen–Shannon과 유사하다고 설명되는 이유입니다. Total variation은 $\tfrac{1}{2}\lvert u - 1 \rvert$이며, 이것이 템플릿을 $\tfrac{1}{2}\int \lvert P_x - P_{\theta} \rvert$로 바꾸는 선택지입니다.
손으로 계산하기에 충분히 작은 예시
두 가지 결과가 있습니다. $P_x = (0.5, 0.5)$는 공정한 동전이고, $P_{\theta} = (0.8, 0.2)$는 편향된 모델입니다.
비율은 $u_1 = 0.5 / 0.8 = 0.625$ (과잉 생산)와 $u_2 = 0.5 / 0.2 = 2.5$ (과소 생산)입니다. 유한 집합에서의 템플릿은 $D_f = \sum_i P_{\theta}(i), f(u_i)$입니다.
| Divergence | Computation | Value |
|---|
| Forward KL | $0.8(0.625 \ln 0.625) + 0.2(2.5 \ln 2.5) = 0.8(-0.294) + 0.2(2.291)$ | $\approx 0.223$ |
| ... | | |
| All four are positive, and they disagree on the size of the gap. Forward KL is not reverse KL, so the score is not symmetric. In the forward-KL row, outcome 1 contributes about $-0.235$ and outcome 2 about $+0.458$. Negative pieces, positive total. That is Jensen. If $P_{\theta} = (0.5, 0.5)$, every ratio is 1 and every row is 0. | | |
핵심 문제점: 섹션 3b
$D_f$를 계산하려면 값 $P_x(x)$와 $P_{\theta}(x)$가 필요합니다.
- $P_x$는 알 수 없습니다. 섹션 1에서는 샘플만 제공했습니다.
- $P_{\theta}$는 암시적입니다. 섹션 2에서는 밀도 함수를 평가하는 것이 아니라 $g_{\theta}(z)$로 샘플링할 수 있게 합니다.
따라서 비율 $u(x)$를 형성할 수 없습니다. 대신, 대수의 법칙에 따라 샘플에 대한 평균을 형성할 수 있습니다. 섹션 3b는 $D_f$를 공식에서 밀도 값 없이 $P_x$ 하에서의 기댓값과 $P_{\theta}$ 하에서의 기댓값으로 다시 작성해야 합니다. 이때 사용되는 도구가 볼록 쌍대 함수(convex conjugate)입니다. 그 결과가 바로 GAN 목적 함수(GAN objective)입니다.
강의에서 이 위치는
- 이 노트는 '어떤 발산(divergence)을 사용할까?'라는 질문에 단 하나의 선택지가 아닌 메뉴로 답합니다.
- GAN은 Jensen–Shannon과 유사한 $f$를 선택합니다.
- VAE, 확산 모델(diffusion), 그리고 자기회귀 모델(autoregressive models)은 최대 우도 추정치인 순방향 KL (forward KL)을 최소화합니다.
- Jensen–Shannon 같은 유계 점수(bounded scores)는 $P_x$와 $P_ heta$가 겹치지 않을 때 포화됩니다. 이는 f-발산이 아닌 Wasserstein 거리가 나중에 나온 답변입니다.
- 모델 $\pi_ heta$를 참조 모델 $\pi_{\mathrm{ref}}$에 가깝게 유지하는 KL 항, 즉 $D_{\mathrm{KL}}(\pi_ heta | , ilde{\pi}_{\mathrm{ref}})$, 역시 같은 계열입니다.
궁금한 점:
- 왜 $f(1) = 0$을 만족해야 하나요? 만약 $f(1) = 5$라면 무엇이 깨지나요?
- 풀어본 예시에서 결과물 1은 순방향 KL에 음의 양을 기여합니다. 왜 이것이 $D_f \ge 0$을 깨뜨리지 않나요?
- 왜 데이터셋을 $D_f$ 공식에 직접 대입하여 계산할 수 없나요?