Deep Learning

Deep Learning Study (12) / 2024.11.08

JHDeveloper 2024. 11. 8. 17:04

GAN 학습 과정

  1. Discriminator 학습
    1. 진짜 데이터를 진짜로 분류하도록 학습
    2. Generator가 생성한 데이터를 가짜로 분류하도록 학습
  2. Generator 학습
    1. 초기에는 Discriminator 학습을 위한 가짜 데이터 생성
    2. 분류모델을 속이는 방향으로 생성모델을 학습

 

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값 = -무한대