Hello Computer Vision

비전공생의 WGAN(Wasserstein GAN, 2017) 에 대한 간단한 이해 본문

Generative

비전공생의 WGAN(Wasserstein GAN, 2017) 에 대한 간단한 이해

지웅쓰 2022. 11. 11. 22:23

이번에 읽으려고 했던 논문은 WGAN이었다.

그러나 너무나 많은 수식으로 인해 저 혼자서 이해하기에는 힘들다고 생각했고

많은 블로그들을 참조해 WGAN 에서 필요한 부분들에 대한 저만의 이해를 써보겠습니다.

최대한 앞으로의 모델을 공부하는데 있어 불편함 없을 정도로 알아보겠습니다.

 

참조 자료

영상 : 십분 딥러닝 https://www.youtube.com/watch?v=j-6uUCmY4p8

 글 : 하우론님의 https://haawron.tistory.com/21

 

먼저 확률분포는 특정한 값을 가질 확률을 나타내는 함수를 나타냅니다.

확률밀도함수라고 한다면 구간별로 적분한 넓이가 확률이 될 것이고 확률은 1이 넘을 수 없으므로

분포의 총 면적은 1이 됩니다.

 

그리고 거리함수에 대한 정의를 해보겠습니다.

거리 함수(Metric Function)의 정의

1. 임의의 $x, y ∈ X$ 에 대하여 $d(x,y) =0 ↔  x=y$ 

2. 임의의 $x, y ∈ X$ 에 대하여  $d(x,y) = d(y,x)$

3. 임의의 $x, y, z ∈ X$에 대하여  $d(x,y) ≤ d(x,z) + d(y,z)$

이러한 3가지 조건들을 만족합니다. 

기존의 GAN이 사용 KL divergence는 2번 규칙을 만족하지 않는데요, 거리함수가 아니기 때문입니다.

 

그렇다면 이 논문의 핵심은 분포간의 거리를 재정의한 것인데요, 분포간의 거리란 

-> 거리함수에 대한 정의를 만족하면서 분포간의 차이를 나타낼 수 있다.

여기서 분포간의 차이란 수치적인, 정량적인 차이를 나타낼텐데 어떠한 정의를 쓰냐에 따라 다를 거 같습니다.

그렇다면 이제 분포간의 거리를 나타내는 함수들을 알아보겠습니다.

 

The Total Variation Distance

