본문 바로가기
개발/Python

이미지 생성형 AI 모델

by 피로물든딸기 2025. 10. 6.
반응형

전체 링크

 


AutoEncoder (AE)

- 입력 이미지를 압축(latent space)하고 다시 복원하는 자가 지도 학습 모델

- 데이터의 레이블이 없는 상태에서 입력 데이터의 특징을 추출

- 데이터 압축, 차원 축소, 노이즈 제거, 이상 탐지, 데이터 생성에 사용

- 목표 : 입력과 출력 이미지의 재구성 손실(reconstruction loss) 최소화

- 입력 데이터에 노이즈를 주고, 노이즈가 없는 상태를 출력하도록 학습 (→ 노이즈 캔슬링에 응용)

 

구조 

- Encoder → Latent Vector → Decoder

- 인코더는 점점 유닛을 줄여 병목층을 형성, 디코더는 원래 데이터 형태에 맞게 층의 유닛을 늘림.

 

장점

- 구조가 단순하고 구현 용이

- 차원 축소, 특징 추출, 노이즈 제거(denoising) 등에 활용 가능

 

단점

- 생성 모델로서 품질이 낮음 → 출력이 흐릿하거나 디테일 부족

- 잠재 공간(latent space)이 구조화되어 있지 않아 샘플링이 어려움

- Latent space 크기 제한이 없을 경우 Identity Mapping 문제 발생 가능

 

* Identity Mapping Problem : "입력 = 출력"만 달성하려고 하면서 아무런 의미 있는 특징을 학습하지 않는 문제

 

학습 안정화 방법

- 일반적으로 MSE, L1, SSIM 등의 손실 함수 사용

- Batch Normalization, Dropout 등 일반적인 학습 안정화 기법 적용


Variational AutoEncoder (VAE)

- AE의 확률적 확장

- Encoder가 입력을 잠재 분포(latent distribution)로 매핑 → Decoder가 샘플링된 latent로 이미지 생성

- 이미지 생성, 데이터 보간, 노이즈 제거, 이상 탐지에 사용

- 확률적 특성으로 미분이 어려움 → 재매개변수화 트릭 사용

- 손실 함수: 재구성 손실 + KL divergence

 

장점

- 잠재 공간이 연속적이고 구조화되어 있음 → 새로운 샘플 생성 가능

- 안정적 학습 (재구성 품질이 GAN보다 떨어질 수 있음)

- Mode Collapse 문제가 적음 (GAN 대비)

 

단점

- 생성 이미지가 다소 흐림

- 복잡한 분포 학습 시 디테일이 부족

- KL term이 지나치게 크면 Posterior Collapse 발생 가능

 

* Posterior Collapse : 사후분포 붕괴, Encoder가 아무 의미도 없는 잠재 분포를 학습해버리는 현상

ㄴ latent vector가 입력 데이터와 상관없이 특정 고정 분포(예: N(0, I))로 수렴

 

학습 안정화 방법

- KL divergence와 reconstruction loss의 가중치 조절 (β-VAE)

- Encoder/Decoder 구조 최적화, BatchNorm 사용


Generative Adversarial Networks (GAN)

- 적대적 학습(adversarial training) 기반 생성 모델

- 구조 : Generator vs Discriminator

- 목표 : Generator는 현실같은 이미지를 생성하고, Discriminator는 가짜 / 진짜를 구분

- Generator는 실제 이미지를 입력 받지 않고, 점진적으로 그럴듯한 가짜 이미지를 만드는 법을 배운다.

- Generator의 입력은 Discriminator를 통해 전달되는 그레디언트

 

장점

- 고품질, 사실적인 이미지 생성 가능

- 다양한 변형: DCGAN, StyleGAN, CycleGAN 등

 

단점

- 학습 불안정, Mode Collapse 문제 (Adam, RMSProp)

- Hyperparameter와 구조 설계에 민감

 

학습 안정화 방법

- Wasserstein GAN (WGAN) → 학습 안정화 및 Mode Collapse 완화

- Gradient Penalty 적용 (WGAN-GP)

- Label smoothing, Spectral Normalization

- Generator와 Discriminator 학습 균형 조절, 배치 정규화 (생성자 출력 층, 판별자 입력 층 제외)

- Generator 풀링 층을 전치 합성곱으로, Discriminator의 합성 곱을 스트라이드 합성곱으로 교체

- 깊은 층을 위해 쌓은 완전 연결 은닉 층 제거

- 출력층만 tanh 함수 사용, 그 외 Generator는 ReLU 함수 사용

- DiscriminatorDML의 모든 층은 LeakyReLU 사용


Diffusion Model

- 점진적 노이즈 추가 → 노이즈 제거 과정으로 이미지 생성

- Forward process: 이미지를 점진적으로 Gaussian noise로 변환

- Reverse process: 학습된 모델로 노이즈를 제거하며 샘플 생성

 

장점

- 매우 고품질 이미지 생성

- GAN보다 Mode Collapse 없음 (더 쉬운 훈련)

- 텍스트 조건부 생성 가능 (예: Stable Diffusion, DALL·E2)

 

단점

- 역방향 확산 과정에서 샘플링 속도가 느림 (수백~수천 단계 필요)

- 학습 비용이 매우 높음

 

학습 안정화 방법

- Noise schedule 조정

- Variance scheduling, Classifier-free guidance

- Stable optimization (AdamW, gradient clipping 등)


학습 안정화 vs 과대적합

학습 안정화학습 과정의 문제이고, 과대적합학습 결과(성능)의 문제

 

학습 안정화 (Stable Training)

- 모델이 학습 과정에서 불안정하지 않고 안정적으로 수렴하도록 만드는 것

- 주로 GAN 같은 경쟁적/복잡한 모델에서 강조됨

 

특징

- Gradient가 잘 흐르고 폭발/소실이 없음

- Loss가 발산하지 않고 점진적으로 수렴

- Generator와 Discriminator가 균형 잡힌 경쟁

- 모드 붕괴(Mode Collapse)가 최소화

 

목적

- 학습 과정 자체를 안정화

- 모델이 올바르게 학습하도록 보장

 

과대적합 (Overfitting)

- 모델이 학습 데이터에 너무 치중하여 훈련 데이터만 잘 맞고, 새로운 데이터에는 성능이 떨어지는 현상

 

특징

- Train loss는 매우 낮지만 Test loss는 높음

- 모델이 데이터의 노이즈까지 학습 → 일반화 성능 저하

- 복잡한 모델, 작은 데이터셋에서 자주 발생

 

목적

- 모델이 훈련 데이터에만 최적화되지 않도록 일반화

- 데이터 증강, 정규화, Dropout 등으로 완화 가능


반응형

'개발 > Python' 카테고리의 다른 글

Batch Normalization vs Layer Normalization  (0) 2025.10.08
과대적합 해결 방법  (0) 2025.10.08
주요 합성곱 신경망  (0) 2025.10.06
경사 하강법, 옵티마이저  (0) 2025.10.06
활성화 함수  (0) 2025.10.06

댓글