본문 바로가기
[딥러닝]/GANs

[학부생의 딥러닝] GANs | 2020 GANs Review ★ A Review on Generative Adversarial Networks : Algorithms, Theory, and Applications

by 하우론 2020. 3. 15.

Reference

해당 논문 : https://arxiv.org/abs/2001.06937

 

A Review on Generative Adversarial Networks: Algorithms, Theory, and Applications

Generative adversarial networks (GANs) are a hot research topic recently. GANs have been widely studied since 2014, and a large number of algorithms have been proposed. However, there is few comprehensive study explaining the connections among different GA

arxiv.org

GAN의 교과서 같은 Jonathan Hui님의 블로그 : https://medium.com/@jonathan_hui/gan-gan-series-2d279f906e7b

 

GAN — GAN Series (from the beginning to the end)

A full listing of our articles covers the applications of GAN, the issues, and the solutions.

medium.com

유명한 GAN 모델들의 Keras 구현 (최신인 듯) : https://github.com/eriklindernoren/Keras-GAN

 

eriklindernoren/Keras-GAN

Keras implementations of Generative Adversarial Networks. - eriklindernoren/Keras-GAN

github.com

 

레퍼런스가 하도 많아서 나머지 자료의 출처들은 본문에 명시하였습니다.


Summary

GAN 모델들을 정리해주는 리뷰 논문들은 몇 개가 있었지만 이 논문은 알고리즘, 이론까지 접목시켰고 비전 뿐만 아니라 다른 specific application에 대해서도 소개해준다. 하지만 이론은 차별점으로 내세우기엔 양이 조금 부실하다.

논문에서 말한 대로 application의 분야들을 굉장히 세세하게 나눠서 각 분야마다 논문을 하나 이상씩 소개해 준 점은 맘에 든다.

 

크게 2. 기존의 알고리즘 / 3. GANs의 알고리즘 variants / 4. 이론 / 5. applications로 나눠져 있는데, 3절과 5절의 양이 매우 많아 글을 몇 개 나눠서 올릴 것 같다.

 

GANs의 representative variants를 두 가지 기준으로 나눠 각각 표를 만들어 정리해놨다.

알고리즘과 applications를 세부적으로 나눠 표를 만들어놨다.

 

그리고 내가 블로그 글의 가장 큰 목표는 나중에 내가 읽고 한 번에 이해하는 것이다. 나중에 내가 읽기 좋도록 레퍼런스된 논문들 중 재밌어 보이는 것 몇 개를 리뷰논문보다 좀 더 많이 풀어서 써놓을 것이다.


2. Related Works

기존의 generative 알고리즘에 대해서 설명한다. GANs 이전 알고리즘들은 fully probabilistic model 들을 사용하는 경우가 많았다. 이러한 모델들을 explicit density model들이라 하는데 GANs는 이와 반대되는 implicit density model에 해당한다.

2.1 Generative Algorithms

질답을 통해 해당 절을 재구성하였다.

 

Explicit과 Implicit model의 구별되는 특징이 무엇인가요?

Explicit

  • Explicit model 들은 gaussian 등의 쉬운 model들을 이용해 true density에 근사하게 되는데 이 과정에서 objective function을 푸는 것이 거의 불가능 하기 때문에 object 자체가 아닌 이의 lower bound에 근사하게 된다.
  • 계산 비용이 매우 비싸거나 차원이 너무 높아 표현이 불가능할 수 있다.

Implicit

  • 확률 모델 없이 모델이 생성한 데이터를 기반으로 모델을 update 한다.

GANs와 다른 implicit model 들의 차이가 무엇인가요?

  • 생성 과정을 병렬화시킬 수 있다. 예를 들어, PixelCNN은 한 pixel씩 예측하는 데 반해 GANs를 이용하면 행렬 연산으로 연산을 병렬화시킬 수 있다.
  • 모델 구조의 제한이 적다.
  • GANs는 웬만하면 다른 모델들 보다 성능이 좋은 것으로 알려져 있다.

 


