[CS236n] 6. Generative Adversarial Networks

Date:     Updated:

카테고리:

태그:


💡 이 글은 『2024 YAI 봄전반기 생성모델팀』으로 진행되었으며, CS236n Fall 2023를 따라 정리했습니다.

1. Introduction

지금까지 공부한 모델들을 정리하면 다음과 같다.

  • Autoregressive models: $p_\theta(\mathbf{x})=\prod_{i=1}^n p_\theta(x_i\mid \mathbf{x}_ {\lt i})$
  • Variational autoencoders: $p_\theta(\mathbf{x})=\int p_\theta(\mathbf{x}, \mathbf{z})d\mathbf{z}$
  • Normalizing flow models: $p_ X(\mathbf{x} ; \theta) = p_ Z(f^ {-1}_ \theta(\mathbf{x}))\left\vert \det\left (\frac{\partial f^ {-1}_ \theta(\mathbf{x})}{\partial \mathbf{x}} \right) \right\vert$

지금까지의 모델들은 모두 $D_{KL}(p_{data} \parallel p_\theta)$를 최소화하는 방향, 혹은 likelihood를 최대화하는 방향으로 학습을 진행했다.

그러나 likelihood는 sample quality를 잘 나타내지 못할 수 있다. 아래 두 가지 경우를 생각해보자.

1.1. Great test log-likelihood, poor samples

예를 들어 다음과 같은 noise mixture model을 생각해보자.

\[p_\theta(\mathbf{x})=0.01 p_{data}(\mathbf(x)) + 0.99 p_{noise}(\mathbf{x})\]

log-likelihood의 upper bound와 lower bound를 계산해보자. 먼저 upper bound는 $D_{KL}(p_{data} \Vert p_\theta) \geq 0$에 의해 다음과 같다.

\[\mathbb{E}_ {p_{data}}\left[\log p_{data}(\mathbf{x})\right] \geq \mathbb{E}_ {p_{data}}\left[\log p_\theta(\mathbf{x})\right]\]

한편 lower bound는 다음과 같이 계산할 수 있다.

\[\begin{aligned} \log p_\theta(\mathbf{x}) &= \log\left[0.01 p_{data}(\mathbf{x}) + 0.99 p_{noise}(\mathbf{x})\right] \\ &\geq \log\left[0.01 p_{data}(\mathbf{x})\right] \\ &= \log p_{data}(\mathbf{x}) - \log 100 \\ \therefore \mathbb{E}_ {p_{data}}\left[\log p_\theta(\mathbf{x})\right] &\geq \mathbb{E}_ {p_{data}}\left[\log p_{data}(\mathbf{x})\right] - \log 100 \end{aligned}\]

한편 $\log p_{data}(\mathbf{x})$는 다음과 같이 나타낼 수 있다.

\[\log p_{data}(\mathbf{x}) = \sum _{i=1}^n \log p_\theta(x_i \vert \mathbf{x}_{\lt i})\]

따라서 $\mathbf{x}$의 차원(dimension)이 커질수록 $\log p_{data}(\mathbf{x})$의 크기(절댓값)은 점점 커지게 되고, 일반적으로 딥러닝에서 사용하는 고차원의 데이터를 input으로 받게 되면 $\log 100$은 매우 작은 값이 된다. 따라서 고차원에서는 다음과 같이 추정할 수 있다.

\[\mathbb{E}_ {p_{data}}\left[\log p_\theta(\mathbf{x})\right] \approx \mathbb{E}_ {p_{data}}\left[\log p_{data}(\mathbf{x})\right]\]

그러므로 이러한 모델은 분명히 99%의 샘플이 noise임에도 불구하고 log-likelihood가 높게 나오게 된다.

1.2. Poor test log-likelihood, great samples

반대로 만약 모델이 너무 데이터를 잘 모방하여 training set을 암기하게 된다면 어떨까? 분명 샘플은 좋을 것이지만(생성의 측면에서 보면 좋은 것은 아니지만) test set에 대한 log-likelihood는 매우 낮게 나오게 된다.

이러한 두 가지 경우를 고려할 때, likelihood는 sample quality를 잘 나타내지 못할 수 있고, 이 둘을 분리(disentangle)하는 것이 유용할 수 있다는 점을 시사한다. 따라서 GAN(Generative Adversarial Networks)에서는 likelihood-free learning을 사용한다.


2. Likelihood-free learning

