1. GAN
(Generative Adversarial Network)
Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu
, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio
(Submitted on 10 Jun 2014)
2. GAN
지도학습을 통한 인공지능 기술은 폭발적인 발전을 선도 해 왔지만 모든 데이터에
서
정답을 알려줘야 하며 시간 및 리소스의 한계라는 단점을 가지고 있다.
이에 대해 많은 AI 전문가들은 미래 인공지능은 비지도 학습이 이끌어 갈
것이며 이것의 중심에는 Gan이 있을 것으로 전망을 하고 있습니다.
GAN은 2014년에 Ian Goodfellow 가 NIPS에서 발표한 paper에서 시작하였습니다.
3. GAN
GAN을 쉽게 설명 하기위해 논문에서는 위조지폐범과 경
찰에 비유를 하였습니다.
위조 지폐범은 최대한 진짜 같은 화폐를 만들어
(Generative model G) 경찰을 속이기 위해 노력하고 경
찰은 진짜 화폐와 가짜 화폐를 분류하여 위조지폐를 찾는
(Discriminative model D) 것을 목표로 합니다.
이러한 적대적 두 부류가 서로 경쟁을 하며 위조지폐와
실제 지폐를 구분할 수 없는 상태에 이르게 됩니다.
보통 GAN의 경우 가짜로 생성한 데이터를 진짜와 같이
만들기 위해 사용을 합니다.
G : Generative 만든다는
A : Adversarial 대립하는, 적대하는
N : Nets 신경 구조망
4. GAN Architecture
Generator는 Blurred data
를 가지고 Noise를 석어 가
짜 데이터를 생성해준다.
Discriminator는 가짜 데이
터가 진짜 인지 가짜인지
판별을 해주게 되고 판결
결과에 대한 결과를
Generator에게 보내 준다.
Noise
5. GAN Cost Function
목적함수 V(D,G)는 D를 최대화하고 G를 최소화 하도록 되어 있다. 분류자는 최대한 진짜를 진짜로 분류하
길 원하고 생성자는 최소한 가짜가 가짜로 분류되길 원한다.
D를 최대화 하기 위해서는 좌변(logD(x))과 우변(log(1-D(Gz)))이 모두 최대값이 나와야 한다.
D(x)가 1이 되야 최대가 되고 이는 실제 데이터(x)를 진짜(1)로 분류하도록 학습을 한다.
1-D(Gz)가 1이 되야 최대고 이는 D(Gz)가 0이 되어야 한다.
분류자는(D) 가짜 데이터를 가짜라고 분류하도록 학습을 한다.
즉 V(D,G)가 최대가 되도록 D를 학습하는 것은 분류자(D)가 진짜데이터는 진짜로
가짜데이터는 가짜로 분류하도록 학습을 해주어야 한다.
Ez~pz(z) : 임의의 데이터(Blur)에 노이즈를 더한 샘플링 데이
터
D(x) : 분류자 이며 진짜는1 가짜는0을 리턴
D(G(z)) : G(z)가 생성한 데이터가 진짜이면 1 가짜이면 0을
리턴
6. GAN Cost Function
생성자G를 최소화 하는 관점에서 생각을 해본다.
좌변(logD(x))에는 G가 존재 하지 않기 때문에 신경쓰지 않아도 된다.
우변(log(1-D(Gz))) 최소값인 0이 나와야 최소 값이 나올수 가 있다.
즉 D(Gz)가 1이 나와야 하고 이는 분류자가 가짜 데이터를 진짜로 판별 할 수 있을 만큼
데이터를 만들도록 생성자를 학습시 키는 것을 의미한다.
이처럼 분류자는 최대화를 하고 생성자는 최소화를 하는 방향으로 학습하는 것을 Minmax problem 이라고
한다.
Ez~pz(z) : 임의의 데이터(Blur)에 노이즈를 더한 샘플링 데이
터
D(x) : 분류자 이며 진짜는1 가짜는0을 리턴
D(G(z)) : G(z)가 생성한 데이터가 진짜이면 1 가짜이면 0을
리턴
7. GAN Cost Function
위의 공식이 실제 정석적인 방법이긴 하지만 논문에서 좀더 실용적인 학습 방법을 제시 하는 것이 있습니다.
log(1-D(G(z)))를 최소화 할 경우 열악한 학습 초기에 훈련이 제대로 되지 않을수도 있고 시간이 오래걸리는
단점이 발생 할 수 있습니다. D가 너무 강하기 때문에 높은 신뢰도로 생성된 데이터를 거절할 수 있습니다.
또한log 안의 값이 계속 적으로 1로 수렴하게 되고 Gradient가 매우 작게 변화 하기 때문에 학습이 느리게
됩니다
G = argmax_g_log(D(G(z)))
log(D(G(z)))를 최대가 되게끔 G를 학습하게 되면 시간도 절약 할 수 있고 좀더 학습이 잘 될 수 있다고 논문
에서 이야기 하고 있습니다. 바꾸게 되면 D가 G로 나온 이미지를 잘 구별 한다 해도 문제가 발생하지 않습
니다.
Ez~pz(z) : 임의의 데이터(Blur)에 노이즈를 더한 샘플링 데이
터
D(x) : 분류자 이며 진짜는1 가짜는0을 리턴
D(G(z)) : G(z)가 생성한 데이터가 진짜이면 1 가짜이면 0을
리턴
8. GAN Cost Function
사실 둘다 수학적으로 보았을때 D(G(x))는 0이 아닌 1에 수렴하려는 점에서 같다고 볼수 있지만 그래프를
보면 미세한 차이를 알 수 가 있다. 초반에는 D가 매우 유리한 상태로 시작을 한다.
G는 초반에 구별이 쉬운 가짜 데이터를 생성하기 때문에 D(G(z)) = 0에서 출발한다고 할 수 있다.
이때 왼쪽 그래프의 0 지점과 오른쪽 그래프의 0지점의 기울기를 보게 되면
왼쪽 그래프가 더 급격한 기울기를 가지고
변화를 이끌어 낼 수 있는 것을 확인 할 수 있다.
0지점에서의 Loss함수의 기울기로
인해 다양한 변화가 발생할 수 있다.
Ez~pz(z) : 임의의 데이터(Blur)에 노이즈를 더한 샘플링 데이
터
D(x) : 분류자 이며 진짜는1 가짜는0을 리턴
D(G(z)) : G(z)가 생성한 데이터가 진짜이면 1 가짜이면 0을
리턴
VS
9. GAN Graph
(a)처음에는 Real, Fake 데이타가 일치하지 않고 D는 진짜와 가짜를 구별 하지만 들쑥날쑥 한 것을 볼수 있
습니다.
(b)D가 업데이트 되면서 존더 구별하는 것이 부드럽게 표현되며 잘 구별하게 도비니다.
(c)G가 업데이트 되면서 좀더 Real Data와 유사해 지게 됩니다.
(d)최종적으로 Fake가 Real 과 구별이 어렵게 되면서 D도 1/2로 구별을 할 수 없게됩니다.
10. GAN MNIST
오른쪽은 GAN의 Hello World같은
MNIST 데이터 학습 과정에서 G가 만들어낸
Fake 데이타의 학습 진행 결과 이다.
11. GAN 한계
GAN을 실제 적용 하기 위해 가장 힘든 점은 학습이 어렵다는 것이다.
생성자와 분류자가 비슷한 수준에서 서로 조금씩 발전을 해야 하는데
만약 한쪽이 크게 강력해지면 나머지 한쪽이 발전을 하지 못하게 된다.
경찰이 너무 강하면 위조지폐범은 씨가 말라버리는 것이다.
또한 GAN이 제대로 학습하지 못할때 Mode Collapse(모드붕괴)라는 현상이 있다.
이는 생성자가 다양한 이미지를 만드는게 아니라 비슷한 이미지만 계속 생성하는
경우를 뜻한다.