이번에 알아볼 것은 Variational Auto Encoder에서 중요한 역할을 하는 개념 중 하나인 ELBO에 대해서 알아보겠습니다.
1. ELBO란? Evidence Lower Bound란?
- ELBO는 학습 데이터의 log likelihood를 최대화하기 위해 사용되는 최적화 목적함수 중 하나입니다.
- ELBO는 입력 데이터 x에 대한 잠재 변수 z가 있는 모델에서 log likelihood 인 logp(x)를 직접 계산하기 어려운 경우, 이를 대신해서 최적화하는 하한(Lower Bound)를 제공해줍니다.
- ELBO의 유도(Derivation)에 대해 알아본다면, 다음과 같이 데이터 x의 loglikelihood인 logp(x)를 approximate하는 상황을 가정해보겠습니다.
- 이 적분은 계산하기 어려운 경우가 많으며, 특히 샘플링 된 x를 가지고 z에 대한 모집단을 활용해야한다는 부분때문에 결국 값을 근사하는 추론을 할 수 밖에 없습니다.
- 이를 Expectiation의 개념을 활용해 식을 변형하고, p(z given x)를 근사하는 q(z given x)가 있다고 할때, 아래와 같이 정리할 수 있습니다.
- 위 식에서 두번째 항인 KL Divergence 항은 두 분포인 q(z given x)와 p(z given x) 사이의 분포 차이를 측정하는 항이 되겠습니다. 이때 KL Divergence 는 항상 0보다 크거나 같기에 결국 다음과 같은 하한(Lower Bound) 식을 얻을 수 있습니다.
- 이를 우리는 ELBO라고 합니다.
- 이 ELBO를 분해 해보면 다음과 같이 2가지 항으로 구성됩니다.
* 첫번째인 재구성 손실은 Auto Encoder의 재구성 손실 개념과 같습니다.
* 두번째인 정규화항은 z에 대한 근사 분포인 q(z given x)와 실제 z의 분포인 p(z)의 차이를 줄이는 항이 되겠습니다. ELBO를 최대화하는 입장에서 KL Divergence의 항이 작을수록 앞에 붙은 -와 연산되어 전체적인 ELBO의 값이 커지기 때문에 해당 Term을 활용해서 목적 함수를 최대화 할 수 있습니다.
[딥러닝 with Python] KL Divergence Loss란?
'딥러닝 with Python' 카테고리의 다른 글
[딥러닝 with Python] 인공신경망(Artificial Neural Network / ANN), 데이터 증강(Data Augmentation) (1) | 2024.11.01 |
---|---|
[개념 정리] Linear probing이란? (0) | 2024.10.31 |
[개념 정리] 스케쥴러란? Scheduler (딥러닝 학습) (0) | 2024.10.29 |
[딥러닝 with Python] VAE (Variational Auto Encoder) 개념 정리 (1) | 2024.10.28 |
[딥러닝 with Python] GELU란?(Gaussian Error Linear Unit) (0) | 2024.10.27 |
댓글