03_Deep Leaning/Generation

Generation_ GANs적대적 생성 신경망(Generative Adversarial Networks)

jiniby 2025. 1. 16. 18:03

1️⃣ GANs 소개 / 적대적 생성 신경망 (Generative Adversarial Networks, GANs)

 

☑️ 적대적 생성 신경망 (Generative Adversarial Networks, GANs)

● Generative (생성) / Adversarial (적대적) / 신경망 (Networks)

●적대적으로 학습하는 신경망들로 구성되며, 생성 모델로써 활용함

 

☑️ 생성 모델 관점에서의 VAE vs. GANs

● VAE의 생성 방식: 입력 분포를 근사하는 과정에서 규제 (Regularization)을 주며 데이터를 생성

● GANs의 생성 방식: 생성된 데이터와 실제 데이터를 판별하고 속이는 과정을 거치며 생성 모델을 개선

 

2️⃣ GANs 구조와 학습

☑️ GANs 구조

●데이터를 생성하는 생성 모델 (Generator)과 데이터의 진위를 구별하는 판별 모델 (Discriminator)로 구성

○생성 모델: 임의의 노이즈를 입력으로 받아 생성된 데이터를 출력

☑️ GANs 목적

● GANs는 생성 모델의 분포와 판별 모델의 예측을 지속적으로 갱신하면서 학습됨 (학습 과정에서 (a) → (d)로 바뀜)

●검정색 점선: 입력 데이터 분포; 파란색 점선: 판별 모델의 예측; 초록색 실선: 생성 모델의 분포

● x 수평선: 입력 데이터 분포의 일부; z 수평선: 샘플링되는 도메인

 

☑️ GANs 훈련과정

(a)임의의 초기 분포로부터 생성 모델이 데이터를 생성

(b)판별 모델이 분류; 판별 모델 갱신

(c)갱신된 판별 모델을 고정; 생성 모델 갱신

(d)반복 과정을 거쳐 생성 모델은 판별 모델이 구별할 수 없는 수준의 데이터를 생성

☑️ GANs 목적함수

● GANs는 생성 모델과 판별 모델 두 개의 모델로 구성, 둘은 적대적으로 학습됨 (min & max)

○ Two-Player Zero-Sum Game

 

loss 계산시 sigmoid를 통하면 D의 출이 매우작아지거나 커지는것 방지

 

☑️ GANs 목적함수의 최적

 

☑️ GANs 학습방식

●두 모델이 서로 적대적인 방향으로 훈련

●적대적 학습: 생성 모델은 판별 모델의 출력값을 최소화; 판별 모델은 출력값을 최대화

●손실 함수의 최소화 문제: 기울기 하강 ⇔ 최대화 문제: 기울기 상승

 

☑️ GANs 학습 in Practice

● GANs 목적 함수는 실제로 잘 동작하지 않음 → 생성된 데이터 G(z)에 대한 판별 모델의 기울기 문제

○학습이 필요한 구간에서 더 평평한 기울기를 가짐: 역전파 시에 더 약한 신호가 전달

●판별 모델의 기울기를 조정하면 학습이 더 잘 될 것 = 평평한 기울기를 가파르게

○생성자 기준에서 판별 모델이 정답을 맞출 가능성을 최소화하는 것 대신, 틀릴 가능성을 최대화

● 모드 붕괴 (Mode Collapse) 현상이 발생할 수 있음

○판별 모델을 속일 수 있는 일부 데이터만을 계속해서 생성하는 현상

 

☑️ 다양한 손실 함수에 대해 일반화 f-GANs

●두 개의 모델을 학습하는 것은 굉장히 불안정하며 여전히 풀어야 할 문제

○학습에 유리한 목적 함수를 찾는 것

 

☑️ GANs 학습: 의사 코드; 판별모델의 업데이트 

k step -> discriminator 여러번 어뎁이트 할수 있음 / 먼저 k 키워서 discriminator 좋게 만든후 좋은 가이드 생설

실제로는 k를 대게 1로 둠 / 

 

☑️ StyleGAN-3 (Alias-Free GANs)

●계층 구조의 GANs

☑️  VAE와 GANs의 생성 결과 비교

 

GANs

- > 두 신경망이 적대적으로 학습되는 형식으로 선명한 데이터를 생성함

- > 최적화가 어렵고 두 개의 신경망이 있으므로 학습에 오래 걸림

- > 생성된 데이터의 다양성이 낮을 수 있음