20260404 인공지능기초실습 5주차
생성 모델 (GAN & Diffusion)
1. 생성 모델 개념
- 기존 AI: 입력 → 정답 맞추기 (분류)
- 생성 모델: 입력 없이 새로운 데이터 생성
핵심:
- 데이터의 분포 자체를 학습
- “비슷한 것”을 만들어내는 게 목적
2. GAN (Generative Adversarial Network)
2.1 기본 구조
-
Generator (생성자)
- 랜덤 노이즈(z)를 입력받아 가짜 데이터 생성
-
Discriminator (판별자)
- 입력 데이터가 진짜인지 가짜인지 확률로 판단
핵심 구조:
- G → 가짜 생성
- D → 진짜/가짜 판별
2.2 학습 방식 (게임 구조)
- G 목표: D를 속이기
- D 목표: G를 잡아내기
→ 둘이 경쟁하면서 성능이 같이 올라감
2.3 GAN 목표
- 실제 데이터 분포와 동일한 분포 생성
결론:
- 판별자가 구분 못하면 성공
2.4 수식 (이건 개념만)
- min G / max D 구조 (제로섬 게임)
- 기대값 기반 손실 함수 사용
핵심 해석:
- D: 진짜는 높게, 가짜는 낮게
- G: 가짜를 진짜처럼 보이게
2.5 손실 함수 (Binary Cross Entropy)
- 예측과 실제 차이를 측정
특징:
- 틀리면 손실 급격히 증가
- 확률 기반 계산
3. GAN 문제점
3.1 모드 붕괴 (중요)
- 특정 패턴만 계속 생성
- 다양성 사라짐
원인:
- 생성자가 “속이기 쉬운 패턴”만 찾음
3.2 기타 한계
- 다양한 스타일 생성 어려움
- 학습 불안정
4. Diffusion Model (디퓨전)
4.1 핵심 아이디어
- 이미지를 점점 노이즈로 만들고
- 다시 복원하면서 학습
4.2 과정
Forward Process
- 원본 → 점점 노이즈 추가
Reverse Process
- 노이즈 → 점점 원래 이미지 복원
핵심:
- “노이즈 제거 능력”을 학습
5. GAN vs Diffusion
5.1 학습 방식
- GAN: 경쟁 구조
- Diffusion: 노이즈 제거
5.2 속도
- GAN: 빠름 (한 번에 생성)
- Diffusion: 느림 (여러 단계 필요)
5.3 결과 품질
- GAN: 반복 패턴 많음
- Diffusion: 다양하고 자연스러움
5.4 활용
-
GAN:
- 딥페이크
- 얼굴 생성
-
Diffusion:
- 이미지 생성 AI (Stable Diffusion 등)
6. 실습 코드 흐름 (시험에 자주 나옴)
6.1 데이터 준비
- MNIST 로드
- 정규화 (-1 ~ 1)
6.2 Generator 만들기
- 입력: 노이즈 (100차원)
- 출력: 이미지 (784 = 28x28)
구성:
- Dense → LeakyReLU → Dense → tanh
6.3 Discriminator 만들기
- 입력: 이미지
- 출력: 진짜/가짜 확률
구성:
- Dense → LeakyReLU → Dense → sigmoid
6.4 GAN 결합
- Generator + Discriminator 연결
- Discriminator는 학습 잠금 상태로 사용
6.5 학습 과정 (핵심)
- 가짜 이미지 생성
- 진짜 + 가짜 합쳐서 D 학습
- G 학습 (D를 속이도록)
6.6 결과 출력
- 생성된 이미지 시각화
7. Diffusion 실습
핵심 환경
- Colab T4 GPU 사용
라이브러리
- diffusers
- transformers
- accelerate
흐름
- 모델 로드
- 프롬프트 입력
- 이미지 생성
8. Hugging Face
- AI 모델 공유 플랫폼
기능:
- Models: 사전학습 모델
- Datasets: 데이터셋
- Spaces: 데모
한 줄 정리 (시험용)
- GAN = 생성자 vs 판별자 경쟁 구조
- Diffusion = 노이즈 추가 후 제거하는 방식
- GAN 문제 = 모드 붕괴
- Diffusion 장점 = 다양하고 자연스러운 결과