2.2 Adversarial Idea

  • 알파고는 actor-criitc이라는 강화학습의 adversarial 알고리즘을 사용했다.
  • 모델의 output이 거의 차이나지 않지만 육안으로는 현저히 차이나는 input이나 육안으로는 거의 차이가 없지만 output이 크게 차이나는 input을 adversarial examples라 하고 이 값들을 찾는 것을 adversarial attack이라 한다. Attack과 defense 과정에서 GANs가 이용될 수 있다.
  • Minimax problem도 adversarial learning의 예이다. 기존의 machine learning에서 자주 등장한다.

 


3. Algorithms

3.1 Generative Adversarial Nets (GANs)

3.1.1 Objective Function

3.1.1.1 original minimax game

Standard GANs(이하 SGANs)의 자세한 내용은 내 글을 참조했으면 좋겠다.

어떤 고정된 G에 대해 optimal D는

$$D_G^*(x) = \frac{ p_{\text{data}}(x) } { p_{\text{data}}(x) + p_g(x) }$$

와 같다. 여기서 학습이 진행되어 $p_{\text{data}} = p_g$가 된다면 $D_G^*(x) = \frac{1}{2}$가 된다. 이 과정을 그래프로 보면 다음과 같다.

3.1.1.2 Non-saturating Game

$G$에 대한 objective를 다음과 같이 수정 가능하다. $1 - \log (D(x))$ 대신에 $-\log(D(x))$를 이용하는 것이다.

$$\begin{align*} J^{(G)} &= \mathbb{E}_{z \sim p_z(z)}[-\log(D(G(z)))] \\ &= \mathbb{E}_{x \sim p_g}[-\log (D(x))] \end{align*}$$

이렇게 수정된 objective를 가지게 된 문제를 non-saturating game이라 한다. (왜 non-saturating인지는 모르겠다.) 두 objective 모두 $G$를 같은 곳으로 수렴시키지만

단순히 보면 y versus $\log(1-y)$(빨강), $\log(-y)$(파랑)의 그래프이다.

전자(빨강)와 바로 다음에 설명할 Maximum Likelihood Cost(초록)는 $G$가 학습이 덜 된 상태$(D(G(z))) \approx 0)$에서 작은 gradient를 생성하여 $G$의 학습이 상대적으로 더디게 된다. 후자(파랑)의 경우는 반대로 학습 초기와 후기에 이상적인 크기의 gradient를 생성한다.

 

하지만 non-saturating game은 unstable하다는 단점이 있다.

$$E_{x \sim p_g} [-\log(D_G^*(x))] = KL(p_g\lVert p_{\text{data}}) - 2JS(p_g\lVert p_{\text{data}}) + E_{x \sim p_{\text{data}}} [\log(D_G^*(x))] + 2\log2$$

의 첫 번째 항은 두 분포 사이의 divergence를 줄이는 역할을, 두 번째 항은 늘리는 역할을 한다. 항끼리 서로 모순된 목표를 가지고 있어 unstable한 gradient를 생성한다고 한다.

 

게다가 divergence는 symmetric하지 않아서 문제가 생긴다.

어떤 한 sample $x$에 대해

$$p_{\text{data}}(x) \rightarrow 0 \text{ and } p_g(x) \rightarrow 1 \text{, then } KL(p_g \lVert p_{\text{data}}) \rightarrow +\infty$$

이면 $G$가 이상한 이미지를 생성해 penalization이 큰데 반해 (정상)

$$p_{\text{data}}(x) \rightarrow 1 \text{ and } p_g(x) \rightarrow 0 \text{, then } KL(p_g \lVert p_{\text{data}}) \rightarrow 0$$

이면 $G$가 어느 그럴 듯한 이미지 하나만 생성하는데도 penalization이 작다. (문제)

두 번째 경우가 mode collapse이다. Mode collapse에 적절한 penalization을 주는 것이 주요 문제라 할 수 있겠다. Mode collapse를 divergence로 표현한 것을 처음 봐서 조금 충격이었다.

 