여기서는 two-sample test에 대해 소개하고자 한다. 만약 위와 같이 두 분포 $S_1 = \lbrace x \sim P \rbrace$와 $S_2 = \lbrace x \sim Q \rbrace$가 주어졌을 때, 두 분포가 같은지, 그렇지 않은지 어떻게 테스트할 수 있을까? 통계적으로는 다음과 같이 가설을 세우고 검정을 진행할 수 있다.

  • Null hypothesis $H_0$: $P=Q$
  • Alternative hypothesis $H_1$: $P \neq Q$

이러한 가설을 검정하기 위해서는 두 분포가 같은지, 다른지에 대한 통계량을 계산해야 한다. 예를 들어 두 분포의 평균의 차에 대해 계산할 수 있고, 이를 통계량으로 사용할 수 있다. 이러한 통계량(test statistic) $T$를 계산한다.

\[T(S_1, S_2) = \left\vert \frac{1}{\vert S_1 \vert} \sum _{x \in S_1} f(x) - \frac{1}{\vert S_2 \vert} \sum _{x \in S_2} f(x) \right\vert\]

그리고 통계량 $T$가 threshold $\alpha$보다 크면 $H_0$를 기각하게 된다. 이러한 방법을 two-sample test라고 한다. 여기서 핵심은 이러한 test statistic을 활용한 방법은 likelihood-free하다는 점이다. 오로지 sample들만을 이용한다.

이를 generative modeling에 적용해 보자. 먼저 $S_1 = \mathcal{D} = \lbrace x \sim p_{data} \rbrace$라고 하자. 그리고 모델에 대해서는 $S_2 = \lbrace x \sim p_\theta \rbrace$라고 하자. 이제 두 분포가 같은지, 다른지에 대한 테스트를 진행할 수 있다.

문제는 무엇이 같은지, 무엇이 다른지에 대해 판단하기 어렵다는 점이다. 위 사진의 왼쪽부터 A, B, C라고 하자. 만약 A를 difference of means를 사용하여 두 분포를 구별하겠다고 한다면, B는 어떻게 구별할 것인가? 그렇다면 B를 difference of variances를 사용하여 구별하겠다고 한다면, C는 어떻게 구별할 것인가? 그리고 이러한 문제는 고차원으로 갈수록 어려워진다. 따라서 우리는 discriminator라고 불리는 일종의 classifier를 훈련하여 $S_1$과 $S_2$를 구별하도록 할 것이다.

이제 GAN에서 discriminator의 필요성을 알아보았으므로, 본격적으로 GAN의 구조에 대해 알아보자.


3. Generative adversarial networks

3.1. Training objective for discriminator

Discriminator의 역할은 two-sample test를 수행하는 것이다. 즉 binary classifier $D_\phi$는 input sample이 $p_{data}$에서 왔다면 $y=1$(real)을, $p_\theta$에서 왔다면 $y=0$(fake)을 출력하도록 훈련된다. 여기서 test statistic $T$는 classifier의 loss function에 음수를 취해 세팅한다. 즉 다음과 같이 이야기할 수 있다.

  • $T$가 높다 = loss가 낮다 = $p_{data}$와 $p_\theta$를 잘 구별한다 (different)
  • $T$가 낮다 = loss가 높다 = $p_{data}$와 $p_\theta$를 잘 구별하지 못한다 (similar)

Discriminator는 두 분포를 구별하기 위해, 즉 alternative hypothesis $p_{data} \neq p_\theta$를 위해 two-sample test statistic $T$를 최대화하는 방향으로 훈련된다. 다시 말해, classification loss를 최소화하는 방향으로 훈련된다. 따라서 discriminator의 training objective를 다음과 같이 나타낼 수 있다.

\[\max _{D_\phi} V(p_\theta, D_\phi) = \mathbb{E} _{x \sim p_{data}} \left[\log D_\phi(x)\right] + \mathbb{E} _{x \sim p_\theta} \left[\log (1 - D_\phi(x))\right]\]

이는 곧 다음을 의미한다.

  • True data point $x \sim p_{data}$에 대해서는 $D_\phi(x) = 1$을 부여한다.
  • Fake data point $x \sim p_\theta$에 대해서는 $D_\phi(x) = 0$을 부여한다.

수학적으로 optimal discriminator는 다음 식으로 유도된다.

\[D_\phi^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_\theta(x)}\]

