본문 바로가기
Deep Learning

생성적 적대 신경망 GAN (Generative Adversarial Network)

by wave_m 2020. 9. 23.
728x90

GAN이란 ?

- 경쟁하여 최적화를 수행하는 생성형 신경망

- 생성망과 판별망, 두 신경망이 상호 경쟁하면서 학습

- 레이블이 없는 정보를 다루는 비지도 학습

- 실제 데이터(Real data)와 비슷한 확률분포를 가지는 허구 데이터(Fake data / 생성데이터)를 생성

- ex. 실제 데이터로 얼굴 사진을 제공하면 비슷한 확률분포를 가지는 새로운 허구 얼굴 사진을 생성

 

GAN의 기본 개념 ?

- 입력데이터는 무작위 잡음, 출력데이터는 입력 데이터보다 높은 차원으로 구성

- 입력한 무작위 잡음은 출력 데이터와 상관이 없기 때문에 GAN은 비지도형의 생성형 신경망

- 출력 데이터는 특정 분포도를 갖는 데이터로 가정 ex. 필기체 숫자, 사람 얼굴 사진 

- 학습을 마친 GAN에 새로운 무작위 잡음을 입력하면 학습한 실제 데이터와 유사한 형태의 허구 데이터를 출력

  ex. 필기체 숫자나 사람 얼굴을 학습시키면 학습시킨 것과 비슷한 필기체 숫자나 사람 얼굴이 나옴

 

GAN의 목적 ?

- 학습한 실제 데이터와 같은 확률 분포를 가지는 새로운 허구 데이터를 만들도록 생성망을 학습

 

GAN의 구조 ? 

- 판별망 : 실제 데이터인지 만들어진 허구 데이터인지를 더 잘 구분하도록 학습

- 생성망 : 학습을 통해 판별망을 더 잘 속이도록 학습

- 두 과정을 계속 순환하면서 학습하는 방법(경쟁적 학습법)

 

GAN의 동작 원리 ?

- 실제 이미지를 학습하여 실제 이미지와 확률분포가 최대한 비슷하도록 허구 이미지를 만듬. 이 학습 과정에서 판별망의 판단 결과를 활용

- 생성망이 만든 허구 이미지를 판별망이 실제 이미지로 착각하도록 만드는 방향으로 생성망 학습이 이루어짐

- 판별망은 입력된 이미지가 실제인지 허구인지 판별하는데 실제 이미지는 변하지는 않지만 허구 이미지는 생성망의 학습이 진행됨에 따라 점점 실제 이미지와 유사해진다는 점(점진적 학습)

- 발전된 생성망의 결과를 허구로 판별할 수 있도록 상호 공진화하는 방식

- 이미지 판별과 생성 시 합성곱 계층을 사용하면 GAN에서도 완전 연결 계층보다 더 효과적인 처리를 할 수 있음

 

GAN의 동작 사례 ?

- 판별망은 무작위 잡음 벡터 Z(실제 데이터와 다른 분포를 가짐)를 입력받아 생성하는 생성망의 결과를 판별하는 신경망

- 일반적인 판별망은 개별 이미지가 무엇인지 판별하는 사용하지만 GAN의 판별망은 개별 이미지가 아닌 이미지의 확률분포를 판별

- 실제 데이터와 생성망이 만든 허구 데이터의 확률분포 차이를 판별하도록 학습

- 이 전체 최적화와 각 망들의 부분 최적화를 병행하면서 GAN은 점점 목표한 최적의 단계로 발전하여 결국, 임의의 정규 분포 입력의 분포를 조절하여 실제 이미지를 생성하도록 발전

- 최적화가 끝나면 이론적으로 생성망의 결과와 실제 이미지를 판별망이 구분하지 못하게 됨

- 각 생성망과 판별망이 최적으로 구성되고 둘의 밸런스도 맞아야함

 

 

 

GAN 구조

 

 

GAN을 통한 확률분포 학습 경과 (출처 : 한빛 미디어  / 코딩 셰프의 3분 딥러닝 케라스맛)

 

판별망의 동작 원리 (출처 : 한빛 미디어  / 코딩 셰프의 3분 딥러닝 케라스맛)

 

 

reference ? 

한빛 미디어  / 코딩 셰프의 3분 딥러닝 케라스맛

728x90