-
GAN (Generative Adversarial Network)BIG DATA & AI 2021. 12. 9. 22:29반응형
딥러닝 전반을 공부하면서 최근 핫한 딥러닝 분야 중 하나인 GAN을 접하게 되었다. 개념이 바로 와닿지 않아 차근차근 정리하면서 공부해보려고 한다. 😀
Generative Model
우선 GAN을 알기 위해서는 generaive model부터 알아야 한다. 이를 직역하면 '생성 모델'로, 주로 주어진 training data에 대해 같은 distribution을 가진 새로운 sample을 만들어 주는 (generate) 모델이다. Machine learning에서는 아주 많은 dataset이 필요한데, 사실 data를 취득하는 것에는 한계가 있다. 예를 들어 한 장소의 사계절 이미지 데이터가 필요하다고 치면, 실제 데이터를 얻기 위해서는 봄, 여름, 가을 그리고 겨울마다 그 장소에 찾아가서 사진을 찍어야 할 것이기 때문에 데이터 취득에만 1년 남짓이 소모된다. 이러한 관점에서 generative model이 나오게 되었고, dataset 증대, super-resolution (초화질, 즉 낮은 화질의 image/video를 높은 화질로 만들어 줌), 자동 채색 등에 활발하게 사용되고 있다.
이렇게 데이터를 생성하는 문제를 풀 수 있는 방법은 Boltzmann machine, Auto-encoder, GAN 등 다양한데, 본 글에서는 GAN을 다루도록 하겠다!
GAN
GAN은 크게 generator와 discriminator로 구성되어 있다.
- Generator (생성자) : real data의 distribution (주로 Gaussian 분포)을 input으로 받아 fake samples를 만든다.
- Discriminator (판별자) : generator가 만든 sample의 confidence의 확률, 아래 그림의 p를 계산하여 sample이 진짜인지 아닌지 구분한다.
GAN은 loss function이 아닌 objective function(목적 함수)를 사용한다. 딥러닝에서는 주로 loss function을 정의하여 loss가 최소가 되는 지점을 찾지만, 이와 달리 GAN에서는 generator는 진짜같은 fake sample을 만들기 위해 D(X)=1을 찾고, discriminator는 가짜 이미지 판결을 잘 하기 위해 D(X)=0이 되는 지점을 찾기 때문에 이 두 반대되는 속성에 부합하는 상충된 지점을 찾는 것이 목표이고, 최적화하는 방법이다.
GAN에서 발생하는 문제들에 대해서도 알아보자.
Vanishing Gradients
Discriminator가 너무 학습력이 좋을 때, generator가 만든 fake sample을 모두 fake로 처리해버리면 새로 generate되는 data가 없기 때문에 vanishing gradients가 발생하게 된다. 이를 위해 다른 다양한 목적함수들이 시도되었다.
Mode Collapse Problem
GAN의 대표적인 문제인데, generator가 고른 분포를 가진 (다양한) fake data를 만들어 내지 못하고 비슷한 data만 계속 생성하는 즉 collapsed 붕괴된 상태를 말한다. 이는 주로 동일한 color/texture로 여러 이미지를 만드려고 시도할 때 발생한다. 결국 이 문제도 또한 generator와 discriminator 학습의 불균형때문에 생긴 것이다.
이것이 GAN에 대한 기본적인 개념이고, GAN에서 파생된 다른 모델들도 추후 소개해보도록 하겠다.
Related Documents
https://developers.google.com/machine-learning/gan/problems
https://www.youtube.com/watch?v=odpjk7_tGY0
반응형'BIG DATA & AI' 카테고리의 다른 글
Deep Learning for Graphs: Naïve Approach부터 Graph Encoder, GIN까지 (1) 2022.08.30 GNN Overview 및 검색 엔진에 연결해 보기 (Predict Then Propagate: Graph Neural Networks Meet Personalized PageRank) (0) 2022.06.27 분류 모델에 대한 성능 측정하기 (Model Evaluation) (0) 2022.03.27 Web Crawling & Scraping 개념 (0) 2021.05.03 Big Data 분석 알기 쉽게 설명하기 (Easy to Understand Data Analytics with Cooking Recipe) (0) 2021.04.14