만약 $x$가 $p_{data}$에서는 추출할 수 있지만, $p_\theta$에서는 추출할 수 없는 극단적인 샘플이라면 $D_\phi ^ \ast (x) = 1$이 된다. 반대로 $x$가 $p_{data}$에서는 추출할 수 없지만, $p_\theta$에서는 추출할 수 있는 극단적인 샘플이라면 $D_\phi^ \ast(x) = 0$이 된다. 그리고 만약 $p_{data}$와 $p_\theta$가 같다면 $D_\phi^ \ast (x) = 1/2$가 된다. 더 이상 두 분포를 구별할 수 없게 되어버리는 것이다.

3.2. Training objective for generator

Generator $G_\theta$는 gaussian과 같은 simple prior로부터 $z \sim p(z)$를 샘플링한 뒤, $x = G_\theta(z)$를 생성한다. 이 방식을 사용하면 likelihood $p_\theta(x)$는 더 이상 explicit하게 나타나지 않고, implicit하게 정의되므로 likelihood를 계산할 수는 없다. 이제 $p_\theta$ 대신 $p_G$라고 표기하자.

Generator는 null hypothesis $p_{data} = p_\theta$를 위해 훈련된다. 즉 two-sample test statistic $T$를 최소화하는 방향으로 훈련된다. 따라서 generator의 training objective를 다음과 같이 나타낼 수 있다.

\[\min _{G} \max _{D} V(G, D) = \mathbb{E} _{x \sim p_{data}} \left[\log D(x)\right] + \mathbb{E} _{x \sim p_G} \left[\log (1 - D(x))\right]\]

위에서 확인했던 optimal discriminator $D_ G ^*$를 대입하면 다음과 같이 식을 전개할 수 있다.

\[\begin{aligned} V(G, D_ G ^*) &= \mathbb{E} _{x \sim p_{data}} \left[\log \frac {p_{data}(x)}{p_{data}(x) + p_G(x)}\right] + \mathbb{E} _{x \sim p_G} \left[\log \frac {p_G(x)}{p_{data}(x) + p_G(x)}\right] \\ &= \mathbb{E} _{x \sim p_{data}} \left[\log \frac {p_{data}(x)}{\frac {p_{data}(x) + p_G(x)}{2}}\right] + \mathbb{E} _{x \sim p_G} \left[\log \frac {p_G(x)}{\frac {p_{data}(x) + p_G(x)}{2}}\right] - \log 4\\ &= D_{KL} \left[p_{data} \parallel \frac {p_{data} + p_G}{2}\right] + D_{KL} \left[p_G \parallel \frac {p_{data} + p_G}{2}\right] - \log 4 \end{aligned}\]

이것이 어떤 뜻을 가지는지 알아보자.

3.3. Jensen-Shannon divergence

Jensen-Shannon divergence은 KL-divergence와 유사하게 두 분포의 차이를 측정하는 방법이다. 다음과 같이 정의된다.

\[D_{JSD}\left[p, q \right] = \frac{1}{2} D_{KL}\left[p \parallel \frac{p+q}{2}\right] + \frac{1}{2} D_{KL}\left[q \parallel \frac{p+q}{2}\right]\]

Jensen-Shannon divergence의 특징은 다음과 같다. 특히, Jenson-Shannon divergence는 KL divergence와 달리 symmetric하다는 특징이 있다.

  • $D_{JSD}\left[p, q \right] \geq 0$
  • $D_{JSD}\left[p, q \right] = 0$ iff $p=q$
  • $D_{JSD}\left[p, q \right] = D_{JSD}\left[q, p \right]$ (symmetric)

이를 이용하면 optimal discriminator를 대입한 generator의 training objective를 다음과 같이 나타낼 수 있다.

\[V(G, D_ G ^*) = 2D_{JSD}\left[p_{data}, p_G\right] -\log 4\]

따라서 optimal generator는 $p_G = p_{data}$이도록 훈련된다. 그러므로 optimal discriminator와 optimal generator를 얻은 경우 $V$는 다음과 같아야 한다.

\[V(G^ *, D^ * _G) = -\log 4\]

3.4. Training algorithm

GAN의 학습 방법은 다음과 같다.

  1. $\mathcal{D}$에서 $m$개의 training points $x^{(1)}, x^{(2)}, \cdots, x^{(m)}$를 추출한다.
  2. $p_z$에서 $m$개의 noise vectors $z^{(1)}, z^{(2)}, \cdots, z^{(m)}$를 추출한다.
  3. Discriminator parameter $\phi$를 업데이트한다.
  4. Generator parameter $\theta$를 업데이트한다.
  5. 1-4를 반복한다.