마지막으로 sample variance가 낮다. Variety가 떨어진다는 뜻 같다. 현실적으로 학습이 상대적으로 쉬운 이유가 될 수 있기도 하다. Sample variance가 낮아야 학습이 쉽다는 뜻 같다.

 

3.1.1.3 Maximum Likelihood Game

위 그림의 초록색 그래프이다.

$$\begin{align*}J^{(G)} &= \mathbb{E}_{z \sim p_z(z)} \left [ \exp \left ( \sigma^{-1}(D(G(z))) \right ) \right ] \\&= \mathbb{E}_{z \sim p_z(z)} [-D(G(z)) / (1 - D(G(z)))]\end{align*}$$

$\sigma$는 sigmoid를 나타낸다.

 


3.2 GANs' Representative Variants

저자들이 선정한 주요 모델들이다.

3.2.1 InfoGAN

https://arxiv.org/abs/1606.03657

Dataset의 중요하다고 생각되는 특징들을 알아서 찾아주는 모델이다. 굉장히 잘 찾는다. 정보이론의 mutual information을 이용하여 중요한 정보를 찾아낸다. 휴리스틱이 아닌 수학적으로 모델링 되어 있다는 점이 충격이었다. 섀넌의 위대함을 느낄 수 있다. 내가 지금까지 본 모델 중에 가장 신기한 모델이다.

 

$$\min_G \max_D V_I(D, G) = V(D, G) - \lambda I(c;G(z,c))$$

$I$가 mutual information이며, $c$와 $G(z, c)$간에 얼마나 많은 정보가 있는지 나타낸다. 둘 사이의 정보량은 "독립일 때의 joint distribution와 true joint distribution 간의 거리(정확히는 divergence)"로 정의된다. $I$를 계산하는 과정에서 posterior $P(c|x)$가 필요한데, 이 posterior가 model의 목표이다. 학습목표가 학습 중에 필요하다는 것은 모순적이다. 그래서 이 과정에 auxiliary distribution $Q$를 두어 문제를 해결했다.

 

자세한 설명은 내가 정리한 글로 대체하겠다. https://haawron.tistory.com/10

 

[학부생의 딥러닝] GANs | InfoGAN : Information maximizing GAN

InfoGAN - Tensorflow 구현, PyTorch 구현 레퍼런스 - InfoGAN - Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets : https://arxiv.org/abs/1606.03657 - 상호정보..

haawron.tistory.com

학습 후 extra-/interpolation

3.2.2 Conditional GANs (cGANs)

https://arxiv.org/abs/1411.1784

학습 시에 condition $y$도 같이 넣어줘서 conditional distribution을 학습한다. Generation 과정에서 condition을 넣어주면 해당 label을 가질 만한 output을 내놓는다.

 

$$\min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{\text{data}} (x)} [\log D(x|y)] + \mathbb{E}_{z \sim p_z(z)} [\log(1-D(G(z|y)))]$$

 

가 일반적인 cGANs의 object이고, 여기에 $l_1$ distance를 regularizer로 활용할 수 있다.

 

$$L_{cGANs}(D, G) = \mathbb{E}_{x, y} [\log D(x, y)] + \mathbb{E}_y[\log (1-D(y, G(y)))] \\ L_{l_1}(G) = \mathbb{E}_{x, y} \left [ \lVert x-G(y) \rVert_1 \right ] \\ \min_G \max_D L_{cGANs}(D, G) + \lambda L_{l_1}(G)$$

 

InfoGAN과 cGANs의 차이가 뭔가요?

  • cGANs는 학습 시에 condition으로 data의 label을 one hot을 넣어주어 supervised지만, InfoGAN은 code $c$가 unknown이어서 random하게 아무 label이나 넣어 학습하며 중요한 특징을 알아서 찾기 때문에 어떤 condition을 학습할지 학습이 끝나기 전에 알 수 없다.
  • InfoGAN은 auxiliary distribution $Q$를 위한 추가적인 network가 필요하다. (하지만 요구량이 전체 network의 크기에 비해 아주 작다.)

Ex 1) pix2pix

