티스토리 뷰
본 내용은 필자가 다음에 찾아보기 위해 'ratsgo's blog'에서 가져온 내용입니다. (글 하단에 Reference 참고)
VAE는 데이터가 생성되는 과정, 즉 데이터의 확률분포를 학습하기 위한 두 개의 뉴럴네트워크로 구성되어 있습니다. VAE는 잠재변수(latent variable) z를 가정하고 있는데요.
- 우선 encoder라 불리는 뉴럴네트워크는 관측된 데이터 x를 받아서 잠재변수 z를 만들어 냅니다.
- decoder라 불리는 뉴럴네트워크는 encoder가 만든 z를 활용해 x를 복원해내는 역할을 합니다.
VAE 아키텍처는 다음 그림과 같습니다.
그렇다면 여기에서 잠재변수 z는 어떤 의미인 걸까요? 고양이 그림 예시를 들어 생각해보겠습니다. 수많은 고양이 사진이 있다고 칩시다. 사람은 고양이 사진들이 저마다 다르게 생겼다 하더라도 이들 사진이 고양이임을 단박에 알아낼 수 있습니다. 사람들은 고양이 사진을 픽셀 단위로 자세하게 보고 고양이라고 판단하는게 아니라, 털 색깔, 눈 모양, 이빨 개수 등 추상화된 특징을 보고 고양이라는 결론을 냅니다.
이를 잠재변수 z와 VAE 아키텍처 관점에서 이해해 보자면,
- encoder는 입력 데이터를 추상화하여 잠재적인 특징을 추출하는 역할
- decoder는 이러한 잠재적인 특징을 바탕으로 원 데이터로 복원하는 역할
실제로 잘 학습된 VAE는 임의의 z값을 decoder에 넣으면 다양한 데이터를 생성할 수 있다고 합니다.
코드(Pytorch)와 수식적인 이해는 Reference 에 표시된 링크를 통해 확인!
Reference
[1] https://ratsgo.github.io/generative%20model/2018/01/27/VAE/
'내가 모르는 내용 정리' 카테고리의 다른 글
Precision, Recall, F1-score, Accuracy, ROC-AUC, G-measure (1) | 2020.06.30 |
---|
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글