GAN convergence 관련
"Generative Adversarial Nets" (2014)
G = generator
D = discriminator
\( p_{data}\): real data distribution
\( p_{z}\): latent distribution (Gaussian)
original GAN loss:
\[ \min_{G} \max_{D} [E_{x\sim p_{data}(x)}[\log D(x)] + E_{z\sim p_z(z)} [\log (1-D(G(z)))] ] \]
alternative GAN loss:
\[ \max_{D} [ E_{x\sim p_{data}(x)} [ \log D(x)] + E_{z\sim p_z(z)} [\log (1-D(G(z)))] ] \]
\[ \max_{G} E_{z \sim p_z(z)} [ \log (D(G(z)))] \]
학습 초기에 G가 생성한 데이터가 가짜인지 D가 판별하기 쉽기 때문에 \( [\log (1-D(G(z)))] \)가 saturation 될 수 있기 때문에 alternative loss를 제안하였다.
Least Squares Generative Adversarial Networks (2016)
\[ \min_{D} \frac{1}{2} [ E_{x\sim p_{data} (x)} [(D(x)-b)^2] + E_{z\sim p_z(z)} [D(G(z)) -a ] ] \]
\[ \min_G \frac{1}{2} E_{z\sim p(z)} [(D(G(z)) - c)^2] \]
a=-1, b=1, c=0인 경우와 b=c=1, a=0인 경우를 고려하는데 결국 후자를 사용한다. b=c=1, a=0인 경우 실제 데이터에 대해서 D=1, 가짜 데이터에 대해서 D=0을 학습하게 하고, G는 D의 output이 1이 나오도록 (속이도록) 학습을 한다. log loss function의 saturation 문제를 해결하기 위해서 제시된 loss 중 하나.
Towards Principled Methods for Training Generative Adversarial Networks (2017), Wasserstein GAN (2017), Improved training of Wasserstein GANs (2017)
첫 번째 논문에서는 (특정 가정 하에) original GAN loss는 vanishing gradient 문제가 있고, alternative GAN loss는 unstable gradient update 문제가 있다고 보인다.
두 번째 논문에서는 이러한 문제들을 해결하기 위해서 Wasserstein distance (earth mover's distance)를 활용한다. Wasserstein distance를 사용하는 Intuition은 진짜 데이터와 가짜 데이터를 완벽하게 판별할 수 있는 discriminator이 있을 때 이 두 데이터 분포 사이에 Wasserstein distance는 (Wasserstein-1 distance를 사용하기 때문에 결국 데이터 사이의 L1 distance 기반) gradient가 0이 되지 않는다는 것이다. 반면 Origina GAN loss는 saturation 현상을 보인다. 다음과 같이 Wasserstien GAN을 학습한다 (5:에 gradient 안에 있는 것이 Wasserstien distance; Kantorovich-Rubinstein duality를 사용했기 때문에[정리] Earth mover's distance 와 꼴이 다르다; 7:은 Kantorovich-Rubenstein duality를 사용하기 위해서 Lipschitz continuity를 만족해야 하는데 이것을 간단하게 만족시키기 위한 장치라고 생각하면 된다 (weight clipping)).
세 번째 논문에서는 weight clipping이 너무 대충 설계한 것이다 보니 이것을 더 잘하는 방법으로 gradient penalty를 제안한다 (discriminator의 gradient의 크기가 1 근처로 유지되도록 하는 loss). 다음 알고리즘에 식 7이 핵심이다. 참고로 이 알고리즘에서 discriminator의 gradient=1을 유지하는 penalty를 real data x와 fake data tilde(x) 사이에 있는 데이터 (:6 참고)에 준다.
Spectral Normalization for Generative Adversarial Networks (2018)
위에서도 잠시 언급했듯이 Lipschitz continuity가 GAN의 convergence에 중요한 역할을 한다. 그래서 이 논문에서는 새로운 Loss function을 제안하기보다는 spectral normalization을 통해서 Lipschitz continuity가 보존될 수 있고, spectral normalization을 수치적으로 구현하는 방법을 제안한다 (알고리즘 참고; 진짜로 weight matrix W의 spectral norm=1이 되지는 않고, approximation이다). Gradient penalty와 비교하자면, gradient penalty는 data distribution에 강하게 의존하지만 (x, tilde(x) 사이에 있는 데이터에 대해서 penalty를 준다), spectral normalization은 operator space에서 Lipshitz continuity를 유지하는 방식을 택하기 때문에 data distribution에 덜 의존하기 때문에 (저자들에 의하면) 학습이 더 stable 하다고 한다. 이 논문에서 loss function은 original GAN loss를 사용.
Which Training Methods for GANs do actually converge? (2018)
Discriminator에 regularization을 해주면 original GAN loss도 (특정 가정하에) 수렴한다.
R1 regularization:
\[ R_1(\psi) = \frac{\gamma}{2} E_{p_{real}} [|| D_{\psi} (x) ||^2] \]
R2 regularization은 fake data에 대해서 같게 regularization을 해주는데, 보통 R1 regularization을 쓴다.
Style 관련
Image-to-Image Translation with Conditional Adversarial Networks (2016)
PatchGAN loss: original GAN loss와 거의 동일하다. 차이점은 이미지 패치에 대해서 loss를 준다는 점. 이렇게 하기 위해서 discriminator의 마지막 layer의 사이즈가 NxN 이 되고, 각 feature에 대해서 original GAN loss를 준다. discriminator의 feature은 결국 convolution layer을 통과해서 나오기 때문에, 각 feature은 이미지 패치만 보게 되고 (충분히 깊이가 깊으면 전체 이미지를 보게 되겠지만), 이미지 패치가 진짜/가짜인지 판별한다고 해서 PatchGAN loss라고 부른다.
참고로 논문은 semantic label map을 image로 변환시켜 주는 내용이다 (pix2pix). semantic label map과 변환되어야 하는 이미지가 local 하게 매칭이 되어야 하기 때문에 PatchGAN loss를 제안하였다 (일반 GAN loss는 이미지 전체에 대한 loss인 것과 비교).
Perceptual Losses for Real-Time Style Transfer and Super-Resolution (2016)
style transfer 논문. 이 논문에서 perceptual loss 역할을 하는 2가지 loss를 제안한다. 우선 \( \phi\)를 ImageNet에 학습된 VGG16 network라고 하자. Input image x의 j번째 layer의 feature은 \( \phi_j(x)\)라고 하자. H = height, W = width, C = number of channel를 의미한다 (feature의).
Feature reconstruction loss: 원본 이미지 y와 생성된 이미지 \( \hat{y}\)와 비슷하게 생기도록 제약한다.
\[ \ell^{phi,j}_{feat}(\hat{y},y) = \frac{1}{C_j,H_j,W_j} || \phi_j(\hat{y}) - \phi_j(y) ||^2_2\]
Style reconstruction loss: 이미지 y와 생성된 이미지 \( \hat{y}\)의 이미지 스타일 (픽셀값들의 통계라고 생각할 수 있다)가 비슷하도록 한다. gram matrix G를 기반으로 정의된다. 참고로 F는 frobenius norm을 의미한다.
\[ G_j^\phi(x)_{c,c'} = \frac{1}{C_j H_j W_j} \sum_{h=1}^{H_j} \sum_{w=1}^{W_j} \phi_j(x)_{h,w,c} \phi_j (x)_{h,w,c'} \]
\[ \ell^{\phi,j} _{stype} ( \hat{y},y) = ||G^{\phi}_j (\hat{y}) - G^{\phi}_j (y) ||_F^2 \]
논문에 따라서 feature reconstruction loss를 perceptual loss라고 그냥 부르기도 하고, l2 loss 대신 l1 loss를 사용하기도 한다. 사용하는 feature layer j 도 논문마다 다르며, 다양한 image resolution에 대해서 더하기도 한다. 하지만 ImageNet에 학습된 VGG16의 feature reconstruction을 하는 의미는 동일하다.
High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs (2017):
(Discriminator) Feature matching loss: Conditinal image generation 할 때 사용하는 loss 중 하나. 이 논문에서는 (pix2pixHD) Generator 학습을 stabilize 하기 위해서 도입되었다고 한다. loss function은 예를 들어서 semantic label map을 받고 대응되는 이미지를 생성하는 문제에서 사용 가능하다. s conditioning image (e.g. semantic label map), x = 실제 이미지, G(s)는 s에 대응되는 생성된 이미지.
\[ \mathcal{L}_{FM} (G,D_k) = E_{(s,x)} \sum_{i=1}^T \frac{1}{N_i} || D^{(i)}_k(s,x) - D^{(i)}_k (s,G(s)) ||_1\]
여기서 T는 layer 수, \( N_i\)는 i번째 layer에 있는 elements 수 (=width x height x channel).
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks (2017)
2개의 이미지 data distribution 사이 conversion하는 논문이다. pix2pix/pix2pixHD같이 paired image translation이 아닌 것이 특징. F: distribution 1-> distribution 2, G: distribution 2 -> distribution 1으로 변환하는 image generator이라고 하자.
Cycle consistency loss:
\[ \mathcal{L}_{cyc}(G,F) = E_{x\sim p_{data}(x)} || F(G(x)) - x||_1 + E_{y\sim p_{data}(y)} || F(G(y)) - y||_1\]
1(2)에서 2(1)로 변환하고 다시 1로 변환하면 원래 이미지가 복원되는 consistency loss라고 해석하면 된다.
계속 업데이트 예정.
'개념 정리' 카테고리의 다른 글
흔한 이미지 관련 평가지수 (PSNR, SSIM, FID, LPIPS 등) (2) | 2023.11.02 |
---|---|
openCV 사용해서 Camera calibration 하기 (+팁) (0) | 2023.05.13 |
[정리] Earth mover's distance (2) | 2023.02.03 |