https://arxiv.org/abs/1611.07004

어떤 이미지와 이 이미지로 쉽게 만들 수 있는 이미지 간에 translate 해주는 모델이다. 컬러 이미지로부터 흑백 이미지를 만들기는 매우 쉽다. 이를 이용해 흑백 → 컬러로 가는 색 복원 모델을 만들 수 있다. 성능은 후술할 CycleGAN보다 괜찮지만 한 이미지와 변환 이미지 pair를 사람이 직접 쉽게 만들 수 있어야 학습 시킬 수 있다는 단점이 있다.

Pix2Pix의 개요

후속인 pix2pixHD는 고화질 이미지 systhesis를 위해 multi-layer feature matching loss를 사용했다. 우선 $D$를 같은 structure인 network 3개로 3단계 $D_k$, $k \in {1, 2, 3}$가 되도록 나눈다. 각 network에는 원본 이미지와 1/2, 1/4로 subsample 된 이미지가 들어간다. 대형 이미지에서는 특징 간 거리가 멀어져 receptive field가 커야 하는데 이렇게, 여러 network로 나눔으로서 넓은 receptive field를 가진 discriminator를 capacity penalty 없이 얻어낼 수 있다. 이제 각 $D_k$의 각 layer 마다 feature map을 뽑아내 feature matching loss를 계산한다.

$$L_{FM}(G, D_k) = \mathbb{E}_{(s, x)} \sum^T_{i=1} {1 \over N_i} \left [ \left \lVert D_k^{(i)} (s, x) - D_k^{(i)} \left (s, G(s) \right ) \right \rVert_1 \right ]$$

$x$는 natural photo, $s$는 그에 해당하는 label map이고, $D_k^{(i)}$는 input서부터 $D_k$의 $i$ 번째 layer에 이르는 subnetwork이다. 최종 objective는

$$\min_G \left ( \left ( \max_{D_1, D_2, D_3} \sum_{k=1, 2, 3} L_{cGANs} (G, D_k) \right ) + \lambda \sum_{k = 1, 2, 3} L_{FM}(G, D_k) \right )$$

이다. 최종적으로 이를 Interactive하게 구현했는데 아래의 영상에서 확인할 수 있다.

 

 

Ex 2) Mode Seeking GANs (MSGANs)

https://arxiv.org/pdf/1903.05628

기존의 cGANs는 latent code $z$가 변화해도 결과값의 변화가 거의 없는 것을 보여준다. 일종의 mode collapse로 볼 수 있다.

Task driven이 아닌 cGANs 계열의 모델들을 개량하는 방법에 대한 논문이다. 기존의 cGANs들은 위 이미지처럼 latent code의 변화에 반응이 무딘 모습을 보여준다. 하지만 이를 반대로 이용해 "latent code가 변화하는 만큼 output도 변화하도록 학습시키면 어떨까?" 하는 호기심에서 착안한 것이 MSGANs이다.

오른쪽의 빨간 글씨 0.17에 주목하자. 파란색 같은 경우는 mode를 두 개($M_2$, $M_4$)밖에 학습하지 못해 $Z_1$과 $Z_2$가 같은 mode의 이미지를 생성하여 mode간 거리가 MSGANs보다 짧은 모습을 보여준다. 생성된 Image의 distribution이 더 넓게 분포할수록 mode간 거리가 커질 것으로 예상할 수 있다.

이에 latent code 변화의 크기에 생성된 이미지가 잘 반응할 수 있도록 regualrizer를 추가한다.

$$L_{ms} = \max_G \left ( {d_1 ( G(c, \mathbf{z}_1), \, G(c, \mathbf{z}_2)) \over d_{\mathbf{z}} (\mathbf{z}_1, \mathbf{z}_2)} \right )$$

DRIT https://arxiv.org/abs/1808.00948 (좌) MSGANs (우)

간단한 방법으로 model의 diversity를 크게 늘렸다는 의의가 있다.

3.2.3 CycleGAN

https://arxiv.org/abs/1703.10593

 

