본문 바로가기

비지도학습/GAN

[4주차]💜UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS,2016 Review

"Most GANs today are at least loosely based on the DCGAN architecture." - NIPS 2016 Tutorial by Ian Goodfellow


1. DCGAN의 특징

2. 목표와 구조

3. Adversarial 학습에 대한 디테일
4. LSUN(Large Scale Scene Understanding)

5. Empirical validation
6. Investigating and visualizing the internals of the networks

7. Conclusion


◼ DCGAN의 contribution

① 안정적 학습

대부분의 상황에서 언제나 안정적으로 학습이 되는 Deep Convolutional GAN 구조(DCGAN)를 제안하였다는 점

→ GAN의 구조적 단점(Saddle problem)으로 인한 불안정성 개선하여 자연스러운 이미지 생성

 

② 벡터 산술 연산

마치 word2vec과 같이 DCGAN으로 학습된 Generator가 벡터 산술 연산이 가능한 성질을 갖고 이것으로 semantic 수준에서의 sample generation을 해볼 수 있다는 점

 

🤴 - 남자👦 + 여자🧒 = 여왕👸

 

Black-box method 개선

DCGAN이 학습한 filter들을 시각화하여 보여주고 특정 filter들이 이미지의 특정 물체를 학습했다는 것을 보여주었다는 점

 

④ 높은 분류 성능

이렇게 학습된 Discriminator가 다른 비지도 학습 알고리즘들과 비교하여 비슷한 이미지 분류 성능을 보였다는 점


◼ DCGAN의 목표

1) Generator가 단순 기억("memorization")으로 데이터를 생성하지 않는 것을 보여줘야함

2) 생성이미지 해상도 개선 : z의 미세한 변동에 따른 generate 결과가 연속적으로 부드럽게 이루어져야함("Walking in the latent space")


◼ Approach and model architecture 접근방법과 모델의 구조

기존의 GAN Architecture(fully-connected layer) 구조
DCGAN의 구조

더보기

Architecture guidelines for stable Deep Convolutional GANs 안정적인 DCGAN을 위한 구조 가이드라인

  • 판별기 신경망: Strided Convolution ,생성기 신경망: fractional-strided 생성기 신경망으로 pooling layer 대체
  • 생성기와 판별기 둘 다에 Batch normalization을 사용
  • 더 깊은 구조를 위해서 FCL(Fully Connectyed Layer)을 제거
  • 생성기 모든 층에서 렐루 활성화 함수(Relu Activation Function)를 사용함
  • (단, 출력층에서는 예외로 탄 함수 사용)
  • 판별기의 모든 층에서 리키 렐루 활성화함수(Leaky Relu Activation Function)를 사용

DCGAN의 판별기에 사용되는 strided convolution(보폭 처리 합성곱)에 대한 그림(왼쪽).  DCGAN의 생성기에 사용되는  fractionally-strided convolutions에 대한 그림

더보기

두 convolution의 차이점❓

◾ Strided Convolution(보폭 처리 합성곱) : DCGAN의 판별기에 사용되는 strided convolution(보폭 처리 합성곱).

◾ Fractionally-strided convolutions : DCGAN의 생성기에 사용되는 fractionally-strided convolutions.존의 convolutions는 필터를 거치며 크기가 작아진 반면에, fractionally-strided convolutions은 input에 padding을 하고 convolution을 하면서 오히려 크기가 더 커지는 특징이 있다. 쉽게 transposed convolution이라고도 불리고, deconvolution이라고도 불리는데, deconvolution는 잘못된 단어라고 한다.

 

Batch-normalization

 Batch Normalization은 기본적으로 Gradient Vanishing / Gradient Exploding 이 일어나지 않도록 하는 아이디어 중의 하나이며, 지금까지는 이 문제를 Activation 함수의 변화 (ReLU 등), Careful Initialization, small learning rate 등으로 해결하였지만, 이 논문에서는 이러한 간접적인 방법보다 training 하는 과정 자체를 전체적으로 안정화하여 학습 속도를 가속시킬 수 있는 근본적인 방법을 제안하였다.


◼ Adversarial 학습에 대한 디테일

