안녕하세요.

이번 글(Part2)에서는 지난 Part1에 이어서 GAN의 수학적 증명그 외 나머지 부분들에 대해 정리하려고 합니다.

 

(↓↓GAN part1 ↓)

https://89douner.tistory.com/329?category=908620 

 

5-1. GAN (Part1. GAN architecture)

안녕하세요. 이번 글에서는 최초의 GAN 논문인 "Generative Adversarial Nets"을 리뷰하려고 합니다. 우선, GAN이라는 모델이 설명할 내용이 많다고 판단하여 파트를 두 개로 나누었습니다. Part1에서는 GAN a

89douner.tistory.com

 

 

논문의 section 4, 5, 6 부분들 마저 다룰 예정인데, 설명의 편의를 위해 'section 5'와 'section 6'의 순서만 바꾸도록 하겠습니다.

 

  • Section 4: Theoretical Results
  • Section 6: Advantages and disadvantages
  • Section 5: Experiments

 

먼저, "section 4: Theoretical Results"리뷰하기 딥러닝 모델을 설계할 시 필요한 몇 가지 기준(질문)들에 대해서 이야기 하려고 합니다. 

 

 

 

 

 

1. 딥러닝 모델 설계를 위한 네 가지 기준(질문)

딥러닝 모델을 확률 모델로써 설계할 때에는 네 가지 기준(질문)을 충족하는지 따져봐야 합니다. (물론 더 많은 기준(질문)이 있겠지만 GAN 논문에서는 크게 네 가지 기준으로 요약하고 있습니다.

 

(뒤에서 더 자세히 설명하겠지만, 실제 neural network가 사용되면 아래 기준을 이상적으로 만족하는게 불가능하다고 합니다. 그러니, 아래 기준들은 딥러닝 설계 시 이상적인 guideline 정도로 보시면 좋을 것 같습니다.)

 

  1. 설계한 확률(딥러닝)모델이 tractable 한 것인가? (계산 시스템 관점에서 충분히 다룰 수 있는 알고리즘인가?)
  2. 설계한 확률(딥러닝)모델이 최적해(global optimum)를 갖는가?
  3. 설계한 확률(딥러닝)모델이 최적해(global optimum)에 수렴하는가?
  4. 설계한 확률(딥러닝)모델의 최적해(global optimum)을 찾을 수 있는 알고리즘이 존재하는가?

 

먼저, 첫 번째 질문tractable과 관련한 답은 이미 part1에서 했기 때문에 아래 링크를 참고해주시면 좋을 것 같습니다.

 

(↓아래 링크에서 “3.Adverarial nets” → "[3-1-1-. First paragraph & Second sentence]" 부분 참고)

https://89douner.tistory.com/329

 

5-1. GAN (Part1. GAN architecture)

안녕하세요. 이번 글에서는 최초의 GAN 논문인 "Generative Adversarial Nets"을 리뷰하려고 합니다. 우선, GAN이라는 모델이 설명할 내용이 많다고 판단하여 파트를 두 개로 나누었습니다. Part1에서는 GAN a

89douner.tistory.com

 

 

 

나머지 질문들은 "4. Theoretical Results"를 리뷰하면서 설명해보도록 하겠습니다. 

 

 

 

 



 

4. Theoretical Results

[ 4-1. Global optimality of \(p_{g}=p_{data}\) ]

 

"설계한 확률(딥러닝)모델이 최적해(global optimum)를 갖는가?"

 

딥러닝에서 분류(classification)하는 문제에서는 최종 losscross-entropy 값이 0에 도달하기를 바랍니다.

 

<그림 출처: https://towardsdatascience.com/cross-entropy-loss-function-f38c4ec8643e>

 

 

 

"그렇다면, GAN의 최종 loss는 어떠한 값을 갖어야 global optimum이라고 할 수 있을까요?"

"즉, 최종적으로 도달하고자 하는 loss 값은 무엇일까요?

 

 

지금부터 이에 대한 답을 해보도록 하겠습니다.

 

 

Generator 관점에서 MinMax problem (value function)은 \(P_{g}=P_{data}\) 에서 global optimum 값을 갖아야 합니다. 직관적으로 봤을 때, GeneratorData와 유사한 distribution을 형성하는 지점인 곳에서 global optimum 값을 찾게 되면 학습을 중단하겠죠?

 

이 논문에서는 optimal discriminator의 global optimum 값은 아래와 같은 수식에 의해 도출 된다고 합니다.

 

\(D^{*}(x)=\frac{P_{data}(x)}{P_{data}(x)+P_{g}(x)}\)

 

 

위 수식의 직관적인 설명은 아래와 같습니다.

 

\(P_{g}=P_{data}\) 일 경우 \(D^{*}(x)=\frac{1}{2}\) 값을 갖는데, 이것이 의미하는 바는 discriminator가 가짜 이미지와 진짜 이미지를 판별할 확률이 모두 \(\frac{1}{2}\)라는 사실과 값습니다. 즉, 가짜와 진짜를 완벽히 혼동한 상태인 것이죠. 그러므로, GAN loss function인 V(D,G) 값이 \(\frac{1}{2}\)에 가까이 도달하면 학습을 종료하면 됩니다. (CNN loss인 Cross entropy 에서는 0값에 도달하면 보통 학습을 중단시키죠)

 

"그럼, 이제부터 어떻게 optimal discriminator 수식이 V(D,G) 수식에서 \(D^{*}(x)=\frac{P_{data}(x)}{P_{data}(x)+P_{g}(x)}\) 수식으로 유도되는지 수학적으로 살펴볼까요?" 

 

 

(유도과정과 관련된 내용은 아래 영상 내용을 기반으로 작성했으니 참고해주세요.)

https://www.youtube.com/watch?v=odpjk7_tGY0 

 

 

 

 

 

 

Optimal discriminator 상태에 도달했다는 것은 Generator관점에서 봤을 때 이미 \(P_{data}=P_{g}\) 상태로 학습이 거의 다 됐다는 것을 의미합니다.  G가 이미 최상의 상태에 도달했다고 가정하여 Gfix시키고 optimal discriminator D*(x)에 대한 수식만 찾는 것이죠.

 

위와 같은 사실을 봤을 때, GAN이라는 모델은 generator와 관련된 loss가 아닌 discriminator와 관련된 loss에 의해 학습을 종료할지 말지 결정하게 되는 것이죠. 바꿔 말하자면, optimal discriminator의 값을 찾기 위해 discriminator(D) 부분만 고려하겠다는 것입니다.

 

 

 

위 수식을 보면 G(z)를 x로 바꿔 주면서 \(E_{z\sim ~p_{z}(z)}\) 수식부분이 \(E_{x\sim ~p_{g}(x)}\) 로 변경된 것을 확인할 수 있습니다. 이것이 가능한 이유는 G(z)의 차원이 곧 X차원과 동일하여 G(z)에서 발생한 값을 X 차원 상의 하나의 x값으로 표현(=mapping)할 수 있기 때문입니다.

 

  • Pz(z): low dimension distribution,  z = 100
  • Pg(x): high dimension distribution, x = 64x64 

 

 

위와 관련된 내용아래 링크(글)에서 3. Adversarial nets” “[3-2-2. Second paragraph & Second sentence]" 부분을 참고해주세요. 

 

https://89douner.tistory.com/329?category=908620 

 

5-1. GAN (Part1. GAN architecture)

안녕하세요. 이번 글에서는 최초의 GAN 논문인 "Generative Adversarial Nets"을 리뷰하려고 합니다. 우선, GAN이라는 모델이 설명할 내용이 많다고 판단하여 파트를 두 개로 나누었습니다. Part1에서는 GAN a

89douner.tistory.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(지금까지 설명한 내용논문에서는 아래와 같이 함축해서 설명하고 있습니다)

 

 

 

앞서 \(\frac{a}{a+b}\)에서 global optimum을 갖는걸 파악했습니다.

 

그렇다면, a=b or \(P_{data}=P_{g}\)라는 조건 하에 global optimum을 갖는지,

global optimum 값이 왜 1/2이 되는지 수학적으로 증명해보겠습니다.

 

 

 

 

 

 

 

 

(지금까지 설명한 내용을 논문에서는 아래와 같이 함축해서 설명하고 있습니다)

 

 

 

정리하자면, 앞서 언급했던 질문인 "설계한 확률(딥러닝)모델이 최적해(global optimum)를 갖는가?" 에 대해서 

"최적해(global optimum)"을 갖는다고 할 수 있습니다.

 

 

"다시 말해, MinMax 구조의 함수에서 \(P_{data}=P_{g}\)일 때, global optimum을 갖는다고 할 수 있습니다.”

 

 

 

 

 

 

[ 4-2. Convergence of Algorithm 1 ]

앞서, GAN 이라는 확률(딥러닝) 모델은 loss를 통해 살펴 봤듯이 최적해(global optimum)존재하는걸 볼 수 있었습니다. 딥러닝 모델을 해(solution)를 찾을 수 있는 조건 중 하나가 loss가 convex function인지 확인하는 것입니다.

 

 

"그래야 grident descent 와 같은 iterative optimization 방식을 통해 해를 찾을 수 있기 때문입니다."

 

 

(↓iterative optimization과 딥러닝과의 관계를 설명한 글; "3.Adversarial nets" -> "[3-3-2. Third paragraph & The last sentence]" 부분을 참고)

https://89douner.tistory.com/329?category=908620 

 

5-1. GAN (Part1. GAN architecture)

안녕하세요. 이번 글에서는 최초의 GAN 논문인 "Generative Adversarial Nets"을 리뷰하려고 합니다. 우선, GAN이라는 모델이 설명할 내용이 많다고 판단하여 파트를 두 개로 나누었습니다. Part1에서는 GAN a

89douner.tistory.com

 

 

그럼, 딥러닝 모델 설계 시 고려해야 하는 4가지 질문 중, 세 번째 질문에 대한 답을 설명드려보겠습니다.

 

"설계한 확률(딥러닝)모델이 최적해(global optimum)에 수렴하는가?"

 

위에 있는 질문을 바꿔서 표현하면 "\(p_{g}\)가 \(p_{data}\)로 수렴할 수 있는가?"로 표현할 수 있습니다. 즉, generative model인 \(p_{g}\) 관점에서 loss 함수가 (global optimum으로) convergence(수렴) 할 수 있는지 따져야 하는 것입니다.

 

"Generative model인 \(p_{g}\) 관점에서 loss 함수가 (global optimum으로) convergence(수렴) 할 수 있는지 따지기 위해서는 'D를 고정시키고, loss 함수가 convex한지 확인하는 것' 입니다." 

 

 

 

아래 그림을 잠깐 설명해보겠습니다. D는 고정했기 때문에 \(U(P_{g},D)\) 를 \(P_{g}\) 관점에서 보면 D는 (고정된) 상수값입니다. 바꿔말해, \(P_{g}\) 관점에서 보면 \(U(P_{g},D)\)의 변수는 \(P_{g}\)인 셈인 것입니다. 결국, \(P_{g}\)가 학습함에 따라서 변할 텐데, 변하는 \(P_{g}\)에 따라서 \(U(P_{g},D)\)convex한지 알아봐야 iterative optimization(=ex: gradient descent) 방식으로 global optimum을 찾을 수 있는지 확인 할 수 있습니다.

 

 

위의 설명 중에서 "어떤 함수를 미분했을 때, 해당 함수가 상수 값을 갖는다면 그 함수는 convex하다고 할 수 있다"는 개념이 있습니다. 예를 들어 보충 설명하면, 2x+1라는 수식에서 x에 대해서 미분하면 미분값=2가 나옵니다. 즉, 어떤 수식을 x로 미분 했더니 상수가 나오면 그 수식은 선형함수가 되는 것입니다. 그리고, 선형함수는 convex 라고 할 수 있는데, 특정 구간 (ex=(0,1))을 설정해놓으면, 해당 구간에서 minimum 값을 찾을 수 있게 됩니다.

 

(↓↓↓linear function이 convex function 임을 보여주는 글↓↓↓)

https://89douner.tistory.com/221?category=985926 

 

[Convex function]2-2. Example of Convex function

※시간이 충분하지 않아 필기로 정리한 내용을 아직 블로그 글로 옮기지 못해 이미지로 공유하는점 양해부탁드립니다. 아래 내용의 키워드는 다음과 같습니다. Exponential function, affine function, powe

89douner.tistory.com

 

 

 

 

 

 

 

 

(지금까지 설명한 내용을 논문에서는 아래와 같이 함축해서 설명하고 있음)

 

 

 

[그 외 위에서 본 수식과 관련된 background or 용어]

 

 

 

 

[ 4-2. Algorithm 1 ]

"설계한 확률(딥러닝)모델의 최적해(global optimum)을 찾을 수 있는 알고리즘이 존재하는가?"

 

 

이 논문에서는 아래와 같은 방식으로 D와 G를 서로 학습함으로써 최적해(global optimum)을 찾을 수 있음을 보여줬습니다.

 

 

위의 알고리즘을 실제로 코딩할 때 아래와 같이 구현할 수 있습니다. (D학습시 따로 k step을 두진 않은 것 같네요)

 

(↓↓D, G 관련 loss가 왜 아래와 같이 변하는지는 GAN part1에서 설명 함)

 

 

[Neural network를 Generative model에 도입할 경우]

 

GAN을 통해 생성하는 데이터의 분포 \(p_{g}\)를 추정하고 최적화 하는 것이 아니라, \(p_{g}\)를 생성하는데 직접적인 영향을 미치는 parameter인 \(\theta_{g}\)를 추정하고 최적화 합니다. 또한, 엄밀히 말하자면 수학적인 증명에서는 generative model, discriminative model이 neural network를 사용한다는 언급이 없습니다. 그런데, Generative model을 MLP(multilayer perceptron; neural network; deep learning)와 같은 것으로 설정하게 되면 실제로 최종 loss function 자체가 convex하지 않을 수 있고, 즉 multiple critical points를 가질 수 있습니다. 하지만, 마법같은 MLP는 이러한 theoretical guarantees가 굳이 보장되지 않고도 나름 생성모델에서 잘 작동한다고 주장하고 있습니다.

 

 

 

 

5. Advantages and disadvantages

이 부분("5. Advantages and disadvantages")은 GAN의 대표적인 disadvantage라고 할 수 있는 mode collapse에 대해서만 설명하도록 하겠습니다.

 

먼저, mode라는 용어에 대해서 이해하도록 하겠습니다.

 

보통 통계학에서 mean, median, mode, range라는 용어가 사용되는데, 해당 용어들이 의미하는바는 아래와 같습니다.

 

<그림 출처. https://danielmiessler.com/blog/difference-median-mean/>

 

 

위의 개념들을 distribution 상에서 설명하면 아래와 같이 표현할 수 있습니다.

<그림출처. https://medium.com/@nhan.tran/mean-median-an-mode-in-statistics-3359d3774b0b>

 

<그림 출처. https://velog.io/@tobigs-gm1/basicofgan>

 

 

 

쉽게 말해 mode는 빈도수가 가장 많은 수를 일컫습니다.

 

"The mode is the most frequent value."

 

 

그렇다면 이제 mode collpase에 대해 설명해보도록 하겠습니다.

 

MinMax Value function을 살펴보면, 학습 시 G(z)가 생성하는 이미지의 종류에 대해서는 고려하지 않습니다. 예를 들어서, G(z)가 MNIST의 1이라는 이미지를 생성하는데 D가 계속해서 판별을 못하고, G(z)가 생성하는 MNIST의 2라는 이미지만 잘 판별해도 되면 결국 value loss 값은 낮아지게 되는 것이죠. 극단적으로 설명해서 MinMax 방식으로 서로 학습하면 D가 만족하는 (판별을 잘 할 수 있는) 이미지(from G(z))만 생성하도록 G가 학습할 것이며, 결국 (서로 좋은쪽으로만) 편향되게 D와 G는 alternative하게 학습하게 될 것 입니다. 

 

 

앞서 설명한 것을 다르게 표현하면, G(z)는 MNIST의 1의 distribution은 잘 표현해주지 못하고, 2라는 이미지의 distribution만 잘 표현해도 전체 value function의 loss 값은 낮게 나올 수 있습니다. 이렇게 되면 Generative model G가 특정 숫자만 생성하게 되겠죠.

 

 

Mode collpase를 정리하자면 아래와 같이 표현할 수 있습니다.

 

"Mode collapse happens when the generator can only produce a single type of output or a small set of outputs. This may happen due to problems in training, such as the generator finds a type of data that is easily able to fool the discriminator and thus keeps generating that one type."

 

 

 

 

위의 그림을 설명하면 다음과 같습니다.

 

먼저 3개의 검은색 실선이 실제 이미지를 나타내는 것이라고 볼 수 있습니다예를 들어, 각각실선들은 금발여성, 흑발과 안경을 쓰고 있는 남성, 흑발 여성을 나타낸다고 해보겠습니다.

 

"즉 우리가 원하는 목표는 실선 3개를 모두 표현해줄 수 있는 확률 분포를 익히는 것이라고 볼 수 있습니다."

 

가운데 실선에 해당하는 데이터 셋이 제일 많다고 하면, VAE는 제일 데이터 셋이 많은 그룹에 맞게 distribution을 형성하면서 동시에 normal distribution을 이용해 주변 이미지 그룹들도 다 포괄할 수 있도록 학습을 하기 때문에 모든 데이터 그룹을 포괄하려는 것을 볼 수 있습니다.

 

반대로 GANgenerator가 만드는 이미지 그룹을 discriminator가 더 이상 구별해내지 못할 때 (real image가 들어왔을 때 맞출 확률 ½, fake image가 들어왔을 때 맞출 확률 ½ 이 될 때) 학습이 종료가 됩니다. 그렇기 때문에 이미지 데이터 셋이 많은 (가운데 실선에 해당하는) 그룹만 학습하다 끝내버리면 해당 그룹만 잘 generation해주는 현상이 발생 할 수 있습니다.

 

각각의 실선 (이미지 그룹)이 우리가 representation (By generator)해야 할 중요한 mode라고 부르기도 하는데, GAN에서는 이러한 mode들을 잘 학습하는 것이 안되는 붕괴(collapsing) 현상이 일어난다고 하여 mode collapsing의 단점을 갖고 있다고도 합니다.

 

 

 

그 외 mode collpase에 대한 설명이 필요하시면 아래 링크를 참고해주시면 좋을 것 같습니다.

http://jaejunyoo.blogspot.com/2017/02/unrolled-generative-adversarial-network-1.html

 

초짜 대학원생의 입장에서 이해하는 Unrolled Generative Adversarial Networks (1)

Easy explanation for unrolled generative adversarial network (쉽게 풀어 설명하는 Unrolled GAN)

jaejunyoo.blogspot.com

 

https://wandb.ai/authors/DCGAN-ndb-test/reports/Measuring-Mode-Collapse-in-GANs--VmlldzoxNzg5MDk

 

Measuring Mode Collapse in GANs

Evaluate and quantitatively measure the GAN failure case of mode collapse - when the model fails to generate diverse enough outputs.

wandb.ai

 

 

 

 

 

 

 

6. Experiments

 

사용된 데이터셋

  • MNIST
  • Toronto Face Database (TFD)
  • CIFAR-10

 

Activation function

  • Generator nets: a mixture of rectifier activations and sigmoid activations
  • Discriminator net: maxout activations

 

Drop out

  • discriminator net 학습시에만 drop out 적용

 

 Noise

  • 이론적으로는 intermediate layers of generator에 주겠금 되어있음
  • 하지만, 실제 구현 상에서는 "the bottommost layer of the generator network"의 input에 해당하는 data에 noise를 주어 학습 시킴

 

"Conventionally people usually draw neural networks from left to right or from bottom-up (input to output). So by “top layer” it’s more likely to be the last (output) layer."

 

<그림 출처: https://velog.io/@hwany/GAN>

 

 

 

아래 그림 처럼 논문에서는 1과 5 사이의 vector linear interpolation, 7과 1사이의 vector linear interpolation 했을 때의 결과를 보여줍니다.

 

 

 

아래 수식을 이용하면 실제 이미지 데이터에 대응하는 z 값을 찾을 수 있습니다.

 

이렇게 찾은 z값들 간에 vector linear interpolation을 하게 되면, 7과 1사이의 z 중간 값이 9가 나오는걸 확인할 수 있습니다.

 

 

 

 

 

 

 

실제 논문에서는 결과에 대한 여러 해석들이 있는데, 요즘에 사용하고 있는 GAN 평가지표와는 다른 부분이 있어 생략하도록 하겠습니다.

 

 

 

 

지금까지 GAN 논문에서 설명하고 있는 이론적 배경에 대해 다루어봤습니다.

감사합니다.

 

 

 

[Reference]

1. Yunjey Choi, NAVER AI Lab

https://www.youtube.com/watch?v=odpjk7_tGY0 

 

2. Yoo Jaejun, UNIST

https://www.youtube.com/watch?v=kLDuxRtxGD8 

 

https://jaejunyoo.blogspot.com/2017/01/generative-adversarial-nets-2.html

 

초짜 대학원생 입장에서 이해하는 Generative Adversarial Nets (2)

쉽게 풀어 설명하는 Generative Adversarial Nets (GAN)

jaejunyoo.blogspot.com

 

https://brunch.co.kr/@kakao-it/145

 

[카카오AI리포트]Do you know GAN? 1/2

유재준 | 카이스트 | 최근 딥러닝 분야에서 가장 뜨겁게 연구되고 있는 주제인 GAN(generative adversarial network)을 소개하고 학습할 수 있는글을 연재하려고 한다. GAN은 이름 그대로 뉴럴 네트워크(neur

brunch.co.kr

 

+ Recent posts