두 dataset 간의 특징을 잡아내 바꿔주는 모델이다. 

 

$$L_{GAN}(G, D_Y, X, Y) = \mathbb{E}_{y \sim p_{\text{data}}(y)}[\log D_Y(y)] + \mathbb{E}_{x \sim p_{\text{data}}(x)} [\log (1 - D_Y (G(x)) )] \\ L_{GAN}(F, D_X, Y, X) = \mathbb{E}_{x \sim p_{\text{data}}(x)}[\log D_X(x)] + \mathbb{E}_{y \sim p_{\text{data}}(y)} [\log (1 - D_X (F(y)) )] \\ L_{cyc}(G, F) = \mathbb{E}_{x \sim p_{\text{data}} (x)} \left [ \left \lVert F(G(x)) - x \right \rVert_1 \right ] + \mathbb{E}_{y \sim p_{\text{data}}(y)} \left [ \left \lVert G(F(y)) - y \right \rVert_1 \right ]$$

 

Cycle-consistency loss라는 강력한 regularizer를 활용하여 역변환 관계를 더 잘 학습할 수 있도록 만든다. (단순한 reconstruction error다.) 따라서 최종 objective는 다음과 같다.

 

$$\begin{align*} L(G, F, D_X, D_Y) &= L_{GAN}(G, D_Y, X, Y) \\ &+ L_{GAN}(F, D_X, Y, X) \\ &+ \lambda L_{cyc}(G, F) \end{align*}$$

$$G^*, F^* = \arg \min_{G, F} \max_{D_X, D_Y} L(G, F, D_X, D_Y)$$

 

한편, 논문은 위 결과 이미지처럼 여러 task를 다루는데 그 중 monet2photo task에서는 영상의 색감이 보존되지 않는 문제가 있었다.

1열의 그림을 넣었을 때 2열과 같이 나오면 그림의 풍이 달라진다. Regularizer를 추가하여 3열처럼 나오도록 만들었다.

이를 해결하기 위해 identity loss라는 것을 추가했다.

$$L_{\text{identity}}(G, F) = \mathbb{E}_{y \sim p_{\text{data}}}(y) \left [ \left \lVert G(y)-y \right \rVert_1 \right ] + \mathbb{E}_{x \sim p_{\text{data}}}(x) \left [ \left \lVert F(x)-x \right \rVert_1 \right ]$$

 

Generator와 Discriminator를 두 개씩 두어 총 4개의 network를 한 번에 학습시키는 것이 특징이다. 때문에 VRAM을 상당히 많이 잡아 먹는다. photo2monet 모델이 batch 1개당 거의 5기가를 먹는다. 하지만 unpaired Image-to-Image translation의 기념비적인 모델로 자리잡아 다른 후속 모델들의 base 역할을 톡톡히 하고 있다.

 

pix2pix와 CycleGAN는 차이가 뭔가요?

  • pix2pix는 어떤 이미지와 이 이미지로부터 만들 수 있는 쉬운 예시 pair(컬러 → 흑백, 도시 사진 → segmentation map) 직접 만들어 원본 이미지와 paired로 학습시킨 반면, CycleGAN은 pair를 만들 필요 없이 두 dataset에서 아무 이미지나 하나씩 random으로 뽑아 unpaired하게 학습시킨다. 예를 들어, [도시 사진 → segmentation map] 같은 경우는 segmentation 모델을 사용해 직접 쉽게 만들 수 있어 paired 학습이 가능하지만 [말 → 얼룩말] 같은 경우는 상당한 포토샵 작업이 필요하다. 이렇게 되면 pix2pix로는 학습이 불가능하고 CycleGAN으로는 학습이 가능하다.
  • pix2pix는 multi-layer feature matching loss를 통해 직접 feature를 뽑아와 학습에 사용한다.

 

게다가

CycleGAN is an important progress for unpaired data. It is proved that cycle-consistency is an upper bound of the conditional entropy. https://arxiv.org/abs/1709.01215

Cycle-consistency가 conditional entropy의 upper bound라 한다. 

 

