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
- > 두 신경망이 적대적으로 학습되는 형식으로 선명한 데이터를 생성함
- > 최적화가 어렵고 두 개의 신경망이 있으므로 학습에 오래 걸림
- > 생성된 데이터의 다양성이 낮을 수 있음
'03_Deep Leaning > Generation' 카테고리의 다른 글
Generation_조건부 생성 모델을 활용한 다양한 영상 조작 (0) | 2025.01.17 |
---|---|
Generation_조건부 생성 모델 (0) | 2025.01.16 |
Generation_벡터 양자화 변분 오토 인코더(VQVAE & VQVAE-2) (0) | 2025.01.16 |
Generation_변분오토인코더(Variational Autoencoder, VAE) (0) | 2025.01.15 |
Generation_오토인코더(Autoencoder) (0) | 2025.01.15 |