인지야공

인지야공/수학·공학 노트/3번째 글

정규분포 다루기 — 잡음의 덧셈과 재매개변수화

실행: python 딥러닝/mathnotes/M7_gaussian.py 확산 모델 편의 바탕이다.


1. 정규분포끼리 더하면 — 분산이 더해진다

정규분포 두 개를 독립으로 뽑아 더하면, 결과도 정규분포다. 이때 더해지는 것은 표준편차가 아니라 분산이다.

N(0,σ12)+N(0,σ22)=N(0, σ12+σ22)\mathcal{N}(0,\sigma_1^2) + \mathcal{N}(0,\sigma_2^2) = \mathcal{N}(0,\ \sigma_1^2+\sigma_2^2)

표준편차로 보면 피타고라스 정리와 같은 모양이 된다(σ12+σ22\sqrt{\sigma_1^2+\sigma_2^2}). 실제로 재 봤다.

더한 두 잡음sd 1 + sd 1sd 0.5 + sd 2sd 3 + sd 4sd 0.1 + sd 0.02
실측 표준편차1.41512.06075.00020.1020
σ12+σ22\sqrt{\sigma_1^2+\sigma_2^2}1.41422.06165.00000.1020

3과 4를 더했더니 7이 아니라 5다. 작은 잡음은 큰 잡음 옆에서 거의 사라진다(0.1과 0.02를 더해도 0.102).


2. 그래서 확산의 닫힌 형식이 나온다

확산 모델은 데이터에 잡음을 T번 조금씩 더한다. 한 걸음은 이렇다.

xt=αt xt−1+1−αt ϵ,ϵ∼N(0,I)x_t = \sqrt{\alpha_t}\,x_{t-1} + \sqrt{1-\alpha_t}\,\epsilon,\qquad \epsilon\sim\mathcal{N}(0,I)

두 걸음을 이어 붙이면, 잡음 항 두 개가 1절의 규칙으로 하나로 합쳐진다.

x2=α1α2 x0+1−α1α2 ϵx_2 = \sqrt{\alpha_1\alpha_2}\,x_0 + \sqrt{1-\alpha_1\alpha_2}\,\epsilon

TT번 반복해도 마찬가지라, αˉt=∏s≤tαs\bar\alpha_t=\prod_{s\le t}\alpha_s 하나면 아무 시점이나 단번에 만들 수 있다.

기호뜻
αt\alpha_ttt단계에서 원래 신호를 남기는 비율(1−βt1-\beta_t)
αˉt\bar\alpha_tα\alpha들의 누적곱. tt까지 남은 신호의 비율
ϵ\epsilon표준 정규 잡음

α1=0.9, α2=0.8\alpha_1=0.9,\ \alpha_2=0.8로 두 길을 200만 번씩 비교했다.

정규분포와 재매개변수화

평균표준편차
두 걸음 나눠서2.54550.5290
한 번에(닫힌 형식)2.54550.5290

소수점 넷째 자리까지 같다. 이 한 줄 덕분에 확산 모델 학습이 실용적이 된다 — 학습할 때 tt를 아무거나 뽑아 그 시점의 잡음 낀 데이터를 즉시 만들 수 있고, 400단계를 순서대로 밟을 필요가 없다.


3. 재매개변수화 — 난수를 밖에서 뽑는다

문제가 하나 있다. “난수를 뽑는 일”에는 미분이 안 흐른다. x∼N(μ,1)x\sim\mathcal{N}(\mu,1)에서 μ\mu를 학습하려면 어떻게 해야 할까. 답은 난수를 밖에서 뽑아 식에 넣는 것이다.

x∼N(μ,σ2)⟺x=μ+σ ϵ,ϵ∼N(0,1)x \sim \mathcal{N}(\mu,\sigma^2) \quad\Longleftrightarrow\quad x = \mu + \sigma\,\epsilon,\quad \epsilon\sim\mathcal{N}(0,1)

오른쪽 식에서 ϵ\epsilon은 그냥 상수처럼 주어진 숫자고, μ\mu와 σ\sigma는 평범한 곱셈·덧셈으로 들어간다. 그래서 역전파가 그대로 흐른다. 이것이 재매개변수화(reparameterization)다.

대안도 있다 — 확률을 직접 미분하는 점수함수 추정기(REINFORCE, RLHF와 DPO 편 RLHF에서 정책 경사가 쓰는 방식)다. 둘 다 평균적으로는 맞는 값을 주지만, 흔들림이 다르다. ∇μE[x2]\nabla_\mu\mathbb{E}[x^2](참값 2μ=4.02\mu=4.0)를 400번씩 추정해 봤다.

표본 수162564096
재매개변수화 (평균 / 표준편차)3.975 / 0.5023.995 / 0.1303.997 / 0.032
점수함수 (평균 / 표준편차)3.990 / 2.2983.973 / 0.5634.009 / 0.148
분산 비21.0배18.7배21.7배

둘 다 평균은 4.0 근처로 맞지만, 점수함수 쪽이 21배 더 흔들린다. 같은 정확도를 얻으려면 표본이 21배 필요하다는 뜻이다. VAE와 확산 모델이 재매개변수화를 쓰는 이유이고, 거꾸로 미분 불가능한 것(이산 토큰 뽑기 등)을 다룰 때는 어쩔 수 없이 점수함수 쪽을 쓰며 분산 줄이기(기준선 빼기 등)에 공을 들이는 이유다.


4. 한 줄 요약

정규분포는 더할 때 분산이 더해져(3+4=5) TT번의 잡음을 한 번에 계산하게 해 주고, 재매개변수화는 난수를 밖에서 뽑아 넣어 기울기가 흐르게 하면서 흔들림을 21배 줄여 준다. 확산 모델의 학습식과 VAE가 모두 이 두 줄 위에 서 있다.


연결

표시는 이 브라우저에만 남는다. 서버로 가는 것은 없다.