우연의 일치로 CycleGAN과 DiscoGAN의 발상은 거의 똑같다. 그냥 똑같다고 봐도 된다. 하지만 DiscoGAN의 논문에서는 $x \rightarrow G(x) \rightarrow F(G(x))$ 또는 그 반대 중 한 쪽 방향 학습시키면 mode collapse가 일어난다는 것을 보여준다.

가장 왼쪽이 이상적인 학습 방향이다. 하지만 $G_{AB}$가 왼쪽을 보는 차와 오른쪽을 보는 차 모두 오른쪽을 보는 얼굴로 mapping 시킨 경우에도 $G_{BA}$가 원래의 input으로 mapping시키면 cycle-consistency loss가 작다. 이로 인해 mode collapse가 발생한다.

두 논문은 거의 동시에 발표됐다.

 

CycleGAN의 후속으로 DualGAN이라는 논문도 있는데, 구조는 거의 똑같고 $G$에 학습, 테스트 모두 dropout을 줘서 모델을 stochastic하게 만들었고, loss로 WGAN을 활용해 개선했다. 하지만 논문에 CycleGAN과의 결과 비교가 없어 아쉽다.

 

3.2.4 $f$-GAN

https://arxiv.org/abs/1606.00709

Measure $P$, $Q$가 base measure $dx$에 대해 각각 절대연속 density $p$, $q$를 가질 때 다음을 $f$-divergence라 한다.

$$D_f (P\,\lVert \,Q) = \int_\mathcal{X} q(x) f \left ( {p(x) \over q(x)} \right )dx.$$

이 식으로 많은 divergence들을 일반화할 수 있다. 예를 들어 $f$가 $f(a) = \log a$이면 이는 KL divergence가 된다. $Q$를 우리가 학습시키는 분포, $P$를 true distribution으로 놓고 이 divergence를 loss로 사용하여 학습 시킬 수 있다. 하지만 true distribution인 $P$는 모르는 상태이므로 expectation 꼴로 만들어 sampling 하여 근사해야 한다. 이를 위하여 convex conjugate function $f^*$를 사용한다. Convex conjugate에 관한 내용은 여기를 참조했다.

 

$$f^*(t) = \sup_{t \in \text{dom}_{f}} \{ ut - f(u) \} \\ \Leftrightarrow f(u) = \sup_{u \in \text{dom}_{f^*}} \{ tu - f^*(t) \}$$

 

기울기 $u$가 주어졌을 때, 직선 $ut$와 함수 $f(u)$간 함숫값의 차이의 최댓값이라 생각하면 된다. 직선과 곡선 사이의 차의 최댓값은

  1. 직선에 평행하고 곡선에 접하는 직선을 구한 다음
  2. 그 직선과의 차이를 계산

하여 구할 수 있다. 그 최댓값을 기울기에 대한 함수로 표현한 것으로 볼 수 있다. 놀랍게도 $f^{**}=f$가 성립해 위의 두 번째 식과 같이 만들 수 있다. 이를 $f$-divergence 식의 $f$에 대입하면 아래와 같은 식이 나온다.

 

$$\begin{align*} D_f(P \, \lVert \, Q) &= \int_\mathcal{X} q(x) \sup_{t \in \text{dom}_{f^*}} \left \{ t {p(x) \over q(x)} - f^*(t) \right \} dx \\ &= \int_\mathcal{X} \sup_{t \in \text{dom}_{f^*}} \{ tp(x) - q(x)f^*(t) \} dx \\  &\ge \sup_{T \in \mathcal{T}} \left ( \int_\mathcal{X} p(x)T(x)dx - \int_\mathcal{X} q(x)f^*(T(x))dx \right ) \\ &= \sup_{T \in \mathcal{T}} \left ( \mathbb{E}_{x \sim P}[T(x)] - \mathbb{E}_{x \sim Q}[f^*(T(x))] \right ) \end{align*}$$

 

적분과 $\sup$의 순서가 바뀌면서 jensen 부등식이 생겨났다. 그러면 마지막 줄과 같이 expectation으로 표현이 가능해진다. 저자들은 $T$가 아래 조건을 만족하면 부등식이 tight해진다는 것을 알아냈다고 한다.

