VAE (1)

skjh314108·2026년 9월 12일

AI 스터디

목록 보기
9/13

참고 자료


1. VAE


VAE(Variational Autoencoder)는 오토인코더 구조에 확률적인 개념을 도입한 모델입니다.

오토인코더에서는 인코더에서 하나의 고정된 잠재벡터를 산출하지만

VAE에서는 잠재벡터의 확률 분포를 산출합니다.
이 확률 분포로부터 zz를 만들어내고 디코더는 이를 이용해 입력을 복원합니다.

2. 배경


현실에서 관찰되는 데이터는 일정한 규칙에 따라 생성됩니다 하지만 실제로는 그 규칙을 알기 어렵습니다.

따라서 데이터가 생성되는 과정을 하나의 확률분포로 표현할 수 있으며
실제 데이터의 알 수 없는 분포를 p∗(x)p^*(x)라고 나타냅니다.

가장 이상적인 건 이 p∗(x)p^*(x) 분포를 파악하는 것이겠지만
제한된 데이터로 이 구조를 파악하는것은 불가능합니다.

그러므로 파라미터 θ\theta를 가지는 모델 분포 pθ(x)p_\theta(x)를 정의하고 이를 p∗(x)p^*(x)에 최대한 가깝게 학습합니다.

각 데이터가 서로 독립적으로 같은 분포에서 생성되었다고 가정하였을 때
모델이 전체 데이터셋을 관찰할 확률은 각 데이터의 확률을 곱한 형태로 나타낼 수 있습니다.

pθ(D)=∏i=1Npθ(x(i))p_\theta(D) =\prod_{i=1}^{N}p_\theta(x^{(i)})

이걸 계산이 용이하도록 log를 취하면

log⁡pθ(D)=∑i=1Nlog⁡pθ(x(i))\log p_\theta(D) = \sum_{i=1}^{N}\log p_\theta(x^{(i)})

이 값을 log-likelihood라고 합니다.

학습의 목표는 관찰한 데이터가 발생할 log-likelihood를 가장 크게 만드는
파라미터 θ\theta를 찾는 것입니다.

만들어진 확률분포는 두가지 특징을 지녀야 합니다.

  1. 복잡한 구조를 담아 낼 수 있도록 유연해야 합니다. (flexible)

  2. 잠재 변수의 분포와 같은 사전지식을 이용하여 모델이 학습할 분포에 적절한 제약을 줄 수 있어야 합니다. (incorporate knowledge)

VAE는 신경망의 유연성을 이용하면서도 잠재 변수에 사전분포를 설정할 수 있기 때문에 이러한 모든 조건을 만족합니다.


3. 신경망 활용


신경망은 비선형 함수를 이용해서 복잡한 확률모델의 파라미터를 계산할 수 있습니다.

또한 신경망의 연산은 대체로 미분가능하기 때문에 역전파와 SGD를 활용하여 파라미터를 효율적으로 학습할 수 있습니다.

이때 신경망은 일반적인 신경망과 달리 정답을 직접 출력하는 것이 아닙니다.

데이터가 따르는 확률분포의 파라미터를 출력합니다.
예를 들어 분류 문제에서는 입력 xx를 신경망에 넣어 각 범주에 속할 확률 p\mathbf{p}를 계산할 수 있습니다.

p=NeuralNet⁡θ(x)\mathbf{p}=\operatorname{NeuralNet}_{\theta}(x)
Categorical⁡(y;p)\operatorname{Categorical}(y;\mathbf{p})

여기서 p=(p1,p2,⋯ ,pK)\mathbf{p}=(p_1,p_2,\cdots,p_K)는 일반적으로 softmax 함수를 통해 계산된 각 범주의 확률이며
다음 조건을 만족합니다.

pk≥0,∑k=1Kpk=1p_k\geq 0, \qquad \sum_{k=1}^{K}p_k=1

요약하자면 신경망은 하나의 범주를 정답으로 바로 출력하는 것이 아니라,
yy가 각 범주에 속할 확률을 나타내는 범주형 분포를 구성합니다.

VAE에서도 같은 원리가 사용됩니다.

VAE의 인코더는 잠재 변수 zz를 직접 출력하지 않고, zz가 따르는 정규분포의 평균 μ\mu와 로그 표준편차 log⁡σ\log \sigma을 출력합니다.

(μ,log⁡σ)=EncoderNeuralNet⁡ϕ(x)(\mu,\log\sigma) = \operatorname{EncoderNeuralNet}_{\phi}(x)
N(z;μ,diag⁡(σ))\mathcal{N}\left(z;\mu,\operatorname{diag}(\sigma)\right)

이후 VAE는 인코더가 만든 확률분포에서 잠재 변수 zz를 샘플링합니다.