$\delta(P_{r}, P_{g} = sup | P_{r}(A) - P_{g}(A)|$           

$\forall A ∈ ∑, P_{r}(A) = \int_{A}{P_{r}(x)d\mu (x)} $ ,      이렇게 나타내는데  한번 천천히 뜯어보겠습니다.

$sup$은 최대값이라 보면 됩니다. 만약 거리를 재었을 때 sup[1,2,3,4] 면은 4가 됩니다.

그렇다면 $sup|P_{r}(A) - P_{g}(A)|$  이 부분이 나타내는 건 각 분포간의 A적분구간에서의 차이 중에서

가장 큰 값을 나타내는 것이라고 할 수 있습니다. 여기서 가장 나올 수 있는 최대값은 1일 것입니다.(확률의 최대값 :1)

뭔가 굉장히 그럴듯하고 괜찮아보이지만 아무리 분포가 달라도 1이라는 상수밖에 주지못한다는 것이 단점 같습니다.

기존 데이터의 분포와 우리가 가지고 있는 분포는 매우 다를 것이기 때문에 '얼마나 많이 떨어졌느나'를 나타내지 못하는건

학습에 어려움이 있을 것이라 생각이 됩니다.

 

KL divergence

그나마 조금 익숙한 것이 나왔습니다. 거리 함수는 아니지만 GAN에서는 KL divergence를 활용하기도 하였는데요,

$$KL(P_{r}, P_{g}) = \int{P_{r}(x)log\frac{P_{r}(x)}{P_{g}(x)}}d\mu (x)$$ 으로 나타내는데, Entropy 수식을 알고 계신다면

Entropy간의 차라는 것을 알 수 있습니다.  여기서 $\mu$는 저는 전체공간이라고 가볍게 생각하였습니다.

여기서 단점이라고 한다면 만약 분포끼리 겹치지 않는다면 무한대로 발산한다는 것인데요, 

해당 구간에서의 $P_{g}(x)$가 0이고 $P_{r}(x)$ 가 0이 아니라면 무한대로 발산합니다. 이것 역시 정확하게 측정할 수

없으니 좋은 측도는 못되는 거 같습니다.

 

JS divergence.

JS divergence는 KL divergence에 단점을 개선한 측도인데요, 앞서 말한 단점이라면 무한대로 발산하는 것이었습니다.

여기서 JS divergence의 식을 살펴보자면

$$JS(P_{r}, P_{m}) = \frac{1}{2}KL(P_{r}, P_{m}) + \frac{1}{2}KL(P_{g}P_{m})$$

$$P_{m} = (P_{r} +P_{g}) / 2$$ 

 입니다. 기존의 단점은 분모에 있는 $P_{g}$가 0이 되는 것이 문제였는데 

JS 에서는 $P_{m}$이 분모에 있으니 만약 $P_{m}$이 0이 된다면 $P_{r}, P_{g}$도 0이라는 뜻입니다.

두 분포가 겹치지 않는다면 $log2$로 수렴한다고 합니다.
(이 부분에 대해서 어떤 영상은 $2log2$ 라고도 하고 잘 나와있지 않고 저도 직관적으로 이해하지 못했지만 가장 극대점이 파라미터화 할 수 없고 상수로 수렴한다고 이해하면 될 거 같습니다.) 

 

Wasserstein Distance(Earth Mover's Distance)

이제 드디어 우리가 알고자 하는 이 거리함수에 대해서 알아보려고합니다.

해당 수식은 다음과 같습니다.

$$W(P_{r}, P_{g}) = \inf_{\gamma ∈ ∏(P_{r}, P_{g})} E_{(x,y)~\gamma} [|| x-y  ||]$$

여기서 $inf$는 앞에서 나온 $sup$과 다르게 최소의 의미를 가집니다.

일단 많은 설명에서 드는 직관적인 예시들을 한번 들어보겠습니다. 

위쪽 흙더미를 아랫쪽 흙더미처럼 옮길라고 한다면 순서, 계획에 따라 드는 cost가 다를 것입니다.

다른 예시를 한번 들어보겠습니다.

이 두 분포를 겹친다고 할 때 이를 결합분포로 생각하여서 쓸 수 있습니다.(짙은 회색에서 얕은 회색으로)

  1 2 ... 7 8
4 1 0 0 0 0
5 2 0 0 0 0
6 0 1 0 1 1

column을 $P_{r}$의 확률변수들, row부분을 $P_{g}$의 확률변수들이라고 했을 때
(확률변수라고 이해해도 좋고 저는 분포가 가지고 있는 영역이라고 해석하였습니다. 실제 분포에서는 연속적이기 때문에.) 

해당 분포를 겹칠 때 비용은 각각 다를 것이며 이 중 가장 최소값을 고르는 것을 뜻합니다.

 

그리고 기존 거리함수들이 가지고 있던 문제점들이라면 거리가 발산한다던지, 상수로 수렴한다는 것이었는데

이를 개선한 것이 Earth Mover distance이다.

논문에서는 아주 간단하게 예시로 들면서 최소값, 최대값 모두 상수가 아닌 $\theta$ 로 표현이 가능하다고 한다.
($\theta$ 는 파라미터들의 집합) 

이 부분에 대해서는 아무리 멀어도 다른 함수와 달리 상수로 수렴하지 않고 파라미터화 할 수 있다는 것이 큰 의미같습니다.

이러한 그림, 결과 도출에 대해서는

$$\inf_{\gamma ∈ ∏(P_{r}, P_{g})} E_{(x,y)~\gamma} [|| x-y  ||]$$

에서 각 요소간의 차의 기댓값의 최소이니 아무리 가까워도 파라미터 한개의 차이는 있을 것이다. 이렇게

직관적이면서 간단하게 생각하고 있습니다.(틀린 이해라면 지적해주세요!)

 

그리고 조금 전 예시에서는 아주 간단하게 2차원의 결합확률분포를 나타낼 수 있었지만 실제에서는

상상할 수 없을 정도로 깊은 차원, 많은 분포들간의 거리를 계산해야할 것입니다.(요소들간의 차)

직관적으로 생각해본다면 다차원의 분포에서 수많은 요소들간의 차를 계산하고, 그것 중 최소 값을 고르는 것은 힘들

일인 것처럼 보이는데요, 이러한 문제를 해결하기 위해서

Kantorovich-Robinstein duality를 활용하여 (저는 일단 넘어가겠습니다) cost의 최소값을 구하는 문제에서 

$$max_{w∈W}   E_{x~p_{data}(x)} [f_{w}(x)] - E_{z~p_{z}(z)} [f_{w}g((x)))]$$

이러한 식으로 변형할 수 있다고 합니다. 새로운 식을 한번 살펴보자면

여기서 f라는 함수는 1-립시츠함수입니다. 원래 명칭은 K-립시츠 함수인데 K값에 따라 해당 함수에서의 기울기가

K로 제한되는 특별한 함수입니다. 

왜 이런 변환을 했냐에 대해서는 일차적으로 생각해보면 광활한 분포들 사이에서 기울기가 1 이하인 분포로 

제약을 준 것 자체로 원하는 값에 좀 더 쉽게 근사할 수 있을 거 같습니다.

 

그리고 이 함수에 대해서 근본적으로 가져야할 궁금증은 이 함수가 과연 연속하고, 미분가능할 것인가?

이런 궁금증이 있는데 이것에 대해서는 논문에서 Theorem1, 2, 3으로 구분해 증명해두었습니다.
(이것에 대해서는 나중에 시간이 생기면 더 자세히 보겠습니다..)

 

이제 준비가 어느정도 끝난 거 같다. 지금까지 한 순서를 한번 돌이켜 보자면

1. Earth Mover distance 정의 (최소값 $\theta$)

2. Kantorovich-Robinstein duality 활용해 식 변형 (최소값 -> 최대값)

3. 구하고자 하는 함수를 1-립시츠 함수로 규정(어느 구간에서든 기울기가 1이하)

 

그러면 이제 f라는 함수를 Neural Network를 통해찾는 것인데 여기서 '기울기가 1이하인 함수' 이것을 어떻게 

제약을 줄 것이냐? 가 궁금증이다. 여기서는 weight값을 [-0.01, 0.01]로 clipping 해주었다고 한다.

일단 성능을 떠나서 이런 식으로 하면 1-립시츠 함수 조건을 만족하는지 모르겠지만 뭐 된다고 하니..?

 

마지막으로 이제 손실함수를 적어보겠습니다.

$$max_{w∈W}   E_{x~p_{data}(x)} [f_{w}(x)] - E_{z~p_{z}(z)} [f_{w}g((x)))]$$

그리고 논문에서 모델을 훈련시킬 때는 판별기(critic)를 5번 훈련시키고 생성기를 한번 훈련시켰다고 합니다.

기존 GAN에서는 판별기의 성능이 항상 좋아 Mode collapse 문제가  발생하였는데 신기합니다.

이렇게 기존 GAN에서 발생한 gradient descent 문제가 많이 해결된 모습입니다.

 

 

그리고 마지막 이미지 생성 결과입니다.

 

WGAN코드도 가능한 올려보겠습니다.


느낀 점

일주일 동안 논문을 보고, 다른 분들 자료들을 보고, 스터디에서 다른 분의 설명도 들었지만

참 어려운 논문 같습니다.. 이러한 것들을 보면서 제가 이 분야에서 잘 할 수 있을까 라는 생각도 많이 드네요..

그래도 항상 꺾이지 않는 마음이 중요하다고 생각합니다. 제가 어려운 만큼 다른 분들도 어렵다고 느낄테니

계속 공부를 해갈 생각입니다.

 

틀린 점 지적해주시면 감사하겠습니다.