$$T^*(x) = f' \left ( {p(x) \over q(x)} \right )$$

$p(x)$를 몰라서 직접 대입하여 구할 수는 없지만 class $\mathcal{T}$를 결정하는 데에 가이드 역할이 되어 준다고 한다.

 

JS divergence는 KL로 나타낼 수 있고, $D_{GANs} = 2D_{JS} - \log(4)$ 이므로, GANs의 objective도 $f$-divergence로 나타낼 수 있다. 이런 식으로 기존의 vanilla GANs를 포함한 divergence들을 일반화하여 loss로 사용할 수 있다. 그리고 single-step gradient method라는 새로운 알고리즘을 사용하여 모델을 update하는데, 이 알고리즘의 수렴성에 대한 증명을 비롯한 다른 부분의 수학은 내 수준으로는 이해하기가 힘들었다. 유재준님의 블로그 글의 도움을 받아 조금이나마 이해가 됐다.

 

훌륭한 아이디어에도 불구하고

생성된 이미지들은 사용한 divergence에 크게 영향을 받지 않는 모습을 볼 수 있다. 저자는 생성된 이미지의 distribution과 true distribution까지의 거리가 생각보다 훨씬 커서 거리 계산 방식을 조금 바꾸는 건 크게 영향이 없는 것 같다고 추측했다고 한다. (이후 WGAN에서 이렇게 support간 거리가 크면 많은 divergence들이 의미 없는 값으로 수렴 또는 발산한다는 것을 알게 되었다.)

3.2.5 Integral Probability Metrics (IPMs)

$\mathcal{P}$를 위상공간 $(M, \mathcal{A})$의 Borel probability measure의 모임이라 하자. 두 distribution $P \in \mathcal{P}$ 와 $Q \in \mathcal{P}$ 사이의 IPM은 다음과 같이 정의된다.

$$\gamma_\mathcal{F} (P, Q) = \sup_{f \in \mathcal{F}} \left | \int_M f \, dP - \int_M f \, dQ \right | \equiv \sup_{f \in \mathcal{F}} \left | \ \mathbb{E}_{X \sim P} [f(X)] - \mathbb{E}_{Y\sim Q} [f(Y)] \, \vphantom{\int} \right |$$

$\mathcal{F}$는 $M$ 위의 real-valued bounded measurable functions의 모임이다. 가능한 $f$들을 탐색해보면서 distribution $P$가 본(평가한; evaluate) $f$와 distirbution $Q$가 본 $f$의 값의 차이 중 가장 큰 값이다. IPMs는 Wassesrstein distance와 RKHS-induced MMD를 포함한다.

3.2.5.1 Maximum Mean Discrepancy (MMD)

RKHS에서 $\mathcal{F} = \{ f : ||f||_\mathcal{H} \le 1 \}$이면 이를 MMD라고 한다. 여기서 $||f||_\mathcal{H} \le 1$이라는 건 RKHS(Reproducing Kernel Hilbert Space)에서 $f$의 norm이 1 이하라는 뜻인데, functional analysis에서 나온다고 한다. (아직 이해가 안 된다)

$$MMD(\mathcal{F}, P, Q) = \sup_{f \in \mathcal{F}} \left (\mathbb{E}_{X \sim P} [f(X)] - \mathbb{E}_{Y \sim Q} [f(Y)] \right )$$

Objective로 활용할 수도 있고 모델 평가 시에도 쓸 수 있다. 후술할 W distance도 일종의 MMD이다.

3.2.5.2 Wasserstein GAN (WGAN)

https://arxiv.org/abs/1701.07875

Loss 함수에 Earth-Mover (EM) distance (또는 Wasserstein-1 distance) 라는 것을 사용한다. $\mathcal{F} = \{ f : ||f||_L \le 1 \}$이면(그리고 $Supp(\gamma)$가 seperable하면) 후술할 Kantorovich-Rubinstein 정리에 의해 MMD에서 유도할 수 있다.

