티스토리 뷰
Unsupervised Representation Learning With Deep Convolutional Generative Adversarial Networks 논문 리뷰
provbs 2023. 1. 31. 16:30쭉 읽으면서 한국어로 정리하는 식으로 적어 보았다.
나중에 다시한번 공부 할때 조금이라도 더 편하게 보기 위해서..?!
Abstract
Unsupervised learning with CNNs이 Supervised에 비해서 비교적 적은 관심을 받고 있기에 해당 논문은 CNN의 두 학습방식에 대한 성공 격차를 줄였으면 하는 바램.
어떻게?
DCGANs을 제안함으로써.
(deep convolutional generative adversarial networks)
1) architectural constraints
2) strong candidate for unsupervised learining
- 논문을 통해서 Generator&Discriminator 둘 다 Object part -> Scene 순으로 representation을 배우는 것을 보여줄것임.
- 학습된 feature들로 새로운 일을 시도해봄 (general image representation으로써의 적용가능성도 보여주고싶음)
1. Introduction
재활용이 가능한 feature representation을 unlabeld 데이터에서 학습하는 것 -> 활발히 연구중
GANs 학습을 이용하여 good image representation들을 만들고, 그리고 나중에 generator랑 discriminator 네트워크를 재활용하여 supervised 작업의 feature extractor로 사용.
GANs
1) attractive alternative to maximum likelihood techniques
2) learning process & lack of heuristic ("스스로 발견/학습하게 하는") cost function are attractive to representation learning
(heuristic cost function such as pixel-wise independent mean-square error : mean squared error calculated between each pixel value from the real image and each pixel value from the generated image. 만들어진 이미지와 오리지널 이미지의 차이를 계산한다.)
3) known to be unstable to train, resulting nonsensical outputs in generators
이 논문에서는...
1) Convolutional GANs의 구조적 관점에서의 "a set of constraints"을 제안 -> to make the learn stable
2) 학습완료된 discriminator를 사용해서 다른 unsupervised 알고리즘에 비해서, 이미지 classification 능력이 뛰어남을 보여주려함
3) GANs를 통해 학습된 필터를 보여주고, 오브젝트를 그릴 수 있음을 증명해보이려함
4) generator에서 흥미로운 "vector arithmetic properties"가 있는데, 이걸 통해서 easy manipulation of many semantic qualities of generated samples 할 수 있다는데.. 어떤건지 알려주려함
- semantic quality - accuracy and completeness of your process models
- syntactc quality - performance of the process models to modeling standards
- pragmatic quality - usefulness of the process model
2. Related Work
Representation learning from unlabeled data : approaches
1) clustering on the data 예) K-means를 사용
- improved classification scores
- learn powerful image representations
- classical method
2) train auto-encoders (convolutionary, stacked)
- 입력이 들어오면 최대한 압축 시킨 뒤, 다시 원래대로 복원 시키는 신경망
- 압축에서 추출해 낸 데이터 -> compressed data, latent vector, feature 등으로 부름
- unsupervised learing으로 숨겨져 있는 패턴을 발견하는 것이 목표이다
3) Deep belief networks (심층신뢰망)
- 입력층과 은닉층으로 구성된 RBM을 여러 층으로 쌓아서 만든 신경망
- RBM : Restricted Boltzmann Machine = Generative Model
RBM은 두개의 층으로 구성 (입력층, 은닉층)
같은 층끼리는 연결이 없음
입력층이 확률에 따라 은닉층에게 데이터를 전달할지 안할지를 결정
입력노드의 수 = 특징값의 수 예) MINIST의 경우 입력노드의 수 = 이미지 픽셀 수 784개
RBM이 unsupervised learning에 사용되는 이유 : 재구성 reconstruction
인풋레이어 -> 히든레이어 -> output 일때, activation f에 대해서
a = f (x1 * w1 + x2 * w2 + ..... + b) 인데,
이를 계속 연결해나가지 않고, (심층신경망과의 차이)
은닉층의 activation을 지난 output을 입력 노드 방향으로 진행시킨다 (동일 w값과 다른 b값으로) ( r = b+)
x -> a -> r -> a -> r -> a 이런식으로 계속 백프로파게이션하면서 학습을 진행한다.
- 비지도 학습, 데이터 부족 할때 유용하게 쓰임, pre-trained된 RBM을 여러겹 쌓아서 만든다
Generating Natural Images
1) Generative image models
- parametric : has fixed number of parameters
variational sampling approach - suffer being blurry
iterative forward diffusion process
Generative Adversarial Networks - suffering from being noisy and incomprehensible
laplacian pyramid extension - suffer wobbly looking, noise from chianing multiple models
recurrent/deconvolution network approach - no leverage on generators for supervised tasks
- non-parametric : has number of parameters growing with the amount of training data
(texture synthesis, super-resolution , in-painting 같은 곳에 쓰임)
Visualizing the internals of CNNs
Deconvolution과 maximal activation을 필터링 함으로써 네트워크의 각 convolution 필터들의 역할을 알아낼수 있다는 논문 - context of CNNs (Zeiler)
input에 Gradient descent을 사용함으로써 어떤 image가 어떤 필터들을 activate 시키는지에 대해서 알아낼수 있다. (Mordvintsev)
3. Approach and Model Architecture
CNN을 이용해서 GANs의 image를 upscale하는 것이 잘 되지 않았었음
GANs using CNN architectures commonly used in the supervised literature로는 힘듬..
고로, 새로운 아키텍쳐를 제안한다.
- stable training across a range of datasets
- training higher resolution + deeper generative models
by adopting and modifying 3 recently changes in CNN architectures
1) all convolutional net : replace deterministic sptial pooling functions (max-pooling같은) with strided convolutions.
strided convolutions : stride를 주고 띄엄띄엄 convolution해주는 것
- 네트워크가 본인만의 자연스러운 spatial downsampling을 배우게 해준다.
downsampling/upsampling : convolution이나 pooling으로 샘플의 크기를 줄이거나 키우는 것
- 해당 논문에서 generator에 적용하여서, own spatial upsampling, discriminator을 학습하는 것을 보여줄 예정이다.
2) eliminating fully connected layers on top of convolutional features
- global average pooling이 그 예인데, art image classification models에 쓰였었다.
-> feature를 1차원 벡터로 만들기 위함 ( 한 채널의 feature들을 모두 평균을 내서 하나로 만들어버림 ㄷㄷ) : FC layer를 없애기 위한 방법으로 도입, over fitting측면 유리, 입력 사이즈에 관계없음
- global average pooling으로 model stability가 올랐지만 model의 convergence speed가 나빠짐
- 그래서 타협점으로 나온 것이, highest convolutional feature들을 input과 output에 연결시켜줌 (generator/discrminator 둘다) -> stability/speed 모두 괜찮게 나옴.
- first layer of GAN -> input은 fully connected 일지라도 (just a maxtrix multiplication anyways) 4-d tensor로 reshape해줘서 convolution stack의 시작으로 바꾸어준다.
- discriminator -> last convolution layer를 flattened해서 sigmoid ouput에 넣어준다.
fully connected layer : 말그대로 노드와 노드가 전부 연결된 레이어, 예로 flatten 한 후에 softmax로 분류하는 부분을 들 수 있다. -> dense layer
3) Batch Normalization의 사용 : normalizing the input to each unit to have zero means and unit variance.
- poor initialization에 의한 문제해결
- helps gradient flow in deeper model
-> GAN에서 자주 보이는 failure mode인데, deep generator의 initialization 및 한 시점에서 모든 sample을 collapsing해버리는 문제 해결
- batchnorm을 모든 레이어에 직접적으로 적용하는 것은 오히려 역효과를 불러일으켰다.
-> 해결하기 위해서 batchnorm을 generator output과 discriminator input layer에는 적용하지 않았다.
- 레이어의 input 데이터의 분포가 치우쳐져 있을 때 평균과 분산을 조정해준다. (노말라이제이션) -> backprogation시 각 레이어에 쉽게 전달이 가능해져 학습이 stable해진다.
4) ReLU activation의 사용 : Tanh를 사용하는 output layer를 제외한 generator에 사용됨
- bounded activation : 더 빠르게 saturate + cover color space 를 학습함
5) discriminator에는 leaky rectified activation (leakyReLU)이 잘됨을 발견 (특히 high-resolution에서 그러함)
(maxout activation을 사용한 원래의 GAN 논문과의 큰 차이)
4. Details of Adversarial Training
DCGAN으로 3개의 데이터셋들을 학습시킴
- 어떤 식으로 학습시켰는가에 대한 디테일들이 설명됨 (slope used for LeakyReLU 등)
1) LSUN
- sample 이미지들의 퀄리티가 올라감에 따라, overfitting / memorization of training samples에 대한 걱정이 올라감
* 생성모델에서 꼭 보여줘야 할 내용 두가지
1) generator가 이미지를 외워서 보여주는 것이 아니란 것을 증명해야한다 (memorization) = overfitting이 일어나서 단순 matching을 하는 mapping을 학습한 것이 아니란 것을 보여줘야 한다.
2) generator의 input 공간 = latent space에서의 변화가 부드러운 변화임을 보여줘야 한다.
- 더 많은 데이터가 들어갈수록, 더 높은 resolution을 만들수록, 어떻게 모델의 학습이 진행되는가?에 대해서 3백만개가 넘는 training example이 있는 LSUN을 사용했다.
- 얼마나 모델이 빠르게 학습하는가 & generalization performance (다른 데이터 셋을 넣었을때에도 제대로 작동하는가?) 사이의 관계성이 높다는 것
- 첫번째 epoch을 돌리고 나온 결과물들과 5번 epoch을 돌린 결과물들을 비교해 봤을 때, 단순 memorization이나 overfitting에 의한 결과물이 아닌 것을 알수 있다.
1-1) Deduplication (중복 제거)
memorization의 확률을 조금이라도 더 줄이기 위해서, simple image de-duplication process를 진행하였다.
32x32로 다운샘플링된 트레이닝 데이터의 center-crops들 위에, 3072-128-3072 de-noising dropout regularized RELU autoencoder를 사용했다. -> 어쩌고 저쩌고.. 어떤 작업들로 비슷한 이미지들을 데이터셋에서 제거 가능했는지에 대한 설명 -> 100개 중에 1개 정도 틀리는 수준의 높은 정확도의 작업으로 27만 5천개의 이미지를 제거할 수 있었다.
1 에폭이 지난 후의 이미지를 보면, 1번만 돌려도 모델이 training example을 외울 수 있었으나, 실제 만들어진 이미지들을 보면, 그렇게 하지 않았음을 알 수 있다. (minibatch SGD와 small learning rate를 사용함에도 이런 결과가 만들어졌음을 강조함)
오히려 5 에폭이 끝난 후의 결과를 보면서, overfitting보다는 underfitting이 일어났다는 이야기를 하며, 그 증거로 몇개의 침대의 base board에 특정 noise texture가 반복해서 일어났음을 이야기한다. (아직 학습이 덜됨?, 아무튼 overfitting은 확실히 아니라는 증거로 쓴듯)
2) Faces
- dbpedia를 통해 얻은 이름 리스트 (현대시대에 살고 있는 사람들로 구하기 위해 현대시대 이름으로 받았다는 듯, 꼼꼼하다 ㅋㅋ) 로 랜덤하게 web image queries를 이용해 사람 얼굴이 들어간 사진들을 모았다.
- 3백만개의 이미지, 1만명의 사람들
- OpenCV face detector를 해당 이미지들에 돌리고, detection이 될정도의 high-resolution 이미지들만 모아서 350,000개의 이미지를 얻어냈다.
- 해당 이미지들의 face box를 training으로 사용하였다.
3) Imagenet-1k
natural images for unsupervised training을 해보기 위해서 사용한 데이터셋이다.
32x32 min-resized center crop으로 만들어 training 하였다.
5. Empirical Validation of DCGANs Capabilities
5.1. Classifying CIFAR-10 using GANs as a feature extractor
- unsupervised representation learning 알고리즘의 퀄리티 향상을 위한 방법 중 하나는, 해당 알고리즘을 feature extractor로, supervised dataset에 적용한 후 linear model의 퍼포먼스를 평가한다.
- CIFAR-10은 K-means를 사용한 feature learning algorithm을 통한 평가 기준이 존재한다.
4800개의 feature maps을 사용하면 80.6%의 accuracy를 보여준다.
unsupervised multi-layered extension을 이용하면 82.0%의 accuracy를 보여준다.
- 여기서 DCGAN이 supervised tasks에서 학습한 representation의 퀄리티를 평가하기 위해서,
-> Imagenet-1k를 학습시킨 모델의 discriminator(판별기)의 convolutional features들을 사용하였고,
-> 각 레이어의 representation들을 maxpooling해서 4 x 4의 spatial grid를 만들었다. (왜 4 x 4로 만든것일까?)
-> 그 후, feature들을 flattened (2d 레이어를 1차원 벡터로 변환시키는 작업) 시키고, 붙여서 28672차원 벡터로 만들고
-> 이 feature들로 L2-SVM classifier로 학습을 시켜서 CIFAR-10을 테스트 해보니
-> 82.8%의 accuracy가 나오더라! (K-mean based approache를 능가함)
- 심지어 discriminator는 K-means에 비해서 상당히 적은 수의 feature map을 가지고 있음에도 (highest layer에 512개), 4 x 4이기 때문에, total feature vector size로 보면 그 수가 더 많다.
- Exemplar CNNs에 비해서는 성능이 부족하다
unsupervised로 트레인된 식별 CNN, source dataset에서 aggresively augmented된 애들을 구분하기 위한 목적으로 만들어진 모델이다.
- discriminator의 representation을 fine tuning 함으로써 개선여지가 있다. (fine tuning - 가중치를 미세하게 조절함)
- 애초에 해당 DCGAN모델은 CIFAR-10으로 학습되어지지 않았기 때문에, 확실히 의미있음을 알수 있음.
5.2 Classifying SVHN digits using GANs as a feature extractor
- SVHN : StreetView House Numbers dataset
- labeled 데이터가 부족할때, DCGAN discriminator의 features들을 supervised purpose로 사용하였다.
- CIFAR-10 할때랑 똑같은 방식으로 준비하였고
- 22.48%의 test error를 보여줬다. (최고수준?)
- 그리고 해당 모델이 CNN architecture 덕분에 잘나온것이 아님을 증명하기 위해서, 다른 purely supervised CNN을 사용하여 테스트를 하였고 28.87%의 validation error를 보였음을 알려줬다.
6. Investigating and visualizing the internals of the networks
- training set에 nearest neighbor search를 하지 않음, log-likelihood metrics 사용하지 않음을 명확히 함.
6.1 walking in the latent space
- latent space = generator의 input 공간
- sharp transition이 있는지 확인해서 memorization의 sign이 있는지 확인했다.
- 의미 있는 변화가 포착된다면, 모델이 적절하고 흥미로운 representation을 학습했다고 볼 수 있다.
(오브젝트가 생기거나/없어지거나)
6.2 Visualizing the discriminator features
- supervised training on CNNs on large image dataset : very powerful learned features
- supervised CNNs train on scene classification learn object detectors
-> DCGAN도 많은 수의 이미지를 학습하게 되면 흥미로운 hierarchy of features들을 학습하게 된다.
- Guided backpropagation을 사용해서, features learnt by the discriminator (beds and windows) 들을 찾아낼 수 있었다.
(first 6 learned covolutional features from the last convolution layer in the discriminator)
- random filter를 이용해서 의미 있는 feature들을 activate시키지 못하는 것을 보여줌으로써 trained filter 쪽이 제대로 나왔음을 보여준다.
6.3 Manipulating the generator representation
6.3.1 Forgetting to draw certain objects
- what representations the generator learns?
- 샘플들을 보면, generator가 사진 속의 특정 오브젝트 representation을 학습하는것을 알 수 있었다. (침대, 창문, 램프 등등)
- generator에서 window만 제거하는 시도의 실험을 해보았다.
어떻게?
1. 150개의 샘플 중, 52개의 window bounding boxes를 그림
2. second highest convolution layer features에서 logistic regression으로 feature activation이 "window"에 있었는가? 를 해서 (activations inside the drawn boxes -> positive, random smaples from the same images -> negative) 로 마크를 하고
logistic regression :
3. weights greater than zero in feature map = positive = "window가 있음" 은 drop 시킴 (총 200개)
4. random new samples generated with/without feature map removal
결과는?
위의 사진과 같이, 첫번째 줄(un-modified)에 비해서 두번째 줄의 sample들은 window들이 없어지거나, 해당 부분이 다른 비슷한 visual appearance로 바뀌는 현상을 발견했다. (예를 들면 door나 mirror로)
visual quality는 떨어졌지만, 전체적인 scene의 구성은 그대로 유지되었다.
-> 이를 통해서, generator가 scene representation과 object representation을 잘 구분하고 있음을 알 수 있다.
-> 추가 연구거리로는 다른 오브젝트를 없애거나, 그려온 오브젝트를 modify하거나 등이 있을듯 싶다.
6.3.2 Vector Arithmetic on face samples
- simple arithmetic operation revealed rich linear structure in representation space (representation of words)
- 예를 들면 vector("King") + vector("Man") + vector("Woman") = vector("Queen")
- 비슷하게 적용이 되지 않을까? 해서 performed similar arithmetic on the Z vectors
- 한 개씩의 Z vector들을 활용해서 해당 방식을 진행했을때 -> unstable
- 3개의 Z vector들을 평균내서 활용하면 sementically obeyed the arithmetic.
- object manipulation 뿐만 아니라, face pose is also modeled linearly in Z space (포즈변경도 가능)
- 3개의 Z vectors를 평균내고
- arithmetic이 그 mean vector위에 되어서 vector Y를 만들어낸다.
- generator에 vector Y를 줌으로써 원하는 샘플이 생성되게 된다.
- interpolation capabilities of the generator를 보여주기 위해서 uniform noise이 scale +-0.25로 Y에 더해져서 8개의 다른 샘플들도 만들어주었다.
- input space에서 arithmetic을 적용해주는 것은 noisy overlap due to misalignment가 나왔다.
이거 조금 더 자세히 이해를 할 필요가 있어보인다
-> 아마도? 3개의 image의 z vector들을 평균내서 generator에 넣어서 나온 애(vector Y)들을 -> vector계산을 또해서 또 generator에 넣어서 women with glasses가 나온게 아닐까..?
= 맞는것 같음 ㅎ
- 이것으로 우리 모델로 학습되어진 Z representations들을 이용해서 흥미로운 결과물들을 만들어 낼 수 있음을 확인했고
- 과거에도 conditional generative model 들이 scale/rotation/position 관련해서 학습하는 것을 알고 있었다.
- 하지만 pureply unsupervised로 이런 결과를 낸 것은 유의미하다
- 이런 식의 vector arithmetic 관련 연구가 더 진행된다면, conditional generative modeling에 필요한 데이터를 많이 줄일 수 있을 것이다.
7. Conclusion and future work
- stable set of architectures for training GANs를 제안했고
- GANs이 supervised learning과 generative modeling에서 good representation들을 학습한다는 것을 증명했다
- 아직 문제가 있다면, 너무 오래 훈련을 시키게 되면 subset of filters들이 무너지는 현상이 일어나곤 한다.
- 우리는 이 것을 video(frame prediction)나 audio(pre-trained features for speech synthesis)쪽으로 가져가도 아주 흥미로울 것이라 생각한다.
- latent space에 대한 조금 더 상세한 연구 또한 흥미로울 것 같다.
'AI & 머신러닝 > 논문 리뷰' 카테고리의 다른 글
Going deeper with convolutions (GoogLeNET) - Related Work (0) | 2023.06.12 |
---|---|
Going deeper with convolutions (GoogLeNET) - Introduction (0) | 2023.06.12 |
Deep Residual Learning for Image Recognition - abstract (0) | 2023.06.09 |
Going deeper with convolutions (GoogLeNET) - abstract (0) | 2023.06.09 |
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 논문 리뷰 (0) | 2023.02.02 |