이때 discriminator의 업데이트는 다음과 같이 이루어진다.

\[\nabla_ \phi V(G_\theta, D_\phi) = \frac{1}{m} \nabla_ \phi \sum _{i=1}^m \left[ \log D_\phi(x^{(i)}) + \log (1 - D_\phi(G_\theta(z^{(i)})))\right]\]

Generator의 업데이트는 다음과 같이 이루어진다.

\[\nabla_ \theta V(G_\theta, D_\phi) = \frac{1}{m} \nabla_ \theta \sum _{i=1}^m \log (1 - D_\phi(G_\theta(z^{(i)})))\]

결국 discriminator와 generator는 minimax game을 통해 훈련되고, 서로 번갈아가면서(alternating) 훈련된다.

아래 그림은 GAN을 설명할 때 자주 사용되는 유명한 그림으로, 파란색은 discriminator의 prediction을, 초록색은 generator distribution을, 빨간색은 true data distribution을 나타낸다. Discriminator는 true data distribution과 generator distribution을 구별하도록 훈련되고, generator는 true data distribution과 구별되지 않도록 훈련되는 것을 볼 수 있다. 결과적으로 discriminator의 prediction은 0.5에 가까워지고, generator distribution은 true data distribution과 유사해진다.

3.5. Challenges of GAN

그러나 GAN에는 2가지 문제가 있는데, 바로 mode collapsenon-convergence이다.

Mode collapse

Mode collapse는 generator가 특정한 모드만을 생성하는 현상을 의미한다. 즉, discriminator에게 구별되지 않을만한 몇 가지 모드를 제외하고는 생성하지 않는 것이다. 예를 들어 다음과 같은 mixture of gaussian들을 generator가 골고루 생성하게 하고 싶다고 가정하자.

그러나 실제로 훈련해보면 그 중 하나의 gaussian만 생성하게 된다. 어느 정도 학습이 진행되면 discriminator의 성능이 높아지고, generator는 discriminator를 속이기 위해 그 중 하나의 gaussian만 생성하게 된다. 단지 학습을 하면서 다른 모드들 사이를 이동(oscillation)하기만 할 뿐이다.

다음은 실제 mode collapse가 일어난 예시이다.

Non-convergence

Non-convergence는 GAN이 수렴하지 않는 현상을 의미한다. 즉, discriminator와 generator가 번갈아가면서 훈련되어야 하는데, 둘 중 하나가 다른 하나를 앞지르는 현상이 발생한다. 이러한 문제는 GAN의 학습이 매우 불안정하다는 것을 의미한다.

이러한 문제들을 해결하기 위해 많은 후속 논문들이 발표되었으며, 관련해서는 GAN 관련 논문 리뷰를 통해 다뤄보겠다.


4. f-GAN

f-GAN은 GAN을 확장한 모델로, GAN의 목적함수를 다양하게 변형하여 사용할 수 있도록 하였다. 먼저 f-divergence라는 개념에 대해 알아보자.

4.1. f-divergence

f-divergence는 다음과 같이 정의된다.

\[D_f(p, q) = \mathbb{E} _{x \sim q} \left[f\left(\frac{p(x)}{q(x)}\right)\right]\]

이때 $f$는 $f(1)=0$을 만족하는 임의의 convex, lower-semicontinuous function이다. $f$가 이와 같이 정의된 이유 중 하나는 Jensen’s inequality를 이용하면 f-divergence가 다음과 같은 non-negative 성질이 있기 때문이다. (정확히는 나중에 등장하는 convex conjugate 때문이다.)

\[\begin{aligned} D_f(p, q) &= \mathbb{E} _{x \sim q} \left[f\left(\frac{p(x)}{q(x)}\right)\right] \\ &\geq f\left(\mathbb{E} _{x \sim q} \left[\frac{p(x)}{q(x)}\right]\right) \\ &= f\left(\int q(x) \frac{p(x)}{q(x)}dx\right) \\ &= f\left(\int p(x)dx\right) \\ &= f(1) = 0 \\ \end{aligned}\]

$f$는 이러한 성질을 만족하는 임의의 함수이므로, 다양한 f-divergence를 정의할 수 있다. 예를 들어 $f(u) = u\log u$인 경우 KL-divergence가 된다.

\[D_{KL}(p \parallel q) = \mathbb{E} _{x \sim q} \left[\frac{p(x)}{q(x)}\log \frac{p(x)}{q(x)}\right]\]