DCGAN의 Generator와 Discriminator의 구조 [출처 :https://blog.naver.com/PostView.nhn?blogId=laonple&logNo=221201915691]


LSUN(Large Scale Scene Understanding)

 

학습을 1 에포크 진행하여 생성한 침실들.
학습을 5 에포크 진행하여 생성한 침실들. 몇몇의 침대의 base boards와 같이 몇개의 샘플을 통해 보이는 반복된 노이즈 텍스쳐를 통해 under-fitting이 느껴짐


◼ Empirical validation

1) Classifying CIFAR-10 using GANs as a feature extractor (특징추출으로 GAN을 사용하여 CIFAR-10을 분류하기)

-  비지도 표현 학습 알고리즘의 퀄리티를 평가하는 하나의 공통적인 기술은 지도학습적 데이터셋에 특징 추출로서 적용하는것,

그리고 이 특징에 피팅된 선형모델들에 대한 퍼포먼스를 평가하는것

- 4800의 특징 맵을 사용하여 80.6퍼의 정확도를 얻을수있음

CIFAR-10 데이터셋의 예시

2) Classifying SVHN Digits using GANs as a feature Extractor (GAN을 특징추출으로서 사용하여 SVHN Digits를 분류)

SVHN(길거리 집 데이터셋)에서 우리는 라벨링된 데이터가 희소성의 띌때 지도학습적 목적을 위해 DCGAN의 판별기의 특징들을 사용한다. 시파10 실험에서 비슷한 데이터셋 준비하는 룰은 다음과 같다.(논-엑스트라부터 10,000장의 validation set를 나누고 모든 하이퍼파라미터과 모델셀렉션을 위해 사용한다)

SVHN 데이터셋의 이미지(좌)와 DCGAN에서 학습하여 생성한 SVHN 이미지(우)


Investigating and visualizing the internals of the networks 

1) Walking in the latent space 잠재공간에서 워킹 : 생성 결과과 연속적으로 부드럽게 이뤄져야함

 

"If walking in this latent space results in semantic changes to the image generations (such as objects being added and removed), we can reason that the model has learned relevant and interesting representations. The results are shown in Fig.4. "

그림 4 : 맨 위 행 : Z에있는 일련의 9 개 임의 점 사이의 보간은 공간이 학습은 공간의 모든 이미지가 그럴듯하게 침실처럼 보이는 부드러운 전환을 가지고 있습니다. 에 6 번째 줄에서는 창문이없는 방이 천천히 거대한 창문이있는 방으로 변하는 것을 볼 수 있습니다. 열 번째 줄에서 TV처럼 보이는 것이 천천히 창으로 변하는 것을 볼 수 있습니다.

2) Visualizing the discriminator features 판별기 특징들 시각화하기

 

We demonstrate that an unsupervised DCGAN trained on a large image dataset can also learn a hierarchy of features that are interesting. Using guided backpropagation as proposed by (Springenberg et al., 2014), we show in Fig.5 that the features learnt by the discriminator activate on typical parts of a bedroom, like beds and windows. For comparison, in the same figure, we give a baseline for randomly initialized features that are not activated on anything that is semantically relevant or interesting.

그림 5 : 오른쪽 그림은 판별기의 마지막 convolution layer에서 처음 6 개의 학습된 convolutional feature에 대한 최대축 정렬 응답의 guided backpropagation에 대한 시각화. LSUN 침실의 중심 개체 인 침대 데이터 세트.에 반응하는 기능의 상당 부분이 주목됩니다. 왼쪽 그림은 임의의 필터 기준선이 있습니다. 이전 응답과 비교하면 판별과 무작위 구조가 없습니다.

3) Manipulating the generator representation 생성기 표현에 대한 조정

    (1) forgetting to draw certain objects 특정 객체 그리기를 잊어버리기(지우기)

  • 생성기가 학습하는 샘플의 퀄리티는 생성기가 특정 객체 표현에 주요한 장면의 component를 학습한다고 함(창문, 램프,문 그리고 여러가지 잡다한 가구들과 같이)
  • 이 표현이 가져오는 형태를 탐구해보기위해서, 우리는 생성기에서 창문을 완전히 제거하는 시도를 하는 실험을 진행
  • 그러고나서 특정한 새로운 샘플들은 특징맵 제거를 적용 혹은 미적용하여 생성됨

 

