원숭이도 알아 먹을 수 있는 VAE 설명

2025. 1. 3. 16:29Computer Science/ML, DL, ETC

전형적인 CS계열 학부생의 모습

학부연구생 연구에 있어서, VAE가 긴급하게 필요한 상황이라 이 글을 작성하게 되었습니다. 따라서 이 포스트는 ML이나 DL, 확률론에 대한 기본적인 개념 이해가 있다고 가정하고 진행하게 됩니다. (혹여나 오류를 발견한 Ms나 Dr이 있으시다면 양해를 부탁드립니다.)

 

Motivation

Ref : CS236, Deep Generative Models, Standford University.

- 사람의 얼굴을 모아둔 이미지가 있다고 치면, 그 이미지에는 다양한 변수들이 영향을 미쳤을 것이다. 성별, 눈 색깔, 머리 색깔, 포즈, 조명 등등. 그러나 이러한 특성들이 따로 기록되어 있지 아니한 한, 이미지에서 "잠재적으로" 나타날 뿐이다.

- 물론 이러한 변수들을 죄다 알 수 있다면 해당 변수들을 기록한 데이터에서 이미지를 뽑아 낼 수 있다는 생각이 든다. 근데 사람이 이걸 일일이 하는건 굉장히 고달픈 일이다.

- 그러나 때는 2013년, 어느 능력자들은 위에서 언급한 노가다와 그 노가다를 통한 결과물을 이용해 먹을 생각을 하게 되니..

 

그리하여 탄생하게 된것이 바로 Variational Auto Encoder, VAE이다. 

 

Idea

Ref : CS236, Deep Generative Models, Standford University.

Encoder는 정보를 압축하는 것, 다시 말해서 High Dimension을 Low Dimension으로 표현 하는 것에 의의가 있다. (다만 사실 VAE는 디코더가 메인이다.) 그리고 위의 논문의 저자들은, 기가막힌 아이디어를 생각하게 되었다.

 

바로 데이터의 분포를 가우시안 분포의 합들로 표현하고, 가우시안 분포를 뱉어내는 식으로 인코딩을 하게 하자는 것이다! (푸리에 시리즈의 아이디어를 생각하면 편할 것이다.) 그리고 이걸로 디코더를 훈련 시키면, Latent Space에서 결과물을 뽑아 낼 수 있는 좋은 생성모델(분류 모델과는 다르다.)이 탄생하게 되는 셈이다. 

 

특정 데이터의 변수들이 가우시안 등의 확률 분포를 따른다고 가정하고, 평균에 정규분포와 표준편차를 곱한 것을 더한 분포로 인코딩을 한다. 이후 이걸 다시 복원시키면 무언가 생성해 내는 셈이 되니 (사실 이게 주 목적임) 아주아주 유용하게 써먹을 수 있다!

 

Structure

Ref : process-mining.tistory.com

VAE의 구조는 아래와 같다.

- 먼저 NN에 데이터 X를 집어 넣는다. 그러면 인코더는 각 Feature들의 평균과 표준편차들을 벡터로 뽑아낸다.

- 이때 Latent Space z는 평균벡터 + 분산(표준편차)벡터 * 정규분포(?) 가 된다.

- 이후 디코더가 이걸 지지고 볶아서 다시 원래 데이터 X와 유사하게 뽑아내면 완성.

 

수학적 원리는 원숭이에게는 머리가 너무 아프니 생략하도록 하자. 다른 블로그에 찾아보면 Prior부터 시작해서 친절하게 알려주신다.

 

Appendix

- Decorder만 써먹을 수는 없다. Latent Space는 Encoder가 구하는 것인데, 사람이 이걸 구한다는건... 위에서 언급한 뻘짓을 수동으로 하는 것과 다름이 없다.

- Encoder와 Decoder는 NN이다, 즉 VAE 모델은 처음부터 잘 작동하는게 아니라 "학습"을 시켜줘야 한다! 

- 이게 왜 생성모델인지 이해가 안될 수도 있는데 (고양이 사진을 저차원으로 보냈다가 다시 원래대로 돌리는건, 얼핏 보면 뻘짓으로 들릴 수도 있으므로.), 예시를 다른 것을 들어보면 이해가 될 수 있다. 예를 들어보자. VAE 모델에 이미지를 집어넣어서, 결과를 소리로 뱉어낼 수 있다. (크로스모달 VAE) 별로 놀라울 건 없다, Decoder가 NN이고 이친구는 못하는게 없다! 다시 말해서 Encoder는 Gaussian등을 이용한 확률적(이때문에 수식이 상당히 고달프고 어지럽다.) Feature Extractor이고 (완벽한 정답은 아니지만) Decoder는 그 Feature들이 담긴 Latent Space를 우리가 원하는 결과물로 뽑아내는 NN인 셈이다. 사실 이게 VAE의 모든 정답이다.

- 신기하지 않은가? 사실 필자는 ML을 뇌가 거부하는 바람에(..) 흥미가 떨어졌었는데, VAE를 접하고 나서 공부를 할 맘이 좀 생겼다. 

'Computer Science > ML, DL, ETC' 카테고리의 다른 글

예쁜꼬마선충 시뮬레이팅하기 (Openworm)  (0) 2024.05.01