13-3. 적대적 생성 신경망(GAN)
학습 과정
-
판별자를 먼저 학습시킨 후 생성자를 학습시키는 과정을 반복
- 생성자: 최대한 진짜와 비슷한 데이터를 생성하려고 하는 모델
- 판별자: 진짜와 가짜를 구별하는 모델
-
판별자 학습은 두 단계로 구성됨
- 먼저 실제 이미지를 입력해서 네트워크(신경망)가 해당 이미지를 진짜로 분류하도록 학습
- 이후 생성자가 생성한 모조 이미지를 입력해서 해당 이미지를 가짜로 분류하도록 학습
⇒ 실제 이미지는 진짜로, 모조 이미지는 가짜로 분류
-
이와 같은 학습 과정을 반복하면 판별자와 생성자가 서로를 적대적인 경쟁자로 인식하여 모두 발전하게 됨
- 생성자는 진짜 이미지에 완벽히 가까울 정도의 유사한 모조 이미지를 생성
- 판별자는 실제 이미지와 모조 이미지를 최대한 구분하려고 노력
⇒ 생성자는 분류에 성공할 확률을 낮추고 판별자는 분류에 성공할 확률을 높이면서 서로 경쟁적으로 발전시키는 구조
13-3-1. GAN 동작 원리
https://wikidocs.net/146217


- 두 개의 네트워크로 구성됨
- 생성자(Generator, $G$): 판별자 $D$를 속이려고 원래 이미지와 최대한 비슷한 이미지를 만들도록 학습
- 판별자(Discriminator, $D$): 원래 이미지와 생성자 $G$가 만든 이미지를 잘 구분하도록 학습
- 두 네트워크는 서로 적대적으로 경쟁하여 학습 진행
생성자(Generator, $G$)
- 판별자 $D$가 진짜인지 가짜인지 구별하기 어려울 정도로 진짜와 같은 모조 이미지를 노이즈 데이터를 사용하여 만들어 내는 네트워크
- 임의의 노이즈 데이터를 사용하여 모조 이미지 $z'(= G(z))$를 생성
판별자(Discriminator, $D$)
- 주어진 입력 이미지가 진짜 이미지인지 가짜 이미지인지 구별하는 네트워크
- 이미지 $x$가 입력으로 주어졌을 때 판별자 $D$의 출력에 해당하는 $D(x)$가 진짜 이미지일 확률을 반환
- $0≤D(\cdot)≤1$
목적함수(가치 함수, value function)
$\underset{G}{\text {min}} \underset{D}{\text{ max }}E_{x \sim P_{data}(x)}[ \log D(x)] + E_{z \sim P_{z}(z)}[ \log (1 - D(G(z)))]$
▲ 위의 식은 손실 함수가 아니고 가치 함수라고 표현하는 것이 정확한 표현입니다.

판별자(discriminator)