이전 GAN 포스팅에서는 GAN을 구현하고 어떤식으로 동작하는지 직관적으로 살펴 보았다면,
이번 포스팅은 Ian Goodfellow 가 작성한 GAN 논문을 요약해 살펴보고자 한다.
1. 수식
$$\min_G \max_D V(D,G) = \mathbb{E}_{x\sim p(data)} [\log(D(X))] + \mathbb{E}_{z\sim p(z)}[\log(1- D(G(Z))]$$
각 기호의 의미는 아래와 같다.
- ${\min\limits_G \max\limits_D}$ : 생성기 $G$는 손실함수를 최소화해야 하는 반면, 판별자 $D$는 손실함수를 최대화 해야 한다는 의미이다.
- $V(D,G)$ : 최종적으로 도출해야하는 목적함수이다.
- $\mathbb{E}_{x\sim p(data)} [\log(D(X))]$ : 실제 데이터($x$)의 분포($p(data)$)에서 샘플링한 $x$의 기댓값으로, 판별자 $D$가 $x$를 '진짜 이미지' 라고 판단할 확률의 로그값이다.
- 실제 이미지가 입력값일 때 이를 잘 예측하였다면 $D(x) = 1$ 값을 지니므로, $log(D(x)) = 0$ 가 된다.
- 실제 이미지기 입력값일 때 이를 잘못 예측하였다면 $D(x) = 0$ 값을 지니므로, $log(D(x)) = -\infty$ 가 된다.
- 왜 잘 예측하였을때 판별자 $D(x) = 1$ 이여야 하는지는 $\min\limits_G \max\limits_D$의 의미를 다시 생각해 보자.
- $\mathbb{E}_{z\sim p(z)}[\log(1- D(G(Z)))]$ : 잠재 변수($z$)의 분포($p(z)$) 에서 샘플링한 $z$의 기댓값으로, 판별자 $D$가 $G$를 통해 생성된 이미지를 '가짜'라고 판단할 확률의 로그 값이다.
- 가짜 이미지가 입력값일 때 이를 잘못 예측하였다면 $D(x) = 1$ 값을 지니므로, $log(1 - 1) = -\infty$ 가 된다.
- 가짜 이미지가 입력값일 때 이를 잘 예측하였다면 $D(x) = 0$ 값을 지니므로, $log(1 - 0) = 0$ 가 된다.
- 왜 가짜 이미지를 잘못 예측하였을 때 $D(x) = 1$ 이여야 하는지는 $\min\limits_G \max\limits_D$의 의미를 다시 생각해 보자.
아래는 보다 상세한 기호 설명이다.
- $z$ : $G$의 입력으로 사용되는 잠재 변수로서, 임의의 분포 $p(z)$에서 샘플링되는 무작위 벡터로, 생성기 $G$는 $z$를 가짜 이미지로 변환한다. 일반적으로 $z$는 정규 분포, 균등 분포 등에서 샘플링 되지만 다른 분포를 사용할 수 있다.
- $p$ : '확률분포' 를 나타낸다.
- $p(data)$ : 실제 데이터의 확률 분포를 나타낸다. 즉, 실제 데이터가 어떠한 값들을 가질 확률이 얼마나 높은지를 표현한다.
- $p(z)$ : 잠재변수 $z$의 확률변수를 나타낸다. 즉, $z$가 어떤 값들을 가질 가능성이 얼마나 높은지 표현하는 함수이다.
이제 수식에 관해서 전반적인 설명을 하자면, 판별기의 loss function 값은 최대가 0 이며 최소값은 $-\infty$가 된다. 판별기가 '잘' 예측 하였을 때 0 값을 지니는 것을 목적으로 한다. 즉, 위 수식을 다시 보면, 실제 이미지를 올바르게 '진짜 이미지' 라고 평가하였을 때 0 + 가짜 이미지를 올바르게 '가짜 이미지' 라고 평가하였을 때 0 = 0 라는 결과값을 얻을 수 있다.
반면 생성기의 loss function 값은 얼마나 판별기를 속일 수 있는지에 따라서 결정된다. 즉 윗부분 수식에서 덧셈(+) 기호 뒷 부분에 존재하는 수식만을 사용한다.
$$ \min_G V(D,G) = \mathbb{E}_{z\sim p(z)}[\log(1- D(G(Z))] $$
햇갈릴 수 있는게 포스팅 상단에 있는 수식($\min\limits_G \max\limits_D \cdots$)은 $G$와 $D$가 적대적으로 학습하는 것을 표현하기 위해 $G$와 $D$의 손실함수를 동시에 표현한 것이다. 생성기를 학습하는 데에는 위의 덧셈(+) 기호 이후 수식 부분만 사용된다는것을 명심하자.
정리하자면, 판별기를 학습시키는 데에는 경사하강법을 '최대 기울기(최대값)' 를 향해 학습되어야 한다. 반면 생성기는 '최소 기울기(최소값)' 을 향해 경사하강법을 진행시켜야 한다. 이 때, 생성기와 판별기를 '동시에' 학습시키지 않는다.
- $D$를 고정하고 $G$를 한번 업데이트한다. ($G$의 손실함수를 최소화하는 방향으로)
- $G$를 고정하고 $D$를 $k$번 업데이트한다. ($k$ 는 HyperParameter 로서 해당 논문에서는 1로 지정함)
이는 둘 다 동시에 학습시킬때 학습이 불안정해지는 문제를 방지하기 위해서다.
위의 모든 과정을 그림으로 표현하면 아래와 같다.
여기서의 $x$는 입력값이다.($G$를 통해 생성된 입력값($p_g$)과, 실제 데이터 입력($p_data$)을 모두 포함한다.)
- (a) : $G$가 생성하는 데이터가 진짜 데이터($p_{data}$) 와 어느정도 유사한 샘플을 제작할 수 있다. 하지만 검은 점선과 녹색 실선의 이격이 있는 만큼 완벽히 같은 데이터를 생성해 낸다고 볼 수는 없다. $D$는 상대적으로 가짜 이미지를 걸러내기 쉽다.
- (b) : $D$를 훈련시켜 최적화한다. $D$를 고정시키고(즉 $V(D,G)$ 를 최대화), 알고리즘 $D$의 내부 루프를 돌리면 결국 $D*(x) = {p_{data}(x) \over p_{data}(x) + p_g(x)}$ 로 수렴한다.
- (c) : $G$를 훈련시켜 최적화한다. $D$의 기울기는 $G(z)$가 진짜 데이터로 분류될 가능성이 더 높은 영역으로 분류되도록 유도한다.
- (d) : $a \sim c$ 를 여러번 반복하면 $G$ 의 확률분포 $p_g$는 $p_{data}$와 같아지는 지점, 즉 더이상 개선될 수 없는 지점에 도착하고, 이 지점에 도착한다면 $D$는 더이상 두 분포를 구별할 수 없게 되며, 이 때 $D(x) = {1 \over 2}$ 이다.
$D(x) = {1 \over 2}$ 가 된다는 의미는 생성기와 판별기가 수렴상태에 도달하였다는 것을 의미한다. 이때 판별기는 실제 데이터와 생성기가 만들어낸 데이터의 차이점을 발견하지 못하는 지점에 이르고, 이는 즉 생성기가 끝까지 학습되었다고 판단할 수 있다. 다만, '끝까지' 학습 되었다는게 반드시 '올바르게' 학습 되었다는 것을 의미하는 바는 아니다.
2. 문제점
이러한 GAN은 이론만 보면 눈물이 날정도로 아름답다. 개인적으로 CNN 다음으로 혁신적인 모델이라고 생각한다. 하지만 GAN을 사용해본 연구자들은 '학습이 어렵다' 라는 말을 자주 하곤 한다. 이는 아래와 같은 문제점들 때문이다.
(1) Oscillation
GAN은 $G$와 $D$가 마치 창과 방패처럼 서로에게 맞선다. 절대로 둘 중 하나가 완벽하게 이길 수 없는것이다. 이런 상황일수록 극단적인 전략을 가지고 올 수 밖에 없는데, 위 그래프처럼 global optimum 에 수렴하지 못하고 격렬하게 진동하는 것을 Oscillation 이라고 지칭하며 이는 GAN이 가진 여러 문제중 하나이다.
(2) Mode Collapse
이는 $G$가 $D$를 속이는 소수의 샘플을 발견해서, 주구장창 그것만 생성해 내는 경우를 의미한다. 즉, 생성기는 판별기를 속이기 위해 올바른 정도(正道) 를 따라 생성하는 것이 아닌, 편법을 통해 오로지 판별기를 속이기 위해서 작동한다. 이 경우 해당하는 편법이 가장 좋은 결과를 냈으니 생성기를 해당 방향으로 학습시키는 결과가 일어난다. 이러한 이벤트가 단발적으로 끝나면 상관없지만, 계속해서 해당하는 이미지에 집착하여 비슷한 종류의 이미지만 생성하게 된다는 문제점이 존재한다.
위에서 설명한 손실함수로 설명하자면, $D(x) = {1 \over 2}$일 때 '끝까지' 학습되었다고 이야기 하였는데, 만약 생성자가 한가지 이미지만 생성하고, 판별자가 그 이미지를 실제 데이터로 인식한다면 그때도 손실함수는 ${1 \over 2}$로 수렴할 것이다. 즉 손실함수가 최적손실값(예로 0.5)을 달성하는것이 GAN이 올바르게 동작한다는 것을 보장하지 않는다.
이렇게 두가지가 대표적으로 GAN의 문제점이다.
3. 마치며
이러한 GAN의 문제점을 손실함수 관점에서 개선한것이 바로 WGAN이다. 개인적으로 논문 분석 포스팅을 작성하려 했으나, 찾아보니 정말 잘 작성된 포스팅이 있어 해당 포스팅 링크를 추가한다.
해당 포스팅을 보면 왜 GAN에서 Noise 를 기반으로 이미지를 만들게 되는지, 이러한 방법의 한계점은 무엇이고, WGAN 에서는 이런 문제를 어떻게 개선하였는지 등등... 에 관해서 상세히, 그리고 친절하게 기재되어 있다.
마지막으로 이러한 GAN들의 변형들에 대한 Tree 이미지를 추가하며 포스팅을 마친다.
'Artificial Intelligence > Article' 카테고리의 다른 글
[리뷰] A comparative analysis between Conformer-Transducer, Whisper, and wav2vec2 for improving the child speech recognition (0) | 2024.01.11 |
---|---|
[리뷰] Robust Speech Recognition via Large-Scale Weak Supervision (0) | 2024.01.09 |
[리뷰] wav2vec 2.0 (0) | 2023.08.21 |
[리뷰] StarGANv2-VC (0) | 2023.07.29 |
[리뷰] Style-Based GAN (0) | 2023.07.09 |