그림 6 : 맨 윗줄 : 모델의 수정되지 않은 샘플. 맨 아래 행 : 생성 된 동일한 샘플 "창"필터를 제거합니다. 일부 창은 제거되고, 다른 창은 문과 거울과 같은 유사한 시각적 모양을 가진 개체로 변형됩니다. 시각적 품질이 저하되었지만, 전반적으로 장면 구성은 비슷하게 유지되어 발전기가 장면을 잘 생성하였음을 나타냅니다. 객체 표현에서 표현. 다른 것을 제거하기 위해 확장 된 실험을 수행 할 수 있습니다. 이미지에서 개체를 만들고 생성기가 그리는 개체를 수정합니다.

 

    (2) vector arithmetic on face samples 얼굴 샘플에 벡터 연산

학습된 단어의 표현을 평가하는 문맥에서 (Mikolov et al., 2013)논문은 간단한 계산은 표현 공간에서 풍부한 선형적 구조를 보여주는건 보여줬다. 한가지 예는 벡터("왕")-벡터("남자")+벡터("여자")는 Queen에 대한 벡터와 nearest neighbor인 벡터라는 결과를 가져왔다

그림 7 : 시각적 개념에 대한 벡터 산술. 각 열에 대해 샘플의 Z 벡터는 다음과 같습니다. 평균. 그런 다음 평균 벡터에 대해 산술을 수행하여 새로운 벡터 Y를 생성했습니다. 센터 오른쪽의 샘플은 Y를 발생기에 입력으로 공급하여 생성됩니다. 시연하기 위해 생성기의 보간 기능, 스케일 + -0.25로 샘플링 된 균일 한 노이즈가 추가되었습니다. 8 개의 다른 샘플을 생성합니다. 입력 공간에 산술 적용 (아래 두 가지 예) 정렬 불량으로 인해 시끄러운 중첩이 발생합니다.
그림 8 : "회전"벡터(A turn vector)는 왼쪽을 바라보는 얼굴과 오른쪽을 바라보는 얼굴의 평균 4 개 샘플에서 생성되었습니다.  이 축을 따라 임의의 샘플에 interpolation(보간)을 추가하여 안정적으로 변환 할 수있었습니다.

보간(interpolation)은 두 점을 연결하는 방법을 의미한다. 여기서 말하는 연결은 궤적을 생성한다는 뜻이다.보간이 필요한 이유는 정보를 압축한 것을 다시 복원하기 위함이다. 특징점이라 불리는 선의 모양 복원에 꼭 필요한 점듦나 취해서 저장하는데 이 과정을 sampling이라 부른다. 일반적으로 sampling은 일정 시간 주기로 선의 점을 취하는 방식을 사용하는데 녹음 기술에서 많이 쓴다.

◼ Conclusion and future work 

GAN을 학습하기위한 더욱 안정적인 구조를 제안하고, 적대적 네트워크가 지도적이고 생성적인 모델링에 대한 이미지 좋은 표현을 학습

✔ 모델에 아직 남아있는 불안정성도 몇개 있음 : 모델이 더 오래 학습할수록 필터들의 subset에서 싱글 oscillating 모드로 무너지기도함

✔ 다른 도메인(비디오, 오디오)으로 이 프레임워크를 넓히는것도 재밌을듯

✔ 학습된 잠재공간의 properties에 대한 더욱 깊은 조사도 재밌을듯

 

💜Reference

https://seing.tistory.com/110?category=419141

angrypark.github.io/generative%20models/paper%20review/DCGAN-paper-reading/#%EA%B8%B0%EC%A1%B4-gan%EC%9D%98-%ED%95%9C%EA%B3%84

iskim3068.tistory.com/35

jaejunyoo.blogspot.com/2017/02/deep-convolutional-gan-dcgan-1.html

https://bigstory.tistory.com/entry/데이터-중복-제거Data-deduplication [IT on the Wheel]