12. 발전된 GAN 모델
3강. 필기체를 생성하는 ACGAN과 InfoGAN 구현
학습목표
- MNIST 필기체를 생성하는 ACGAN을 구현할 수 있다.
- MNIST 필기체를 생성하는 InfoGAN 을 구현할 수 있다.
학습내용
- MNIST 필기체를 생성하는 ACGAN 구현 - MNIST 필기체를 생성하는 InfoGAN 구현
1. MNIST 필기체를 생성하는 ACGAN 구현
∙ 판별망을 두 개의 Classifier로 구성된 Auxiliary Classifier GAN(ACGAN) 구현
① ACGAN 구현에 필요한 라이브러리 불러오기
② 생성망 모델 구성
∙ 가짜 이미지 생성을 위한 BN-ReLU-Conv2DTranpose 스택
∙ 출력 계층 활성화 함수로는 tanh 대신 sigmoid 함수 사용
∙ sigmiod 함수가 수렴이 더 쉬움
③ 판별망 모델 구성
∙ 진짜와 가짜를 판별하는 LeakyReLU-Conv2D 스택
∙ BN으로는 수렴하지 않으므로 BN을 사용하지 않음
④ 생성한 이미지 저장 함수 구현
⑤ 판별망과 적대적 네트워크 훈련 구현
∙ 판별망과 적대적 네트워크를 훈련
∙ 먼저 판별망이 진짜와 가짜 이미지, 그에 해당하는 원-핫 레이블을 사용해 훈련
∙ 다음으로 적대적 네트워크가 진짜인 척하는 가짜 이미지와 그에 해당하는 원- 핫 레이블을 사용해 훈련
⑥ ACGAN 모델을 구성하는 함수로 훈련 루틴을 호출
⑦ 코드 실행
∙ ACGAN 모델(discriminator, generator, acgan_mnist) summary 출력 결과
∙ 학습 시 출력된 학습 진행 상황을 나타내는 결과
…
∙ ACGAN 생성 결과
2. MNIST 필기체를 생성하는 InfoGAN 구현
∙ 입력 코드와 출력 관측 사이의 상호 정보를 최대화해 비지도 방식으로 분해된 표현을 학습하는 InfoGAN 구현
① InfoGAN 구현에 필요한 라이브러리 불러오기
④ 생성한 이미지 저장 함수 구현
② 생성망 모델 구성
∙ 가짜 이미지 생성을 위한 BN-ReLU-Conv2DTranpose 스택
∙ 출력 계층 활성화 함수로는 tanh 대신 sigmoid 함수 사용이 가능한데, sigmi od 함수가 수렴이 더 쉬움
③ 판별망 모델 구성
∙ BN으로는 네트워크가 수렴하지 않으므로 sigmoid를 사용하고 진짜와 가짜를
⑤ 판별망과 적대적 네트워크 훈련 구현
∙ 배치 단위로 판별망과 적대적 네트워크를 교대로 훈련
⑥ 상호 정보 손실 함수 구현
∙ 상호 정보 손실의 방정식, 여기에서 H(c)가 상수라고 가정
⑦ InfoGAN 모델을 구성하는 함수로 훈련 루틴을 호출
∙ InfoGAN 모델(discriminator, generator, infogan_mnist) summary 출력 결과
∙ InfoGAN 생성 결과
평가하기
1. ACGAN은 판별기에서 Real/Fake를 구분하는 하나의 분류기로 구성된 신경망이다.
① O
② X
- 정답 : X
해설 : ACGAN은 판별기에서 Rea/Fake 구분과 Class를 구분하는 두 개의 분류기로 구성된 신경망이다.
2. InfoGAN에서 출력 활성화는 tanh 대신 sigmoid를 사용하는 이유는 sigmoid가 수렴이 잘되기 때문이다.
① O
② X
- 정답 : O
해설 : InfoGAN 출력 활성화를 구현할 때 sigmoid가 tanh보다 수렴이 잘되기 때문이다.
학습정리
1. MNIST 필기체를 생성하는 ACGAN 구현
∙ 두 개의 분류기로 구성된 ACGAN 구현
2. MNIST 필기체를 생성하는 InfoGAN 구현
∙ 입력 코드와 출력 관측 사이의 상호 정보를 최대화해 분해된 표현을 학습하는 InfoGAN 구현
다음 주 예고
“13. 발전된 RNN 모델” 에 대해 학습하겠습니다.