그 외에도 다양한 f-divergence가 가능하다. 물론 GAN에서 사용한 JSD도 f-divergence의 일종이다.

4.2. Variational Divergence Minimization

그렇다면 f-divergence를 사용해서 학습하기 위해, $p_\theta$와 $p_{data}$를 대입해보자.

\[D_f(p_{data}, p_\theta) = \mathbb{E} _{x \sim p_\theta} \left[f\left(\frac{p_{data}(x)}{p_\theta(x)}\right)\right]\]

문제가 생겼다. GAN은 likelihood-free model로 $p_{data}$와 $p_\theta$의 likelihood를 계산할 수 없다. 따라서 위 식을 계산할 수 없다. 이를 해결하기 위해 variational divergence minimization을 사용한다. 그런데 여기에 사용되는 수학이 꽤나 복잡하여 간략하게만 언급하겠다.

함수 $f$에 대하여 convex conjugate $f^*$를 다음과 같이 정의할 수 있다. 여기서 $\text{dom}_ f$는 $f$의 domain을 의미한다.

\[f^*(t) = \sup _{u \in \text{dom}_ f} \left[ut - f(u)\right]\]

그리고 $f$가 convex, lower semicontinuous function이면 $f^\ast$도 convex, lower semicontinuous function이 되며, $f^ {\ast \ast}=f$가 성립한다. 이러한 $f^*$를 사용하여 수식을 전개하면, 다음과 같이 f-divergence를 부등식으로 나타낼 수 있으며, 이는 VAE에서 ELBO를 구했던 것과 같이 일종의 variational lower bound를 구하는 과정이라 이해하면 된다. 이때 $\mathcal{T}$는 모든 가능한 함수들의 집합이다.

\[D_f(p, q) \ge \sup _{T \in \mathcal{T}} \left[\mathbb{E} _{x \sim p} \left[T(x)\right] - \mathbb{E} _{x \sim q} \left[f^*(T(x))\right]\right]\]

이제 $p, q$에 각각 $p_{data}, p_G$를 대입하자. 그리고 적절한 $T$는 우리가 찾아야 하는데, 이는 곧 위 식을 최대화($\sup$)하는 $T$를 찾는 것과 같다. 이는 곧 $T$가 discriminator의 역할을 한다는 것을 의미한다. 반면 generator $G$는 $D_f$를 최소화하기 위해 훈련된다. 따라서 다음과 같은 minimax 문제가 된다. GAN과 유사한 형태이다.

\[\min_ \theta \max_ \phi F(\theta, \phi) = \mathbb{E} _{x \sim p_{data}} \left[T_\phi(x)\right] - \mathbb{E} _{x \sim p_G} \left[f^*(T_\phi(x))\right]\]

놀랍게도 여러 divergence에 대해서 실험했을 때의 결과를 보면, divergence의 종류에 크게 구애받지 않는다는 것을 알 수 있다.

f-GAN에서는 GAN의 목적함수를 일반화시키고, (여기서 증명하지는 않았지만) 더 나아가 이것들이 국소적으로 수렴한다는 것을 보였다. f-GAN은 GAN 발전 과정에서의 중요한 랜드마크이다.


5. Wasserstein GAN (WGAN)

📌 WGAN 정리글을 참고하였습니다.

Wasserstein GAN은 f-GAN이 “얼마나 분포 사이 거리가 먼지” 계산하기 어려운 경우가 많다는 것으로부터 출발한다. 아래와 같은 단순한 함수 $p, q_\theta$를 보자.

\[p(x) = \begin{cases} 1 & \text{if } x=0 \\ 0 & \text{otherwise} \end{cases}, \quad q_\theta(x) = \begin{cases} 1 & \text{if } x=\theta \\ 0 & \text{otherwise} \end{cases}\]

이때 KL divergence, Jensen-Shannon divergence는 각각 다음과 같다.

\[D_{KL}(p \parallel q_\theta) = \begin{cases} 0 & \text{if } \theta=0 \\ \infty & \text{otherwise} \end{cases}, \quad D_{JS}(p, q_\theta) = \begin{cases} 0 & \text{if } \theta=0 \\ \log 2 & \text{otherwise} \end{cases}\]

즉 서로 멀리 떨어져 있는 분포의 경우 f-divergence는 discontinuous하기 때문에, 얼마나 멀리 떨어져 있는지를 알기 어렵다. 따라서 학습 초기 두 분포가 멀리 떨어져 있는 경우, gradient가 계산되지 않아 학습이 불안정하다.

