Deep Learning
Deep Learning Study (12) / 2024.11.08
JHDeveloper
2024. 11. 8. 17:04
GAN 학습 과정
- Discriminator 학습
- 진짜 데이터를 진짜로 분류하도록 학습
- Generator가 생성한 데이터를 가짜로 분류하도록 학습
- Generator 학습
- 초기에는 Discriminator 학습을 위한 가짜 데이터 생성
- 분류모델을 속이는 방향으로 생성모델을 학습
GAN 구조
Generator
: 노이즈를 입력으로 받아 다수의 층을 통과하면서 특징 맵을 확장시켜나가는 구조 (U-Net 구조를 따름) → 마지막 층을 통과해서 나오는 특징 맵은 이미지 크기와 같음. (생성이 목표이기 때문에)
Discriminator
: 특징맵의 크기를 줄여나가는 구조 (구별이 목표이기 때문에 핵심만 잘 기억해두면 됨)
손실함수
: MinMax Loss Function = Adversarial Loss Function
- G는 손실 함수 최소화
- D는 손실 함수 최대화
⇒ 생성자와 판별자 간의 경쟁을 기반으로, 둘 다 최적화에 참여하는 손실 함수.
(G와 D 모두 동일한 손실 함수 공유 -> 서로 반대 목표를 향해 학습)
- x : 진짜 데이터
- z : 무작위 노이즈 벡터 → 생성자에게 주어 가짜 데이터 생성하게 함
(노이즈 = 특별한 의미를 가진 정보가 아니라 무작위로 선택된 값을 의미)
- D : x를 진짜로, G(z)를 가짜로 구별하기
- G : z에서 시작해 진짜같은 가짜 데이터 만들기
- D(x) : D가 진짜 데이터 x에 대해 진짜일 확률 예측
- D(G(z)) : 생성자가 만든 가빠 데이터 G(z)에 대해 D가 진짜라고 생각하는 확률 → 1-D(G(z)) = 가짜로 생각하는 확률
- E : 기대값
- Ex∼pdata : 진짜 데이터 분포에서 x를 샘플링해서 평균적으로 진짜라고 판별하는 정도 계산
- Ez∼pz : 노이즈 분포에서 z를 샘플링해서 평균적으로 가짜라고 판별하는 정도 계산
❓로그를 사용하는 이유
: 값이 커질수록 기울기 줄어듬 → 판별자가 진짜와 가짜를 구분하는 능력을 최대화하려는 방향으로 설계된 식이기 때문에 0에 가까울 때 기울기가 급해져 손실에 크게 반응, 확률 예측이 1에 가까울 때 기울기가 커져 손실에 적게 반응
→ Discriminator에 들어갈 때 사용되는 수식
→ Generator에 들어갈 때 사용되는 수식
⇒ max값 = 0 / min값 = -무한대