따라서 VAE의 신경망은 하나의 고정된 잠재 벡터를 계산하는 것이 아니라, 입력 데이터가 잠재 공간에서 따르는 확률분포를 계산하는 역할을 합니다.

4. 잠재변수


이미지 데이터를 예시로 하였을 때

이미지 xx가 dd개의 픽셀로 구성되어 있다고 가정하고 이에 대한 확률분포를 구할 때

가장 단순한 방법은 모든 픽셀이 서로 독립이라고 가정하는 것입니다.
이 경우 이미지 전체의 확률은 각 픽셀의 확률을 곱하여 나타낼 수 있습니다.

하지만 예를 들어 손글씨 숫자 이미지에서 한 픽셀의 색은 주변 픽셀뿐만 아니라 숫자의 종류, 기울기, 선의 굵기와 같은 전체적인 특징과 관련되어 있습니다.

모든 픽셀을 독립적으로 처리하면 이러한 복잡한 구조와 픽셀 사이의 관계를 제대로 표현하기 어렵습니다.

이를 보완하기 위해
실제 데이터 xx에서 볼 수는 없지만 존재하는 잠재변수 zz를 도입합니다.

잠재변수를 이용한 데이터 생성 과정은 다음과 같습니다.

z∼p(z)z\sim p(z)
x∼pθ(x∣z)x\sim p_\theta(x\mid z)

먼저 사전분포 p(z)p(z)에서 잠재변수 zz를 추출하고, 주어진 zz를 바탕으로 조건부 분포 pθ(x∣z)p_\theta(x\mid z)에서 데이터 xx를 생성합니다.

관찰 데이터 xx의 확률분포는 가능한 모든 zz에 대해 결합확률을 적분하여 구합니다.

Pθ(x)=∫Pθ(x,z) dz=∫P(z)Pθ(x∣z) dzP_\theta(x) = \int P_\theta(x,z)\,dz = \int P(z)P_\theta(x\mid z)\,dz

이 식은 다양한 잠재변수 zz에서 만들어질 수 있는 데이터의 분포를 모두 고려한다는 의미입니다.

서로 다른 zz는 숫자의 종류, 글씨체, 기울기 또는 선의 굵기와 같은 서로 다른 특징을 나타낼 수 있습니다.

따라서 잠재변수를 도입하면 단순히 각 픽셀의 독립적인 확률만 계산하는 것보다 데이터의 복잡한 구조를 더욱 유연하게 표현할 수 있습니다.


5. intractabilities


잠재변수 zz를 도입하면 데이터의 구조를 잘 나타낼 수 있지만
새로운 문제가 발생합니다.

데이터 xx의 확률을 구하려면 가능한 모든 잠재변수 zz에 대해 다음 적분을 계산해야 합니다.

∫P(z)Pθ(x∣z)dz\int P(z)P_\theta(x\mid z)dz

그러나 zz가 고차원이고 Pθ(x∣z)P_\theta(x\mid z)가 비선형 신경망으로 표현되면 이 적분은 계산하기 어렵습니다.

연속적인 zz는 가능한 값이 무한히 많으므로 모든 값을 직접 확인하는 것도 불가능합니다.

이처럼 식은 정의할 수 있어도 정확한 값을 계산하기 어려운 문제를 계산 불가능성(intractability)이라고 합니다.


모델 학습의 목표는

arg⁡max⁡θ∑i=1Nlog⁡Pθ(x(i))\underset{\theta}{\arg\max} \sum_{i=1}^{N}\log P_\theta(x^{(i)})

이 θ\theta를 구하는 것이였습니다.

여기에 적분 식을 넣으면

arg⁡max⁡θ∑i=1Nlog⁡∫P(z)Pθ(x(i)∣z)dz\underset{\theta}{\arg\max} \sum_{i=1}^{N} \log \int P(z)P_\theta(x^{(i)}\mid z)dz

경사하강법으로 θ\theta를 학습하려면 이 함수를 θ\theta에 대해 미분해야 합니다.

∇θlog⁡∫P(z)Pθ(x∣z)dz\nabla_\theta \log \int P(z)P_\theta(x\mid z)dz

적분값 Pθ(x)P_\theta(x)을 정확하게 계산할 수 없으므로 전체 log-likelihood의 값과 기울기를 직접 구하기 어렵습니다.

따라서 잠재변수 모델에서는 다음 두 가지 문제가 발생합니다.

  1. 주변 가능도 Pθ(x)P_\theta(x)를 구하기 위한 적분을 계산하기 어렵습니다.

  2. 로그 가능도의 기울기를 계산하기 어려워 경사하강법을 사용하기 힘듭니다.

이 문제점들을 해결하기 위해 근사분포 qϕ(z∣x)q_\phi(z\mid x)를 도입합니다.

profile
인공지능, 알고리즘, ps 등을 다룹니다

0개의 댓글