일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 캐나다월세
- Docker
- agnoster폰트
- agnoster폰트꺠짐
- iterm2자동완성
- 캐나다콘도렌트
- 프라이탁
- DTW
- 캐나다 은행 계좌 개설
- 캐나다 TDBAnk
- GAN
- pytorch
- 캐나다 은행계좌 개설
- Normalizing flow
- 캐나다 TD 예약
- 캐나다 TD 한국인 직원 예약
- 콘도렌트
- 캐나다 TD 한국인 예약
- 터미널꾸미기
- GenerativeModel
- agnoster폰트깨짐
- MachineLearning
- iterm2환경설정
- Flow
- 프라이탁 존버
- Generative model
- 머신러닝
- EATS
- iterm2꾸미기
- 딥러닝
- Today
- Total
TechNOTE
[리뷰] GAN, Generative Adversarial Nets 본문
공부할 겸, 되짚어볼 겸 GAN 리뷰 시작해 본다! 시작!!
1. Basic Idea
Generative Model 을 Estimation 할 때 Adversarial 하게 학습을 시키는 새로운 framework을 제시했다.
Sample을 생성해 내는 Generator와, generator에서 나온 sample이 실제인지 아니면 만들어진 것인지 분류하는 Discriminator를 함께 학습 시켜서, 이상적으로는, Generator가 training data distribution을 모델링 하여 discriminator가 모든 데이터에 대하여 1/2 확률을 가질 수 있도록.. 학습시키는 것이다.
2. Model
자 그럼 모델링을 어떻게 하면 좋을까?
데이터 x로부터 generator distribution Pg 를 학습하기 위해서는, input noise variable prior pz(z)를 가정한다. 그리고 data space를 다음과 같이 가정해 본다. G(z; θg). G 는 θg 파라미터 를 가진 미분가능한 multilayer perceptron 이다.
비슷하게, second multilayer perceptron D(x; θd)를 구한다. output은 단일 스칼라 값이다. D(x)는 x가 진짜 data 분포로부터 형성된 녀석인지 아닌지를 판단한다.
우리는, D 가 real example과 generated 된 example이 잘 구별할 수 있도록 하는 확률을 최대화 해 주고,
동시에, G가 log(1-D(G(z)) 를 최소화 하는 방향으로 training 되어서 discriminator 가 실제로 구분하기 어려운 (실제와 가까운) sample을 generation 할 수 있게 training 한다. 즉, 다음과 같은 min max game을 진행한다는 것.
이 그림을 봐보자. 초록색 line이 px 로부터 도출된 pg 이고, 검은색 line이 real distribution 이다.
파란색 line은 discriminator 이다. (a)를 본다면 거의 수렴에 가까워진 adversarial pair라고 볼 수 있다. pg 는 pdata와 비슷해지고, D는 부분적으로 잘 작동하는 classifier 이다. (b) 를 본다면, discriminator 를 training 시킨 건데 D의 optimal 한 부분으로 수렴한 것이다. (c)를 보면 G를 update 한 이후의 상황인데, Generator가 실제와 같은 input을 생성해 내도록 training 된 것이다. 이렇게 수 차례 반복하다 보면, G와 D가 충분한 capacity를 가질 경우에 pg = pdata 에 이르러 discriminator의 반응이 더이상 없을 것이라는 이론이다.
알고리즘은 다음과 같다.
3.1 Global Optimality of pg = pdata
어떤 G에서 optimal한 D가 존재한다고 생각한다면, G가 고정된 상태에서 optimal한 D는 다음과 같다.
증명
D와 G를 학습시키는 criterion은 다음을 최대화 하는 것인데,
real distribution 에서 sampling된 녀석들은 1에 가깝게(좌측) , generated distribution에서 sampling 된 녀석들은 0에 가깝게(우측) 최대화 하는 것이다.
이제 다 했다.. 어떤 (a, b) ∈ R^2 \ {0, 0} 에서 함수 y → a log(y) + b log(1 − y)는 [0, 1] 에서 a/(a+b) 일 때 maximum 이므로 저 위의 값이 maximum 인 것이다. Discriminator는 Supp(pdata) ∪ Supp(pg) 를 벗어날 필요가 없기 때문에 증명에 포함된다고 한다.. ㅎㅎ ..
D를 학습시키는 것은. Conditional Probability P(Y=y|x) 를 추정하는 것으로도 생각할 수 있는데, Y는 x가 pdata 로부터 왔는지(y=1) pg로부터 왔는지 (y=0) 를 나타낸다. 식은 다음과 같이 다시 구성될 수 있다.
Theorem 1. The global minimum of the virtual training criterion C(G) is achieved if and only if pg = pdata. At that point, C(G) achieves the value − log 4.
그,, 저 위에 있는 식에서의 global minimum은 pg = pdata일 때이고, 그 때의 C(G)는 -log4 란 이야기..
pg = pdata이면 D∗G(x) = 1/2 인데 이로부터 C(G) = log(1/2) + log(1/2) = -log4 임을 알 수 있다.
이것이 C(G)의 옵티멀한 값이자, pg=pdata 일 때만 일어난다는 것을 확인하기 위해서
임을 확인하고, 이를 저 위의 식에서 빼 준다면
다음과 같은 식을 만들어 낼 수 있다.
KL Divergence 에 대해 알고 있다면 계산해 낼 수 있다. en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence
이 식은 Jensen-Shannon divergence로 또한 바꿀 수 있는데,
Jensen-Shannon 은 항상 음수가 아니므로, (두 distribution이 동일할 때 0) 우리는 C* = log4 가 C(G)의 global minimum이고 solution은 pg = pdata때일 뿐이라는 것을 알 수 있다. 즉, generative model이 완벽하게 data distribtuion을 모델링 할 때라는 것이다.
3.2 Convergence of Algorithm 1
만약 G와 D가 충분하게 크다면 algorithm 1로부터 discriminator는 주어진 G에서 optimum에 도달하게 training 될 수 있다.그리고, pg는 위의 criterion을 만족하도록 upated 되므로 pg는 pdata로 수렴할수 있다.
증명
V(G, D) = U(pg, D) 로 pg에 관한 function 이라고 생각해보자. U(pg, D)는 pg에 대해서 convex 이다.
The subderivatives of a supremum of convex functions include the derivative of the function at the point where the maximum is attained. 라고 나와 있는데,, ^^ 이건 다음 예시를 보면 이해가 간다.
convext function에 대한 supermum(상한) 값의 편미분은,, maximum이 attend 하는 point의 미분값을 포함한다.
if f(x) = supα∈A fα(x) and fα(x) is convex in x for every α, then n ∂fβ(x) ∈ ∂f if β = arg supα∈A fα(x) 이다.
이것은, 주어진 G에서 opimal한 D가 있을 때 pg 로 gradient descent 를 계산하는 것과 동일하다. supDU(pg, D)는 pg에서 convex 하고 unique global optima 가 존재하므로, (Thm1) 그래서 pg를 향해 small update를 하는 것은 px를 향해 수렴하는 것이다.
실제로는, pg 자체를 튜닝하는 대신에 G(z; θg) θg를 optimizing 하지만,, 일단 이론적인 보장이 없어도 잘 동작한다고 한다.
여태까지 GAN 의 Discriminator와 Generator 가 수렴하게 되는 이론적인 배경을 살펴보았고.. 실험 파트를 살펴보겠다.
4. Experiments
'딥러닝, 연구' 카테고리의 다른 글
Normalizing flow 설명 (0) | 2020.12.01 |
---|---|
[논문리뷰] VAE(Auto-Encoding Variational Bayes) (0) | 2020.11.27 |
[논문리뷰] CGANS with Projection Discriminator (0) | 2020.11.23 |
[논문리뷰] Soft Dynamic Time Warping (1) | 2020.10.30 |
Dynamic Time Warping 에 대한 고찰.. (0) | 2020.10.28 |