Abstract
GAN에서는 두 개의 모델을 동시에 학습시킵니다. Discriminator($D$)와 Generator($G$)가 바로 그것입니다. 두 모델이 학습을 통해 궁극적으로 얻고자 하는 바는 아래와 같습니다.
- $D$는 임의의 sample(이미지)를 보고 그것이 data distribution인 $P_x$에서 sample 된 것인지 혹은 generative distribution인 $P_g$에서 sample 된 것인지 구분합니다. output으로는 $P_x$에서 sample 됐을 확률을 반환합니다.
- $G$는 학습을 통해 $P_x$와 최대한 유사한 $P_g$를 만들어냅니다. output으로는 가짜로 만든 이미지를 반환합니다.
* $P_x$에서 sample된 이미지 = Training data = 진짜 이미지
* $P_g$에서 sample된 이미지 = $G$가 만든 이미지 = 가짜 이미지
이 때 $P_x$를 단숨에 수식으로 나타낸다던가 모든 픽셀 조합에 대해 확률을 계산하여 나타내는 것은 불가능합니다(Intractable probabilistic computation). 따라서 GAN은 $D$와 $G$라는 multi layer perceptron(mlp)를 이용해 $P_x$를 학습하고자 하는 것입니다.
학습을 통해 $D$는 real과 fake를 최대한 잘 구분하고자 하고 $G$는 $D$가 최대한 실수하도록 노력합니다. 이렇게 서로 적대적이기 때문에 adversarial nets라는 명칭이 붙었고 이러한 학습 과정 때문에 minimax game이라고도 불립니다. (minimax game은 잠시 후에 다시 자세히 다루겠습니다.)
* $P_g$에서 sample된 이미지 = $G$가 만든 이미지 = 가짜 이미지
이 때 $P_x$를 단숨에 수식으로 나타낸다던가 모든 픽셀 조합에 대해 확률을 계산하여 나타내는 것은 불가능합니다(Intractable probabilistic computation). 따라서 GAN은 $D$와 $G$라는 multi layer perceptron(mlp)를 이용해 $P_x$를 학습하고자 하는 것입니다.
학습을 통해 $D$는 real과 fake를 최대한 잘 구분하고자 하고 $G$는 $D$가 최대한 실수하도록 노력합니다. 이렇게 서로 적대적이기 때문에 adversarial nets라는 명칭이 붙었고 이러한 학습 과정 때문에 minimax game이라고도 불립니다. (minimax game은 잠시 후에 다시 자세히 다루겠습니다.)
학습이 완료 되어 $D$와 $G$가 Nash equilibrium에 도달해 더 이상 변하지 않는 unique solution을 찾으면 결국 $P_g$는 $P_x$와 정확히 일치하게 되고 $D$는 모든 $x$에 대해 $D(x) = \frac{1}{2}$가 나오게 됩니다. 직관적으로 말하자면, $P_g$가 $P_x$과 완전히 같아져 $D$가 임의의 $x$를 보고 이것이 $P_g$에서 sample된 것인지 $P_x$에서 sample된 것인지 구분하지 못해 반반이라고 판단해 $\frac{1}{2}$의 확률을 반환하는 상태가 되는 것입니다.
Adversarial nets
1. 어떻게 $D$ and $G$를 학습할까?
GAN의 value function인 $V(D, G)$를 살펴보도록 하겠습니다. 이 $V(D, G)$를 통해 $G$와 $D$가 학습을 하게 됩니다. 아래는 GAN의 training을 나타내는 수식입니다.
$\min_{G}\max_{D} V(D, G) = E_{x \sim p_{data}(x)}[\log D(x)] + E_{z \sim p_z(z)}[\log(1-D(G(z)))] \tag{1}$
* GAN의 value function. $p_{data}(x)$는 위의 $p_x(x)$와 동일하다
$E_{x \sim p_{data}(x)}[\log D(x)]$는 모든 training data $x$에 대한 $\log D(x)$의 평균, $E_{z \sim p_z(z)}[\log(1-D(G(z)))]$는 $N(0, 1)$에서 sampling된 모든 $z$에 대한 $\log(1-D(G(z)))$의 평균을 의미합니다. 위의 수식에서 $G$는 $V(D, G)$를 minimize하고 $D$는 $V(D, G)$를 maximize하므로 $D$와 $G$가 어떻게 학습 되는지를 알기 위해선 편의상 $E_{x \sim p_{data}(x)}$ 나 $E_{z \sim p_z(z)}$ 부분은 잠시 제외 하고 $\log$ 부분만 보셔도 무방합니다. 그리고 같은 식을 $G$는 minimize하고 $D$는 maximize하기 때문에 minimax game이라고 불립니다.
- $D$는 $V(D, G)$를 maximize 시키기는 방향으로 학습합니다. $D$는 0과 1사이의 값을 반환하므로 $V(D, G)$를 maximize 하려면 $D(x) = 1$, $D(G(z)) = 0$이 되어야 최대값이 됩니다. 이는 $D$로 하여금 진짜 이미지는 1이라는 정답, 가짜 이미지는 0이라는 정답을 주고 $D$를 학습시키는 것과 마찬가지입니다. 이렇게 하여 $D$는 진짜 이미지라고 판단될 시 1에 가까운 값, 가짜 이미지라고 판단될 시 0에 가까운 값을 반환하게 되는 것입니다.
- $G$는 $V(D, G)$를 minimize 시키는 방향으로 학습합니다. 이 때 $V(D, G)$를 보면 $G$가 영향을 미치는 term은 오직 $E_{z \sim p_z(z)}[\log(1-D(G(z)))]$ 이 부분 뿐임을 알 수 있습니다. $E_{z \sim p_z(z)}[\log(1-D(G(z)))]$를 minimize 시키기 위해선 $D(G(z)) = 1$이 되어야 최소값이 됩니다. 이는 $D$가 가짜 이미지를 보고 진짜 이미지라고 착각할 수 있도록, 즉 가짜 이미지를 보고 1을 반환할 수 있도록 $G$를 학습시키는 것과 마찬가지 입니다.
직관적으로도 알 수 있겠지만, GAN은 이론적으로 $D$가 optimal하다고 가정합니다. 즉 $D$가 임의의 이미지를 보고 이미지가 $P_{data}(x)$에서 sampling 됐을 확률을 반환하는데 이 값이 정말 정확한 확률임을 가정합니다. 하지만 현재의 $P_g$에 대해서 $D$를 optimal할 때까지 학습시키는 것은 computationally 불가능합니다(논문의 Algorithm 1. 에서 inner loop에서 $k$ steps가 아니라 optimal 해질 때까지 반복하는 것을 의미합니다). 따라서 $D$와 $G$를 번갈아가면서 학습하는데 $D$를 먼저 $k$번 학습하고 $G$를 1번 학습합니다(실제 구현시에는 $k=1$을 사용합니다). 이 때 $G$가 충분히 천천히 학습 된다면 $G$가 봤을 때 $D$는 $k$번의 학습으로 optimal solution에 근접한 상태가 되는 결과를 낳습니다. 따라서 이렇게 번갈아 학습하게 되면 optimal한 $D$와 $G$를 얻을 수 있습니다.
2. 실용성의 문제
하지만 실제로 Training을 시키면 조금 문제가 생깁니다. 바로 위의 식 (1)에서 $\log(1-D(G(z)))$ 부분 때문입니다. 아래 그림의 파란색 그래프가 바로 식(1)에 해당하는 $J(G) = \log(1-D(G(z)))$ 를 $y$축, $D(G(z))$를 $x$축으로 그린 그림입니다.
* $\log(1-D(G(z)))$ 부분을 여러가지로 변형한 것들의 그래프입니다.
문제는 바로 $D(G(z))$가 0에 가까울 때 파란 그래프의 기울기가 거의 0이라는 점입니다. $D(G(z))$가 0에 가까울 때는 학습 초기에 $G$가 가짜 이미지를 제대로 만들지 못해 $D$가 가짜 이미지를 보고 쉽게 0에 가까운 값을 반환할 때입니다. 그런데 이 때 그래프의 기울기가 거의 0이라는 것은 ${\partial J(G)\over\partial D(G(z))} \approx 0$임을 의미합니다. 기울기가 거의 0이 되는 것을 saturate 한다고 합니다. 이는 곧 ${\partial J(G)\over\partial \theta_G} = {\partial J(G)\over\partial D(G(z))} {\partial D(G(z))\over\partial (G(z))} {\partial G(z)\over\partial \theta_G} \approx 0$ (이 때, $\theta_G \equiv G$의 parameter)이므로 $G$가 학습 초기에 학습을 거의 하지 못한다는 의미가 됩니다.
따라서 $G$를 학습할 때는 기존의 식 (1)을 살짝 변형하여 사용하게 됩니다.
$\min_G V(D, G) = E_z \sim p_z(z)[\log(1-D(G(z)))] \rightarrow \max_G V(D, G) = E_z \sim p_z(z)[\log(D(G(z))]$
이렇게 하면 saturate 문제를 해결할 수 있습니다. 화살표 오른쪽의 식은 위 그림에서 초록색 그래프에 해당합니다. $D(G(z))$가 0 근처일 때 더이상 그래프의 기울기가 0이 아님을 볼 수 있습니다. 따라서 $G$가 초기에 학습을 잘 진행하고 어느정도 진행된 후에 학습을 조금씩 진행하게 됩니다.
3. 학습이 점차 진행되면서 일어나는 distribution의 변화
* 논문의 Figure 1입니다. 학습이 진행되면서 distribution이 어떻게 변하게 되는지 보여줍니다.
우선 그림의 각 요소들이 무엇을 의미하는지 설명드리도록 하겠습니다.
- 직선 $x$는 data space입니다. 모든 pixel 조합들이 직선 $x$위에 있다고 보시면 됩니다.
- 직선 $z$는 prior distribution에서 sample되는 $z$가 존재하는 space입니다. 직선 $x$와 직선 $z$가 화살표로 연결되는 것은 prior distribution에서 sample된 몇 개의 $z$가 $x$에 mapping 되는 것을 의미합니다.
- 초록색 그래프가 가짜 이미지가 sample 되는 generative distribution인 $P_g$입니다. $z$가 몰려서 mapping 된 $x$의 부근에서 $P_g$가 높음을 확인할 수 있습니다.
- 검은 점선은 data generating distribution, 즉 training data의 distribution인 $P_{data}$입니다. 검은색 점선과 최대한 유사한 초록색 선을 만드는 것이 GAN training의 목표입니다.
- 파란색 점선은 discriminative distribution, 즉 $D$가 $x$를 봤을 때 반환하는 확률값입니다. 파란색 점선의 각 값은 수직으로 아래에 있는 $x$를 보고 반환한 확률값이 됩니다.
왼쪽에서 오른쪽으로 갈 수록 학습이 진행되는 것입니다. 가장 왼쪽부터 오른쪽으로 차례대로 무슨 일이 일어나고 있는지 살펴보겠습니다.
- 첫 번째는 $D$와 $G$가 거의 수렴했지만 아직 수렴하지 못한 상태입니다. $D$는 $P_{data}$가 높은 지점에서 높은 값을 반환하고 $P_g$가 높은 지점에서 낮은 값을 반환하려고 하지만 완벽하지는 않습니다. $P_g$역시 아직 $P_{data}$와 비슷하긴 하지만 아직 완벽히 똑같지는 않습니다.
- 두 번째는 첫 번째에 비해 $D$가 한 번 학습된 모습입니다. $D$는 optimal 해졌을 때 $D^*(x) = \frac{P_{data}(x)}{P_{data}(x) + P_g(x)}$를 반환하게 됩니다. 다음 포스팅에서 자세히 다루겠지만 직관적으로 봤을 때 이 식은 $x$가 $P_{data}(x)$에서 sample 된 확률임을 알 수 있습니다. 따라서 그래프의 가장 왼쪽 부근의 $P_{data}(x)$와 $P_g(x)$의 값이 변하지 않는 구간에서 $D$의 distribution도 변하지 않는 것을 보면서 $D$가 조금 더 optimal 해짐을 볼 수 있습니다.
- 세 번째는 두 번째에 비해 $G$가 한 번 학습된 모습입니다. $z$에서 $x$로의 mapping 이 집중되는 공간이 $P_{data}$의 값이 높은 구간인 왼쪽으로 살짝 이동하게 됩니다. 이에 따라 $P_g$ 역시 $P_{data}$와 조금 더 유사해졌습니다.
- 네 번째는 몇 번의 training이 지나 $D$와 $G$가 optimal이 된 모습입니다. $P_g$는 $P_{data}$에 대한 학습을 끝내 완전히 일치하고 $D$는 $P_{data}$와 $P_g$를 구분하지 못해 모든 $x$에 대해 $D(x) = \frac{1}{2}$를 반환하고 있습니다.
이번 포스팅의 내용은 여기까지입니다. 이번 내용이 아리송하신 분들은 GAN을 구현한 코드를 같이 보면서 읽으시면 이해하는데 아아아아주 큰 도움이 될 것입니다. 다음 포스팅에서는 이제 위의 내용들을 뒷받침 해주는 이론적인 증명들에 대해 알아보겠습니다. 논문의 4. Theoretical Results에 해당합니다.
0 coment�rios:
댓글 쓰기