$$W(p_{\text{data}}, p_g) = \inf_{\gamma \in \Pi(p_{\text{data}}, p_g)} \mathbb{E}_{(x, y) \in \gamma} [\lVert x - y \rVert]$$

 

식을 말로 풀어서 해석해보려 해도 어렵다.

하지만 Earth-Mover라는 이름을 기반으로 이해해볼 수 있다. Earth-Mover는 원래 흙을 옮기는 기계이다. 블럭을 옮긴다고 생각해보면 블럭의 원래 모양은 $p_{\text{data}}$, 옮긴 후의 모양은 $p_g$, 옮기는 방법을 $\gamma$, 옮길 때 드는 비용을 $\sum \lVert x - y \rVert$라 할 수 있다. 단순히 비용을 블럭의 개수로 나눠주면 기댓값이 된다. 그리고 모든 방법 $\gamma$를 조사하여 알아낸 블럭을 옮기는데 드는 비용의 기댓값의 최솟값이 W-distance가 된다.

높이는 생각하지 말자

 

이 distance의 강점은 두 분포 간의 support가 겹치지 않아도 두 분포 간의 거리가 "얼마나 먼지"에 대한 정보를 줄 수 있다는 것이다. 다른 divergence들은 support가 겹치지 않으면 상수로 수렴하거나 (JS), 무한대로 발산한다 (KL).

논문의 example에 대한 W와 JSD 비교. JSD는 support가 겹치지 않으면 항상 상수값이 나와 의미있는 gradient가 나오지 않는다.

 

하지만 $\Pi$의 크기가 너무 크기 때문에(애초에 joint를 하나 샘플링 하는 것조차 힘들다) 저 식을 직접 계산하는 것은 불가능하다. Kantorovich-Rubinstein 정리를 이용해 계산이 가능한 dual form으로 나타낼 수 있다. 저 정리에 관해 글로 하나 정리해놨다. 단순히 말하면 립쉬츠조건을 달아 dual form으로 바꾸는 것이다.

https://haawron.tistory.com/23

 

Mathematics | Wasserstein GAN and Kantorovich-Rubinstein Theorem 우리말 설명

Reference 원문 : https://vincentherrmann.github.io/blog/wasserstein/ Wasserstein GAN and the Kantorovich-Rubinstein Duality Derivation of the Kantorovich-Rubinstein duality for the use in Wasserstei..

haawron.tistory.com

$$\max_{w \in \mathcal{W}} \mathbb{E}_{x \sim p_{\text{data}}(x)} [f_w(x)] - \mathbb{E}_{z \sim p_z(z)}[f_w(G(z))]$$

$\mathcal{W}$는 1립쉬츠인 함수들의 모임이다. $f_w$를 discriminator로 생각할 수 있다. 하지만 립쉬츠 조건 때문에 discriminator가 상대적으로 학습이 빠르더라도 $f_w$가 step function이 될 일이 없어 mode collapse에 빠지는 것을 어느 정도 막아준다.

자세한 내용은 내가 정리한 글에서 확인할 수 있다.

https://haawron.tistory.com/21

 

[학부생의 딥러닝] GANs | WGAN, WGAN-GP : Wassestein GAN(Gradient Penalty)

GANs에서 WGAN-GP Loss는 LSGAN Loss와 함께 가장 많이 쓰이는 loss이다. 이전의 loss 들의 문제점을 많이 해결했고 논문에서는 잘 작동하는 이유를 수학적으로 후련하게 알려준다. 하지만 수학이 좀 많이 쓰인다...

haawron.tistory.com

 

저 립쉬츠 조건이 WGAN 학습의 발목을 잡는데, DRAGAN은 립쉬츠 조건이 필요없는 W-divergence라는 것을 활용하여 해결했다고 한다.

3.2.6 Loss Sensitive GAN (LS-GAN)

추가예정

 

이로서 GANs의 다양한 알고리즘 variants들을 살펴봤다. 다음 글에서는 이론, application을 살펴 볼 것이다.