본문 바로가기
Keras Deep Learning

생성적 대립 신경망, GAN의 원리

by yj.yoon 2020. 10. 30.

생성적 적대(대립) 신경망 GAN (generative adversarial network)은 경쟁하여 최적화를 수행하는 생성형 신경망이다.

GAN 내부의 두 신경망이 상호 경쟁하면서 학습한다. 두 신경망 중 하나는 생성망이고 다른 하나는 판별망(DNN, CNN)이다.

 

 

GAN의 목적과 개념

생성형 인공지능 방식으로 실제 데이터와 비슷한 확률분포를 가지는 허구 데이터(생성 데이터)를 생성한다.

GAN은 레이블이 없는 정보를 다루는 비지도 학습이다.

=> 비지도형의 생성형 신경망

 

 

GAN의 생성망과 판별망의 동작 원리

생성망

- 주어진 데이터와 유사한 허구데이터(생성 데이터)를 생성한다.

- 저차원 무작위 잡음을 입력받아 고차원 허구이미지를 생성한다.

- 실제 이미지를 학습하여 확률분포가 최대한 비슷하도록 허구이미지를 만든다.

 

 

판별망

- 허구 데이터인지 실제 데이터인지 구분한다. (입력된 이미지가 실제인지 허구인지 판별)

- 허구이미지는 생성망의 학습이 진행됨에 따라 점점 실제이미지와 유사해진다. 그래서 판별망은 점진적으로 학습한다.

- 무작위 잡음 벡터 Z를 입력받아 생성하는 생성망의 결과를 판별한다.

 

 

 

실제 데이터를 1(참)로 판별하는 과정

데이터로부터 가져온 샘플 -> 미분 가능한 판별 함수 D -> 1을 출력하려고 노력하는 판별 함수 D

 

(설명) 실제 데이터의 일부를 판별망에 입력한다. 미분 가능한 판별 함수 D가 그 샘플을 1로 판별할 수 있도록 학습을 시키고, 정확도가 높은 판별을 위해 신경망으로 구성한다.

 

 

허구 데이터를 0(거짓)으로 판별하는 과정

무작위 잡음 벡터 Z -> 미분 가능한 생성 함수 G -> 모델로부터 가져온 샘플 -> 미분 가능한 판별 함수 D -> 0을 출력하려고 노력하는 판별 함수 D

* 무작위 잡음 : 실제 데이터의 확률분포와 다른 '임의의 확률분포'

 

(설명) 무작위 잡음을 G에 통과시킨다. 여기서 복잡한 확률분포를 변환하기 위해 생성함수 G를 신경망으로 구성한다. 다음으로 G가 생성한 데이터를 추출한다. 추출 데이터와 목표 데이터를 판별 함수 D에 통과시킨다. 이 판별 함수는 실제 데이터 판별에 사용한 신경망을 한 번 더 사용한다. 판별값은 거짓(0)이 되어야 한다.

 

 


참고 : 코딩셰프의 3분 딥러닝 케라스맛 (김성진, 한빛미디어)