작성자: 15기 우명진
지난주에 GAN 논문에 대해서 리뷰를 진행했습니다.
이후 Deep Convolutional Generative Adversarial Networks(DCGAN)이라고 하여 GAN에서 파생된 모델이 있다는 것을 알게 되어 추가적인 공부를 진행해보았습니다.
GAN의 단점으로는 구조가 불안정하고, NN이 가진 한계점('어떠한 과정을 거쳐서 이런 결과가 나오는건가'에 대한 설명)을 지녔습니다.
DCGAN의 가장 큰 차이점은 Generator와 Discriminator에서 convolution(합성곱 신경망)과 convolution-transpose(전치 합성곱 신경망)을 사용했다는 점입니다.
구체적으로는,
Discriminator에서는 convolution 계층, batch norm 계층, LeakyReLU 활성함수를 사용합니다.
입력값과 출력값은 GAN과 동일하게 각각 3x64x64와 입력 데이터가 실제 데이터일 확률값인 0~1 사이값입니다.
Generator에서는 convolution-transpose 계층, batch norm 계층, ReLU 활성함수를 사용합니다.
입력값과 출력값은 GAN과 동일하게 각각 잠재공간 벡터 z와 3x64x64 RGB입니다.
*convolution-transpose(전치 합성곱 신경망)은 latent vector z가 이미지와 같은 차원을 갖도록 변환시켜주는 역할
DCGAN을 통해
1. 안정적으로 학습이 가능한 GAN을 구축합니다.
2. 학습이 된 Discriminator가 이미지 분류에서 다른 비지도 알고리즘과 비교했을 때 대등한 성능을 보입니다.
3. DCGAN이 학습한 filter들을 visualize하고, 특정 filter가 특정 object도 생성할 수 있습니다. →GAN의 한계 극복
4. DCGAN은 벡터 산술 연산이 가능한 성질을 갖습니다.
예시)
사람 얼굴을 학습한 Generator에 [(안경 쓴 남자를 출력하는 noise를 찾아서 평균을 취한 것) - (안경이 없는 남자를 출력하는 noise를 찾아서 평균을 취한 것) + (안경 없는 여자를 출력하는 noise의 평균)]의 연산을 수행하여 Generator에 입력해주면 '안경 쓴 여자'를 출력
참고 링크:
https://tutorials.pytorch.kr/beginner/dcgan_faces_tutorial.html
https://memesoo99.tistory.com/32
https://memesoo99.tistory.com/33
댓글 영역