일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Ian GoodFellow
- Unsupervised Representation Learning
- clova
- Latent space
- Representation learning
- PGGAN
- Computer Vision
- PatchGAN
- InfoGAN
- GAN
- xai
- Unsupervised learning
- StarGAN
- Styletransfer
- ICLR
- self-supervised learning
- DCGAN
- Generative model
- PatchDiscriminator
- Mutual Information
- LSGAN
- Markov Random field
- pix2pix
- conditional GAN
- Gradien Vanishing
- Image-to-image translation
- Today
- Total
AI with U-Seminar, Daneil Jeong
DCGAN (2015) 본문
GAN 2번째 논문입니다.
이전글에서는 GAN을 소개하였습니다.
https://aijyh0725.tistory.com/12
DCGAN은 제목에서 볼 수 있는 것처럼, Computer vision에서 훌륭한 역할을 해내던 deep convolutional network를 이용하여 GAN을 설계합니다. 이러한 DCGAN을 이용하여 unsupervised representation learning을 진행할 수 있다 주장합니다. 좀 더 자세히 설명하자면, GAN의 두 모델 G와 D가 feature representation의 hierarchy(part to whole)을 잘 학습할 수 있으며, 이같은 image representation(논문에서는 일반적(general)이라고 말합니다) 이용하여 다양한 task에 사용하고자 합니다.
DCGAN의 키워드는 다음과 같이 요약할 수 있을 거 같네요.
- hierarchical representation
- unsupervised adversarial pairs of representation
- general learned features
과연 계층적이고, 일반화할 수 있는 feature representation을 계층 구조로 뽑아낼 수 있을까요? 논문 리뷰와 함께 살펴보도록 하겠습니다.
https://arxiv.org/abs/1511.06434v2
1. 논문 리뷰
데이터셋을 정제하는 일은 많은 자원이 투입되는 일입니다. 또한, 정확한 labeling작업과 적절한 class distribution을 갖는 것은 supervised learning의 어려운 점들 중 하나입니다. 만약 unsupervised하게 image dataset에서 representation을 학습하고, 이를 classification과 같은 supervised task에 이용할 수 있다면 어떨까요. 사람의 기준에서 직관적으로 이해한다면 꽤나 효과적인 방법론이라 생각됩니다. 사람들은 특정 데이터로부터 얻은 일반 지식(general knowledge, general represenation)을 다양한 task에 적절히 사용하는 것이 가능합니다. 하지만, 기계가 사람처럼 general representation을 학습하는 것이 가능할까요?
GAN의 학습 방법과 덜 휴리스틱한(충분히 증명된) cost function은 representation 학습을 하는 데 있어서 굉장히 매력적인 요소들입니다. GAN의 G와 D에 있는 다층 구조에서 intermediate representation을 이용하여 supervised task를 진행해보는 것은 굉장히 흥미로운 도전입니다.
그러나 GAN에는 아래와 같은 단점들이 있습니다.
- 불안정한 학습
- mode collapse (생성 이미지가 다양하지 않음)
- low quality output
- etc...
deep convolutional network는 구조적으로(architecturally) computer vision task에서 안정적인 것으로 알려져 있습니다. GAN의 각 G와 D를 convolutional block으로 바꾼다면, 혹시 불안정한 학습을 피할 수 있지 않을까요?
이에 더해, GAN의 각 layer들(filter)을 visualize하며 그 기능과 직관적인 해석을 시도하는 것도 가능할 것입니다. 심지어 논문에서는 generator에서 vector arithmetic을 통해 semantic 정보들을 조종할 수 있다고 합니다. 즉 생성되는 샘플들을 편집하는 것이 가능하고, 또 그 편집을 semantic하게 혹은 locally하게 하는 것도 가능할 것입니다.
심지어는 latent끼리 interpolation하거나 간단한 연산을 하는 것도 가능합니다.
이제 GAN에 CNN 구조를 더할 차례입니다. Maxpooling과 같은 기법은 deterministic하기 때문에 GAN에 적합하지 않습니다. 우리가 원하는 것은 spatial 정보를 모두 sampling(down, up둘다)하는 것입니다. Generator는 latent z로부터 이미지를 만들어야하기 때문에 spatial upsampling을 진행하고, Discriminator는 반대로 downsampling을 진행합니다.
Maxpooling이 없는 only spatial smapling
다음은 가장 FC layer의 제거입니다. Global average pooling등이 대안이 될 수 있지만, convergence speed에 문제가 생길 수 있기 때문에 DCGAN은 convolutional stack을 그대로 input과 output을 사용합니다.
훈련 안전성을 위해서 Batch Normalization과 ReLU activation & LeakyReLU activation을 이용합니다.
Batch Normalization은 모든 input의 unit을 0의 mean과 unit variance를 갖게 만들어준다. BN은 weight의 initialization 문제를 해결해주고, gradient flow를 원활하게 해줍니다. 특히나 initialization 문제는 mode collapse와 직결되는 문제인데, 이를 해결해줌으로 generator가 다양한 sample을 만들 수 있게 도와줍니다. 하지만 모든 layer에 대한 batch norm의 적용은 sample oscillation과 model instability문제를 겪게 되므로, image가 기준이 되는 generator의 output layer와 discriminator의 input layer에는 적용하지 않습니다.
ReLU는 generator의 모든 layer에 사용되고, 특별히 generator의 output layer에는 tanh를 적용해줍니다. 이러한 bounded activation을 이용하여 training distribution의 학습을 돕습니다.
모든 구조를 정리하여 논문에서는 아래와 같이 서술합니다.
2. 시사점
DCGAN의 가장 재밌는 부분은 바로 latent space의 조작과 discriminator feature을 visualize한 것, 그리고 generator의 각 feature들이 서로 다른 정보를 결정한다는 가능성을 발견한 것입니다.
Latent space의 landscape을 단순한 GAN 모델에서는 확인하기 어려웠는데, 이러한 manifold에서 직접 latent를 walking해보며 어떠한 변화가 있는 지 실험적으로 확인하였습니다. 만약 유의미한 변화가 latent walking에서 일어난다면, 모델이 좋은 representation, relevant subspace representation을 잘 학습한 것이라 결론지을 수 있습니다.
실제로 논문에서는 실험적으로 이러한 latent space walking을 확인하였습니다. (다만 굉장히 직관적인 결과입니다)
앞서 말씀드린 것처럼, generator의 각 layer들이 담는 의미에 대한 분석도 존재합니다.
특정 generator layer를 사용하지 않으면 어떻게 될까요? 혹은 특정 layer의 representation은 image의 특정 semantic 정보를 담을 수 있을까요? (disentangled representation) 이러한 질문에 대해 논문은 실험적인 결과와 직관적인 해석을 제공합니다.
해석은 논문을 보는 우리들에게 맡깁니다.
3. 결론 및 한계점
convolutinal network가 GAN에 드디어 등장합니다.
최고의 성분이라 여겨지는 무언가(e.g. max pooling layer)를 없애고 새로운 방식의 구조를 만드는 것은 굉장히 어려운 시도라 생각합니다. 현 시대의 논문들, 연구들에도 분명 연구자들이 당연하게 생각하는 구조들이(그럼에도 생각보다 당연하지 않을 수 있는) 많을 것입니다.
접근 방식과 contribution은 굉장히 뛰어난 논문이고, 당시로는 굉장히 다양한 실험을 통해 자신들의 가정을 증명하기 위해 노력합니다. 다만 방식이 굉장히 투박한 것은(직관적인 실험 결과 해석에 의존) 아마도 여전한 evaluation metric의 부재 때문이겠지요.
논문에서도 언급하지만 여전히 instable한 학습 방법과 모델은 연구 과제로 남았습니다. 이쯤 되면 새로운 loss function이 등장할 때가 된 것 같다는 생각이 듭니다. 모델은 CNN이 나왔으니 다양한 변형이 나오는 것은 시간 문제일 것입니다. 어떠한 변형이 GAN에 적합할까요? 어떤 새로운 loss function이 학습 효율을 높일 수 있을까요? G의 latent space를 완벽히 해석해서 editing하는 것이 가능할까요? GAN의 다양한 시도들이 DCGAN이후로 연이어 쏟아집니다.
'GAN' 카테고리의 다른 글
Pix2Pix(PatchGAN, 2016) (0) | 2022.04.23 |
---|---|
LSGAN (2016) (0) | 2022.04.22 |
Wasserstein GAN (2017), WGAN-GP (0) | 2022.04.21 |
InfoGAN (2016) (0) | 2022.04.18 |
Generative Adversarial Nets (2014) (0) | 2022.04.14 |