AI/Computer Vision

[CV] Diagonal Gaussian Distribution 설명

도도걸만단 2025. 9. 29. 19:58
반응형


Diagonal Gaussian Distribution (대각 가우시안 분포)VAE(Variational Autoencoder) 같은 모델에서 latent space를 정의할 때 아주 자주 등장함.


1.  Gaussian Distribution

  • 우리가 아는 정규분포 \(N(μ,σ2)N(\mu, \sigma^2)\) 는 평균(mean) μ 와 분산(variance) σ^2 로 정의
  • 1차원에서는 μ 값 중심으로 종 모양 곡선이 생기고, σ 크기에 따라 퍼짐 정도가 달라짐

2. 다차원 가우시안 분포

VAE의 latent space는 보통 벡터(예: 4채널, 8채널, 256차원 등)라서 다차원 정규분포가 필요.

다차원 정규분포:

 

\(p(z) = \frac{1}{(2\pi)^{d/2} |\Sigma|^{1/2}} \exp\left(-\frac{1}{2}(z-\mu)^T \Sigma^{-1} (z-\mu)\right)\)

  • z: 샘플 벡터 (latent vector)
  • μ: 평균 벡터
  • Σ: 공분산 행렬 (covariance matrix)

3. Covariance Matrix 문제

  • Σ 는 d×d 행렬.
  • 일반적으로 모든 차원 간 상관관계(correlation)를 다 표현할 수 있음.
  • 하지만 이렇게 하면 계산량이 너무 크고 학습이 불안정.
    • 예: latent dim = 1024라면, Σ 크기는 1024×1024

각 변수들의 선형적인 관계와 방향을 나타내며 n x n 의 정방행렬(square matrix)

 


4. Diagonal Gaussian Distribution

👉  간단한 근사를 사용

  • 공분산 행렬 Σ대각 행렬(diagonal matrix)이라고 가정.
  • \(\Sigma = \text{diag}(\sigma_1^2, \sigma_2^2, \ldots, \sigma_d^2)\)
  • 즉, 각 차원은 독립적이고 서로 상관관계가 없다고 보는것.
  • 이렇게 하면 각 차원마다 \(\mu_i, \sigma_i\)만 있으면 되고, 계산량이 확 줄음.


5. VAE에서 어떻게 쓰이는가?

  • 인코더 CNN은 입력 이미지 x에서 latent mean μ 과 log-variance \(\log \sigma^2\)를 출력.
  • 그 결과, latent vector는 다음 분포를 따른다고 가정 : \(q(z|x) = \mathcal{N}(z; \mu(x), \text{diag}(\sigma(x)^2))\)
  • 이게 바로 Diagonal Gaussian Distribution

6. 샘플링 (Reparameterization Trick)

VAE에서 학습할 때는 z를 이 분포에서 샘플링해야 함.

\(z = \mu + \sigma \odot \epsilon, \quad \epsilon \sim \mathcal{N}(0, I)\)

  • 여기서 epsilon 은 표준정규분포에서 뽑은 노이즈.
  • 이렇게 하면 gradient가 μσ까지 잘 전달돼서 backprop이 가능해짐.

결론

  • Diagonal Gaussian Distribution = 다차원 가우시안에서 공분산을 대각 행렬로 단순화한 분포.
  • 장점:
    1. 계산량 크게 절약 (full covariance 불필요)
    2. 학습 안정성 ↑
    3. 구현 간단 (평균 벡터 + 분산 벡터만 있으면 됨)
  • 단점:
    • 각 차원이 독립이라고 가정 → 실제 latent feature 간 상관관계를 무시.

 

 

 

reference

https://ploradoaa.tistory.com/137 

반응형