CGAN(conditional generative adversarial network)는 생성자와 판별자를 훈련하는 데 모두 레이블을 사용한다. 이 방법 덕분에 CGAN의 생성자는 원하는 가짜 샘플을 합성할 수 있다. 앞에서 ProGAN이 생성한 이미지가 인상적이지만 어떤 얼굴을 생성할지 제어할 수 없다.
CGAN은 생성자와 판별자가 훈련하는 동안 추가 정보를 사용해 조건이 붙는 생성적 적대 신경망이다. 이론적으로 이 부가 정보는 어떤 것이든 가능하다. 예를 들어 클래스 레이블, 일련의 태그 또는 글로 쓰인 설명도 가능하다.
CGAN을 훈련하는 동안 생성자는 훈련 데이터셋에 있는 각 레이블에 대해 실제 같은 샘플을 생성하는 법을 배운다. 판별자는 '진짜 샘플-레이블' 쌍과 '가짜 샘플-레이블' 쌍을 구별하는 법을 배운다. SGAN과 달리 판별자가 진짜 샘플에 올바른 레이블을 할당하는 것을 학습한다(그리고 진짜 샘플과 가짜 샘플을 구분하는 것도 학습한다). CGAN의 판별자는 각 클래스를 구분하는 것을 학습하지 않는다. 판별자는 진짜 - 레이블 쌍만 받아들이고 샘플-레이블 쌍이 맞지 않는 것이나 가짜 샘플의 쌍은 거부한다.
<CGAN 생성자>
<CGAN 판별자>
<구조 다이어그램>
가짜 샘플에 대해 같은 레이블 y가 생성자와 판별자에게 모두 전달된다. 또한 판별자가 잘못된 쌍을 거부하기 위해 진짜 샘플과 잘못된 레이블 쌍으로 훈련하지 않는다. 레이블이 잘못된 쌍을 구별하는 것은 진짜 쌍만 받아들이도록 훈련하면서 생긴 부산물이다.
'GAN > 이론' 카테고리의 다른 글
13. CycleGAN - 이론 (0) | 2021.07.02 |
---|---|
12. CGAN - 구현 (0) | 2021.06.30 |
10. SGAN - 구현 (0) | 2021.06.28 |
9. SGAN - 이론 (0) | 2021.06.28 |
8. 텐서플로 허브를 사용한 실습 (0) | 2021.06.27 |