5.1. Wasserstein distance

Wasserstein distance는 Earth-Mover distance라고도 불리며, 다음과 같이 정의한다.

\[D_w(p,q) = \inf _{\gamma \in \Pi(p,q)} \mathbb{E} _{(x,y) \sim \gamma} \left[\Vert x-y \Vert _ 1 \right]\]

여기서 $\Pi(p,q)$는 $p(x) = \int q(y) \gamma(x,y)dy$, $q(y) = \int p(x) \gamma(x,y)dx$를 만족하는 joint distribution $\gamma$의 집합이다. 복잡한 정의이지만 해석하자면 두 분포 사이의 최소 이동 거리라고 이해할 수 있다. 즉, 분포 $p$에서 $q$로 옮기기 위한(Earth-Mover) 최소 비용을 의미한다.

직전에 언급했던 $p, q_\theta$의 예시를 다시 보자.

\[p(x) = \begin{cases} 1 & \text{if } x=0 \\ 0 & \text{otherwise} \end{cases}, \quad q_\theta(x) = \begin{cases} 1 & \text{if } x=\theta \\ 0 & \text{otherwise} \end{cases}\]

이때 $D_w(p, q_\theta) = \vert \theta \vert$이다. 이제 두 분포 사이가 멀어도 분포 사이의 거리를 계산할 수 있게 되었다.

5.2. Wasserstein GAN

Wasserstein GAN 역시 복잡한 수학적 전개 과정을 가지고 있는데, 결론만 정리하면 Kantorovich-Rubinstein duality에 의해 다음과 같이 나타낼 수 있다. f-GAN과 유사한 형태이다.

\[D_w(p, q) = \sup _{\Vert f \Vert _L \leq 1} \mathbb{E} _{x \sim p} \left[f(x)\right] - \mathbb{E} _{x \sim q} \left[f(x)\right]\]

$\Vert f \Vert _L \leq 1$은 $f$의 Lipschitz constant가 1이라는 것으로, 다음과 같이 $f$가 너무 빠르게 변하지 않도록 제한한다.

\[\vert f(x) - f(y) \vert \leq \Vert x - y \Vert _ 1\]

Wasserstein GAN에서는 $D$를 discriminator라고 하지 않고 critic이라고 부른다. 나머지는 동일하게 f-GAN에서 했던 것과 같이 critic $D$를 최대화하고, generator $G$를 최소화하는 식으로 바꿔 쓰면 다음과 같다. 여기서는 $f$를 $D$로 바꾼 것이다.

\[\min _\theta \max _\phi F(\theta, \phi) = \mathbb{E}_ {x \sim p_{data}} \left[D_\phi(x)\right] - \mathbb{E}_ {z \sim p(z)} \left[D_\phi(G_\theta(z))\right]\]

지금까지도 사용되는 GAN의 objective function이 도출되었다. 문제는 critic의 Lipschitz constant를 1로 제한하는 것이 어렵다는 것이다. 이를 해결하기 위해 weight clipping이나 gradient penalty를 사용한다.

  1. Weight clipping: WGAN에서 사용한 방법으로, critic의 weight를 일정 범위로 제한한다. $W = \left[-0.01, 0.01\right] ^ d$으로 범위를 제한하였다.
  2. Gradient penalty: WGAN-GP에서 사용한 방법으로, 수학적으로 Lipschitz constant가 1이면 $\Vert \nabla_ x D_ \phi(x) \Vert = 1$이어야 하기 때문에, 이를 regularizer term으로 추가한다.

위 그림을 보면, 학습 초기 GAN의 discriminator와는 달리 WGAN의 critic은 완만한 기울기를 가져 gradient 계산이 가능한 것을 알 수 있다. 이를 통해 더 안정적인 학습이 가능하고, mode collapse 문제도 어느 정도 해결된다.


6. Summary

[CS236n] 6. Generative Adversarial Networks에서는 GAN을 알아보았다. GAN은 likelihood-free learning을 통해 sample quality를 높이기 위해 등장하였다. 그러나 GAN은 mode collapsenon-convergence 문제가 있다. 이러한 문제를 해결하고, GAN을 발전시킨 중요한 모델들로 f-GANWasserstein GAN을 소개하였다.


CS236n 카테고리 내 다른 글 보러가기

댓글 남기기