본문 바로가기

AI

GAN

- Generative models

데이터를 이용해 같은 분포를 가진 데이터를 추가적으로 만들어내는 모델

neural network layer가 점점 깊어지고 복잡해지며 많은 데이터가 필요해졌다

이때 사용할 수 있는 generative models!

데이터 늘리는 것 이외에도 colorization, super resolution 등에서도 사용할 수 있다

 

입력으로 강아지 사진이 들어왔다고 가정해보자

이미지들의 probability distribution이 p(x)라면 p(x)를 이용해 새로 만든 x_new도 강아지처럼 우리 눈에 보여야한다

또한 x가 강아지 같다면 p(x)값이 커야한다

이러한 상황에서 우리가 알고싶은 것은 p(x)를 표현하는 방법과 어떻게 학습할 것인지이다

 

 

generative model은 위와 같은 종류가 있는데 GAN을 제외하고는 사용도 어렵고 이해하기도 힘들다고 한다ㅠㅠ

GAN도 어려웠는데 나머지는 얼마나 어려운걸까

 

- Generative Adversarial Networks (GANs)

GAN은 두가지의 모델로 이루어져있다

첫번째는 실제 데이터와 비슷한 그럴싸한 가짜 데이터를 만드는 Generator, 두번째는 실제 데이터인지 generator가 만든 가짜 데이터인지 구분하는 Discriminator이다

Genearator는 random noise를 받아서 데이터를 만들어 Discriminator를 속이려고 한다

처음에는 성능이 좋지 않지만 학습을 반복하면 이론적으로 가장 좋은 수치는 Discriminator의 정확도가 1/2가 되는 것이다

 

objective function은 아래와 같다

discriminator : $\underset{D} {max} V(G,D)= E_{x\sim p_{data}}[logD(x)] + E_{x\sim p_{G}}[log(1-D(x))]$

generator : $\underset{G} {min} V(G,D)= E_{x\sim p_{data}}[logD(x)] + E_{x\sim p_{G}}[log(1-D(x))]$

discriminator는 x가 $ p_{data}$의 분포를 따른다면 1로 $p_{G}$의 분포를 따른다면 0으로 probability를 할당한다

위의 식에서는 generator의 objective function에 $ E_{x\sim p_{data}}[logD(x)]$ 항을 포함시켜두었지만 이는 사실 G가 담당하는 파트가 아니라 빼고 계산해도 괜찮다

 

- Optimization

Discriminator의 정확도가 1/2가 되면 optimal한 지점이라고 예측했지만 실제로는 학습이 어려워 loss가 증가와 감소를 반복하며 안정화되지 않는다고 한다

또한 mode collapse라는 문제가 발생하기도 한다

Mode collapse는 GAN이 비슷한 output만 만들어 내는 문제이다

예를들어 0~9까지의 MNIST 데이터베이스와 비슷한 output을 만들고싶다고 하자

우연히 generator가 3을 만들어서 loss가 줄어들면 3만 계속 만들게 될 수도 있다

loss는 분명 좋게 나오겠지만 좋은 결과는 아니다

 

- Evaluating GANs

mode collpase와 같은 문제를 포함하여 어떤 모델이 좋은지 평가하는 기준이 필요하다

이를 위해 sharpness와 diversity를 고려한 점수 기준을 세워 사용한다

sharpness는 정확히 classification이 되는 정도이고 diversity는 다양한 class를 만드는지 확인한다

따라서 sharpenss가 높은 모델의  c(y|x)는 낮은 엔트로피를, diversity가 높은 모델의 c(y)는 높은 엔트로피를 갖는다

 

- Inception Scores

diversity X sharpness

사람이 실제로 좋다고 평가한 모델과 점수의 유사도가 크다고 한다

 

- Frechet Inception Distance FID

데이터를 실제로 비교하는 IS와 다르게 FID는 pretrained model을 활용해 feature의 유사도를 비교한다

 

이 외에도 Kernel Inception Distance와 같이 GAN의 성능을 평가하기 위한 점수들이 존재한다

수학적인 부분은 다 건너뛰어서 아직 정확히 이해는 안되지만 평가지표가 존재한다는 것은 알겠다

 

- Wassertian GAN WGAN

mode collapse 문제를 많이 해결한 버전이라고 한다

기존의 모델보다 성능이 좋다!

 

 

JS는 binary라 더 많은 의미를 가진 W를 사용하는 것이 insight

이 부분도 수학적인 부분은 전부 건너뛰고 이런게 있다~ 정도만 배우고 넘어갔다

학부수준이 아닌가보다..

 

ITE4053 : Deep Lerarning ( Hanyang University )

'AI' 카테고리의 다른 글

Supervised Learning vs Unsupervised Learning  (0) 2021.06.13
RNN  (0) 2021.06.01
Convolution & CNN  (0) 2021.05.31
Optimization Algorithms  (0) 2021.04.20
Batch Normalization  (0) 2021.04.18