확산 확률 모델( DPM)
- 확산 모델은 정방향/역방향 과정으로 구성됨
- 디노이징 확산 확률 모델(DDPM)은 현재 더해진 잡음을 추정하는 방식의 목적 함수를 취함
- 생성은 잡음을 점진적으로 제거하는 방식으로 진행되어 매우 느림
- 확산 확률 모델 (Diffusion Probabilistic Model, DPM, 2015)
- 최근 활발히 연구되고 있는 모델 - DPM - 확산과 확률
- 확산이란? → 물질(픽셀 값)이 섞이고 번져가다가 마지막에는 균일한 농도(노이즈)가 되는 현상
- 확산 현상을 시간에 따라 확률적 모델링 : 마르코프 체인 (Markov Chain) 미래는 과거가 아닌 현재에만 의존! - DPM의 구조
- 정방향 확산 (Forward Diffusion Process): 데이터 → 노이즈 (고정)
- 이미지 파괴 과정 = T = 1,000 시점 동안 노이즈를 주입
- 𝛽t 를 시간에 따라 증가하도록 정함 (예시: 𝛽1 = 0.0001 → 𝛽T = 0.02)
- 역방향 확산 (Reverse Diffusion Process): 데이터 ← 노이즈 (학습)
- 이미지 생성 과정 = 노이즈를 제거하는 과정 은 계산 불가 (모든 데이터 x0 를 고려해야 함)
- 𝛽t 가(노이즈가) 작을 때 정규분포로 근사 가능!
- 정규분포 근사
- 매 시점 마다 정규분포 형태를 가짐 (정방향 확산과 유사) - DPM의 손실 함수
- VAE와 유사하게 로그 가능도의 하한을 최대화!
- L0 : 재구성(Reconstruction)이 잘 되는가? (x0 → x1 → x0 ) (VAE reconstruction 과 동일)
- 두 정규분포 사이의 쿨백-라이블러 발산 계산
- 정방향 확산에서 t 시점 노이즈를 제거한 평균과 역방향 확산 평균의 평균제곱오차(MSE) - VAE와 다른 점
- 잠재 변수의 차원이 모두 데이터의 차원과 동일! + 여러 단계의 잠재 변수를 가짐
- 디코더를 모든 시점에서 공유 + 인코더는 학습되지 않음 (미리 정해둔 크기(𝛽ₜ )의 노이즈를 삽입해나감)
디노이징 확산 확률 모델 (DDPM)
- 디노이징 확산 확률 모델(Denoising DPM, DDPM, 2020)
- 손실 함수를 간단한 형태로 정리함 : LT ≈ 0 이 되도록 𝛽ₜ 를 설정함 → LT 무시
- Lt-1 : 재매개변수화를 이용해 데이터 x t를 x0와 노이즈 𝜀 로 표현
- 최종 손실 함수: t 시점에 추가된 노이즈를 잘 예측하는가? - DDPM의 구조
- 노이즈 예측: U-net 구조
- t 시점 주입: 사인 곡선적 포지션 임베딩 (Sinusoidal Position Embedding) - 생성 과정
- 노이즈 xT 를 표준정규분포에서 샘플링
- for t = T, …, 1:
- x t 가 주어졌을 때 모델 로부터 x t-1 샘플링 - 생성 결과
- t 가 클 때: 핵심적인 특징을 담고 있음
- t 가 작을 때: 세부적인 특징을 담고 있음
-> 고해상도 이미지 생성 가능 (T = 1,000) - DDPM의 한계점
- 느린 생성 과정: 5만개의 32x32 크기 이미지 생성 위해 20시간 필요
- 조건부 생성 불가
- DDPM은 Unconditional 모델 (조건 없는 모델)
- 품질-다양성 조절 불가
생성 과정 과속화
- DDIM (Denoising Diffusion Implicit Model, 2021)
- DDPM과 같은 손실 함수를 가지며 T = 1,000 시점에 대해 동일하게 학습 - DDPM과 마르코프 체인 (Markov Chain)
- 샘플링 과정에서 마르코프 체인이 등장함
- 잡음이 조금 덜 낀 샘플을 더 심한 샘플과 모델이 이를 통해 구한 노이즈로 추정
- 마르코프 체인 (Markov Chain) : 미래는 과거가 아닌 현재에만 의존함 (현 상태는 직전 상태에만 영향을 받음)
- 더 먼 과거는 이미 직전 과거에 반영이 되어있음 - DDPM에서 DDIM으로
- 학습은 DDPM 처럼 그러나 빠른 sampling을 원함 -> DDPM이 활용하는 중요 특성을 만족해야함
- 특성을 만족하는 정방향 함수를 정의함 - DDIM의 생성 과정
- 생성 시 노이즈를 추가하지 않는 방법 제안: p𝜃 (x1 | x3 ) 에서 분산을 0으로 생각
- 랜덤성은 오직 표준정규분포를 따르는 노이즈 xT 에만 존재 - DDIM의 영상 생성
- T=1000 으로 학습된 모델의 DDIM을 활용한 20, 50, 100 step sampling
- 노이즈 공간에서의 내삽(Interpolation) 가능
- 노이즈 xT 2개(양 끝)를 샘플링 → 내분점들을 역방향 확산 - Denoising Diffusion GANs (2022)
- DDPM의 핵심 = 노이즈가 작을 때 q(x t-1 |x t ) 는 정규분포로 근사 가능 → 노이즈가 크다면?
- 시점이 0에 가까울수록 디노이징 분포가 정규분포보다 복잡해짐
- 적은 시점(T ≤ 8)을 사용하기 위해 조건부 GAN을 활용하여 복잡한 디노이징 분포를 학습
- 적대적 학습으로 t 시점의 데이터 x t 가 주어졌을 때 t-1 시점의 데이터 x t-1 의 분포 학습 q(x t-1 | x t ) ≈ p𝜃 (x t-1 | x t ) - Progressive Distillation (2022)
- 학습된 확산 확률 모델로부터 시점을 절반으로 줄이는 경량화된 모델을 반복적으로 학습
- 이웃한 2개의 역방향 확산 과정을 하나로 합침 - Consistency Model and Distillation (2023)
- 학습시 모든 Time Step에 대해 동일한 결과를 내도록 학습을 진행함
- 이를 Pretrained Diffusion Model에 적용, Distillation을 진행할 수 있음 - Latent Consistency Model (2023)
- 1 step to 8 steps
조건부 생성 DPM
- 조건부 DPM
- 정방향 확산은 고정
- 역방향 확산(생성 과정)에서 조건 추가 - Guided Diffusion (2021)
- t 시점 데이터 x t 로부터 클래스 y 를 예측하는 분류기 p𝜙 (y|x t , t) 를 사전학습
- 생성 과정에서 분류기의 그래디언트(= 로그 예측 확률이 가장 가파르게 증가하는 방향)를 따라 이동
- 분류기 그래디언트의 스케일이 중요! → 얼마나 해당 클래스의 정보를 주입할 것인가?
- 스케일을 조절하면 클래스를 유지하도록 생성 가능
- 단점: 분류기를 추가 학습해야 함 - Classifier-free Diffusion Guidance (2021)
- 분류기를 베이즈 정리를 활용하여 대체함
- 확산 확률 모델과 조건부 확산 확률 모델을 함께 학습함 (학습할 때 랜덤하게 클래스를 버림)
- 생성할 때 두 모델에서 예측한 노이즈의 가중합 계산 - Fast Sampling – Training-free / Training-based
- Conditional Model – Classifier-based / Classifier-free
잠재 확산 모델 =Latent Diffusion Model (LDM)
- 입력과 출력을 잠재 공간으로 매핑 후 학습해, 높은 품질의 영상을 효율성 높게 학습, 생성함
- 일반 생성 외에도 텍스트, Layout, 가려진 이미지 등 다양한 조건 기반의 생성이 가능함
- 현재 가장 활발히 활용, 연구되는 모델
잠재 공간에서의 연산의 필요성과 장점
- 고해상도 이미지 생성
- 고해상도 이미지 생성 분야의 문제
- 고해상도 이미지 처리는 많은 양의 계산 자원을 필요로 함
- 단순 계산량의 문제를 넘어 에너지, 탄소 문제까지 도달할 수준에 이름
- 고해상도 이미지 생성 분야의 문제
- 확산 모델은 훈련 과정 뿐 아니라 추론 과정에서도 많은 자원이 필요
- 고차원 이미지 공간 (Channel ⨉ Height ⨉ Width)에서 계속해서 반복적인 계산을 동반
- 성능을 유지하며 계산 자원을 줄일 수 있다면 접근성이 높아질 것
- 알아차리기 어려운 부분에 모델이 큰 힘을 쏟는 문제 - 픽셀 공간에서 잠재 공간으로
- 기존의 확산 모델들은 고차원 이미지 공간에서 연산을 반복함
- 이미지의 정보를 유지한 채로, 차원을 축소할 수 있다면 계산 복잡도를 감소시킬 수 있음
- 영상 생성은 인지적 압축 과정과 의미적 압축으로 대략적 구분이 가능함
- 인지적 압축: 과도한 세부 사항을 제거하며 핵심적인 특징을 잠재 표현으로 요약
- 의미적 압축: 데이터의 의미적, 구조적 특징을 학습
- 확산 모델의 정방향, 역방향 확산 과정을 이미지 공간이 아닌 오토 인코더의 잠재 공간에서 진행
- 재건된 이미지와 실제 이미지를 패치 단위로 판별하는 적대적 오토 인코더 (Autoencoder + GAN) 활용 - 잠재 확산 모델
- 실제 이미지의 고차원 공간이 아닌 잠재 공간에서 노이즈 연산을 반복하도록 설계 - 잠재 확산 모델의 구조
- 확산 과정의 대상 = 이미지 x 가 아닌 잠재 표현 z = 과도한 세부 사항들을 제거한 것
- z 는 1차원 벡터가 아닌 이미지와 동일한 차원 (Channel x Height x Width) → 이미지의 공간 정보를 더 잘 보존
- 기존 확산 모델보다 계산, 시간 자원 모두 효율적 - 변분 오토 인코더와 확산 모델 훈련
- 잠재 확산 모델을 훈련하기 위해서는 두 가지 학습 단계가 필요하며, 이는 순차적으로 진행돼야 함
1. 좋은 잠재 공간을 얻기 위해 변분 오토 인코더를 학습하는 과정
2. 얻어진 잠재 공간으로부터 확산 모델을 학습하는 과정 - 사전 훈련: 벡터 양자화 변분 오토 인코더
- 재건된 이미지를 가짜 이미지로 두어 실제 이미지와 판별하는 과정 포함 (VQ-GAN)
- 잠재 확산 모델의 생성 과정: 확산 모델의 출력을 벡터 양자화한 후 디코더 D 로부터 이미지 생성 - 확산 모델 훈련
- 확산 모델과 동일하게 노이즈 예측 모델 훈련
- 노이즈 주입의 대상이 입력 이미지가 아닌 잠재 표현인 점이 기존 확산 모델과의 차이 - 결과 분석
- 기존 확산 모델보다 계산 복잡도가 감소했음에도 고해상도 이미지를 잘 생성해냄
- 잠재 공간의 연산이 노이즈 감소와 의미에 집중하는 역할을 충실히 수행했다고 볼 수 있음
잠재 확산 모델을 활용한 Stable Diffusion 모델 - 조건부 생성
- 잠재 확산 모델을 이용한 Text-to-Image
- 잠재 확산 모델은 확산 모델과 마찬가지로 다양한 조건부 생성이 가능
- Text-to-Image, 초고해상도 이미징, 인페인팅 등 - Text-to-Image: 텍스트 인코더
- 잠재 확산 모델은 텍스트 인코딩을 위해 CLIP 의 텍스트 인코더를 활용 - Text-to-Image: 텍스트 인코더 = CLIP
- 텍스트 입력이 추가되는 경우, 텍스트 인코더를 사전 훈련하는 단계가 필요함
- CLIP은 텍스트와 이미지 간의 대조 학습을 통해 훈련
- 텍스트-이미지 쌍에 대한 이해가 높은 모델 - Text-to-Image: 확산 모델과의 차이
- 텍스트 정보와 노이즈화된 잠재 표현의 관계성 학습을 위해 Cross-attention (교차 어텐션)을 추가
- Cross-attention의 대상이 텍스트-이미지가 아니라 텍스트-잠재 표현임을 주목 - Text-to-Image 모델의 문제점
- text 설명 만으로 정확히 원하는 대상을 얻어내기 어려움
확산 모델의 개인화 (Personalization)
- 우리가 원하는 대상에 관한 사진이 일부 있을 때 피사체에 대한 새로운 이미지를 텍스트로부터 생성하는 방법
- 거대 모델로 하여금 원하는 객체를 생성할 수 있게하는 기술
- 적게는 5장 이하의 데이터만으로도 목표를 달성할 수 있음
- LoRA 와 함께 사용할 수도 있으며 다양한 기술은 동시에 활용되는 경우도 있음
- 텍스트 반전 (Textual Inversion, 2022)
- 학습 데이터: 우리가 원하는 대상에 관한 이미지 3~5개
- Textual Inversion: 생성 이미지로부터 하나의 단어 임베딩을 학습하는 방법
- LDM의 손실함수로부터 S* 의 임베딩 v* 학습 (텍스트 트랜스포머, LDM은 고정)
- 새로운 단어 S* 는 물체 또는 스타일을 의미하게 됨 - 드림부스 (DreamBooth, 2022)
- 사전학습된 text-to-image 확산 모델 중 U-net을 미세 조정(Fine-tuning)
- 파인 튜닝의 문제점
- 언어 드리프트(Drift): 대상과 동일한 클래스의 이미지를 생성하는 방법을 천천히 잊어버림
- 다양성: 포즈와 각도 등이 새로운 학습 이미지에 과적합될 수 있음
- 텍스트 임베딩에서 우리가 원하는 대상을 구분하려면?
- 대상의 클래스를 지정하고 “[식별자] [클래스]” 로 텍스트 작성 (ex. [백경준의] [강아지])
- 식별자는 영어 단어 대신 3글자 정도의 임의의 문자로 작성
- 새로운 손실함수 도입
- Reconstruction Loss: “[식별자] [클래스]” 텍스트를 조건부로 노이즈에서 이미지를 잘 생성하는가?
- Prior Preservation Loss: 기존 클래스의 생성 이미지가 새로운 클래스 이미지에 영향받지 않고 잘 유지되는가?
- Textual Inversion보다 다양한 작업 수행 가능 - 로라 (Low-Rank Adaptation, LoRA, 2021)
- 자연어 처리 모델의 파인튜닝에 활용하는 기법인 LoRA 활용
- Text Encoder 또는 Unet의 Cross-Attention 레이어에 LoRA 기법을 적용하여 파인튜닝
- 기존 가중치는 유지하고 가중치 변화량을 학습함 → 기존 학습 결과를 잊지 않는 효과
- 가중치 변화량을 행렬 2개의 곱으로 분해 → 학습 파라미터 수가 대폭 감소 (r = 4)
- 파인튜닝의 경우 아주 작은 수의 파라미터를 업데이트하는 것만으로 좋은 성능을 보임
- 학습 데이터: 우리가 원하는 대상에 관한 이미지 10~15개
- DreamBooth와 함께 사용 가능 - ControlNet (2023)
- 다양한 structural input을 조건으로 주기 위한 방법
- 추가적인 layer를 학습해, U-Net은 유지하고 차이를 추가하는 방법 - Face0 (2023)
- 사람 얼굴을 조건삼아, 동일한 얼굴의 다양한 결과를 생성하는 기법
- 얼굴에서 특징을 추출, 텍스트 표현과 함께 모델에 제공함 - IP-Adapter (2023)
- Text 뿐만 아니라 이미지 feature를 함께 입력받아 그에 맞게 적절히 생성해낼 수 있게 함
- 별도의 cross-attention layer를 두어 따로 학습함 - Imagic (2023)
- 텍스트만을 활용한 의미적 편집 수행 - Perfusion (2023)
- Attention 의 key를 활용해 여러 객체를 동시에 개인화 수행
'Study > 머신러닝' 카테고리의 다른 글
자연언어처리 - 언어학 (0) | 2025.01.10 |
---|---|
자연언어처리란? (1) | 2025.01.10 |
적대적 생성 신경망(Generative Adversarial Networks) (0) | 2025.01.09 |
Generation-오토 인코더 (0) | 2025.01.09 |
Generation-생성 모델 평가지표 (0) | 2025.01.09 |