개발자로 후회없는 삶 살기
[22.09.15] GAN PART.훈련과정 본문
서론
GAN의 전체 시스템을 알았으니 두 네트워크의 비용함수를 이용한 훈련과정을 보겠습니다.
본론
- GAN의 훈련이란?(생성자 중심)
훈련 데이터 셋의 이미지는 화면에 그려질 때 행렬에 있는 픽셀 값이 이미지의 모든 시각적 요소를 표현합니다.(선, 이미지, 곡선 등)
+ 이 값들은 데이터 셋에 있는 각 이미지에 복잡하게 걸쳐 있는 어떤 분포를 따릅니다. ※ 어떤 분포도 따르지 않는다면 그 이미지는 랜덤한 잡음과 다를 바 없습니다.
-> 이 분포를 흉내 내는 샘플을 만드는 것이 생성자가 훈련을 하는 이유입니다.
- 비용함수
비용함수란 : 그림을 보고 이해했을 때는 손실 함수를 가리킨다.(U자 그래프) -> 하지만 모두 최소화되는 게 좋은 것입니다. ∴ 생성자의 비용함수도 최소가 좋은 것입니다.
+ 한 네트워크의 비용함수를 줄이는데 두 훈련 파라미터가 도입됩니다. 하지만 각 네트워크는 자신의 가중치와 절편만 튜닝 가능합니다.
- 훈련과정
일반적인 신경망은 U자 그래프를 최적화하면 훈련이 완료됩니다. > 근데 GAN은 자신의 파라미터만 튜닝하고 상대방의 파라미터는 튜닝할 수 없기 때문에 내시 균형이 되면 훈련 완료입니다.
+ 수학적으로
-> 생성자의 훈련 파라미터 Θ에 대한 생성자의 비용 함수 J가 최소화되고 동시에 판별자의 파라미터 Θ에 대한 판별자의 비용함수 J가 최소화될 때 균형이 일어납니다.
-> 판별자는 Θ1를 튜닝하여 V를 최소화합니다. > 생성자는 Θ2를 튜닝하여 -V를 최소화(V를 최대화)합니다.
★ 두 네트워크의 상충되는 목적(첫걸음 2주차 11이다.) :
판별자 : D(x) = 1, D(x)=0/ 생성자 : 생성자 : D(x)=1
- 모델 구현
1. 생성자와 판별자를 Sequential 모델로 구현하고 return 하여 내보내면 나중에 add로 합칠 수 있습니다.
2. 생성자와 판별자를 구현할 때 Leaky Relu를 많이 씁니다.
3. 판별자의 입력인 생성자가 만든 이미지와 진짜 이미지의 범위를 맞춰줘야 합니다. ex) -1 ~ 1
4. train_on_batch라는 keras API로 훈련을 할 수 있습니다.
'[AI] > [네이버 BoostCamp | 학습기록]' 카테고리의 다른 글
[22.09.26] GAN PART.CGAN, CycleGAN (0) | 2022.12.27 |
---|---|
[22.09.23] GAN PART.최신 GAN 기술 (0) | 2022.12.27 |
[22.09.13] GAN PART.GAN 시스템 (0) | 2022.12.27 |
[22.08.16] 딥러닝 PART.Batch Normalization (0) | 2022.12.27 |
[22.02.11] 딥러닝 PART. 밑바닥부터 시작하는 딥러닝 발제 (0) | 2022.12.27 |