콘텐츠로 이동

10. 확산 모델

이 장의 질문

잡음뿐인 상태에서 어떻게 데이터와 닮은 샘플을 만들어 낼까?

확산 모델은 데이터에 잡음을 조금씩 더해 단순한 분포로 만드는 정방향 과정을 정한다. 그런 다음 이 과정을 거꾸로 따라가며 잡음에서 데이터를 복원하는 방법을 학습한다. 복잡한 샘플을 한 번에 만드는 대신 여러 잡음 수준에서 조금씩 잡음을 없애는 문제로 바꾸는 셈이다. 정방향 잡음 추가와 학습된 역방향 과정, 훈련과 샘플링, 목적 함수와 잡음 제거기의 역할을 구분하고 스코어, DDIM, 유도(guidance), 잠재 확산의 위치를 살펴본다.

읽기 수준과 선수지식 확인

읽기 전에 확인할 내용

  • 가우스 잡음, 평균과 분산
  • 조건부기댓값의 직관
  • 입력에 대한 로그 밀도 기울기의 직관
  • 9장의 데이터 분포와 생성

5장의 CNN과 U-Net, 7장의 트랜스포머를 알면 잡음 제거기의 구조를 이해하는 데 도움이 된다. 이 장의 핵심을 따라가는 데 필수는 아니다. 마르코프 연쇄와 확률미분방정식도 이름과 역할만 알아두면 된다.

1. 왜 노이즈를 추가하는가

고차원 데이터 분포에서 직접 샘플을 뽑는 일은 어렵다. 반면 표준 가우스 노이즈에서는 샘플을 쉽게 뽑을 수 있다. 확산은 데이터 분포와 노이즈 분포 사이에 많은 중간 단계를 만든다.

정방향 과정은 깨끗한 데이터 \(x_0\)에 작은 가우스 노이즈를 반복해서 더해 \(x_1, x_2, \ldots, x_T\)를 만든다. 충분히 큰 \(T\)에서 \(x_T\)는 데이터의 세부 구조를 거의 잃고 가우스 노이즈에 가까워진다.

한 단계의 대표적인 형태는 다음과 같다.

\[ q(x_t \mid x_{t-1}) = \mathcal{N}\!\left( \sqrt{1-\beta_t}\,x_{t-1}, \beta_t I \right) \]

\(\beta_t\)는 각 단계에서 추가하는 노이즈 양을 정하는 노이즈 일정의 일부다. 실제 학습에서는 반복 과정을 모두 실행하지 않고, 선택한 \(t\)의 잡음이 섞인 샘플 \(x_t\)를 \(x_0\)에서 직접 만들 수 있는 닫힌 형태를 사용한다.

2. 역과정은 학습해야 한다

정방향 잡음 추가는 사람이 정한 과정이다. 생성하려면 반대로 노이즈 \(x_T\)에서 시작해 조금씩 더 깨끗한 \(x_{T-1}, \ldots, x_0\)를 만들어야 한다. 이 역방향 조건부 분포는 알 수 없으므로 신경망이 근사한다.

모델은 잡음이 섞인 입력 \(x_t\)와 시간 단계 \(t\)를 받는다. 시간 단계는 현재 샘플에 잡음이 얼마나 섞였는지를 알려준다. 텍스트나 범주 같은 조건 \(c\)가 있다면 함께 입력할 수 있다.

\[ \epsilon_\theta(x_t,t,c) \]

대표적인 DDPM 학습에서는 신경망이 \(x_t\)에 섞인 노이즈 \(\epsilon\)을 예측하도록 한다.

\[ \mathcal{L}_{\text{simple}} = \mathbb{E}_{x_0,\epsilon,t} \left[\lVert \epsilon-\epsilon_\theta(x_t,t,c) \rVert_2^2\right] \]

데이터 \(x_0\) 자체를 예측하거나, 노이즈와 데이터를 결합한 속도형 목표값을 예측하는 매개변수화도 있다. 목표값이 달라도 목적은 각 노이즈 수준에서 깨끗한 방향에 대한 정보를 학습하는 것이다.

깨끗한 데이터에 잡음을 더하는 정방향 과정과 순수 잡음에서 데이터를 복원하는 역방향 생성 과정
정방향 과정은 미리 정한 잡음 일정이고, 역방향 생성은 학습한 예측을 반복해서 사용한다. 훈련과 생성에서 신경망을 호출하는 방식도 다르다.

3. 훈련과 생성은 다른 절차다

이 구분은 확산을 이해하는 핵심이다.

훈련

  1. 훈련 데이터에서 \(x_0\)를 고른다.
  2. 시간 단계 \(t\)와 가우스 노이즈 \(\epsilon\)을 샘플한다.
  3. \(x_0\)와 노이즈로 \(x_t\)를 직접 만든다.
  4. 신경망이 목표값인 노이즈, 데이터 또는 속도를 예측한다.
  5. 예측 오차를 역전파해 매개변수를 갱신한다.

훈련 사례 하나를 만들기 위해 매번 전체 역방향 연쇄를 끝까지 실행할 필요는 없다.

생성

  1. 가우스 노이즈 \(x_T\)에서 시작한다.
  2. 신경망 예측을 이용해 잡음이 한 단계 덜 섞인 샘플을 계산한다.
  3. 정한 시간 단계나 수치 풀이법 일정을 따라 반복한다.
  4. 마지막 \(x_0\) 근처의 결과를 출력 샘플로 사용한다.

생성은 신경망을 여러 번 호출하므로 한 번에 생성하는 디코더보다 느릴 수 있다. 샘플링 단계 수와 각 단계의 비용을 함께 보고 비교해야 한다.

핵심 흐름 펼쳐보기: 스코어, 샘플러, 조건부 생성

4. 스코어는 확률밀도가 증가하는 방향을 나타낸다

분포 \(p_t(x)\)의 스코어는 입력에 대한 로그 밀도 기울기다.

\[ s_t(x)=\nabla_x \log p_t(x) \]

직관적으로 스코어는 현재 위치에서 확률 밀도가 더 높은 방향을 가리킨다. 여러 노이즈 수준에서 스코어를 알면 노이즈 쪽 샘플을 데이터 분포의 밀도가 높은 쪽으로 이동시키는 역방향 동역학을 구성할 수 있다.

노이즈 예측과 스코어 예측은 특정 가우스 섭동 설정에서 서로 변환할 수 있다. 따라서 DDPM과 스코어 기반 생성 모델링은 완전히 분리된 세계라기보다 서로 연결된 관점이다. 하지만 매개변수화와 연속 시간 정식화의 세부는 구분해야 한다.

스코어 매칭은 정규화된 밀도 자체를 계산하지 않고 스코어를 학습하는 방법군이다. 잡음 제거 스코어 매칭은 노이즈를 섞은 데이터를 이용해 각 노이즈 크기의 스코어를 학습한다.

5. 노이즈 제거 모형의 구조는 별개의 선택이다

확산은 잡음 추가 과정과 훈련 목표값, 샘플링 규칙을 정의하는 생성 방법이다. 실제 예측 신경망은 데이터 구조에 맞춰 선택한다.

  • 이미지와 공간장에서는 U-Net 계열 CNN이 널리 사용된다.
  • 이미지 패치나 잠재 토큰에서는 확산 트랜스포머를 사용할 수 있다.
  • 분자와 재료 구조에서는 GNN이나 기하학적 등변 신경망을 사용할 수 있다.
  • 오디오와 시퀀스에는 1D 합성곱이나 트랜스포머 계열을 사용할 수 있다.

확산을 쓴다와 U-Net을 쓴다는 같은 말이 아니다. 하나는 생성 과정이고 다른 하나는 노이즈 제거 함수의 모형 구조다.

6. DDPM과 DDIM의 관계

잡음 제거 확률 모형(Denoising Diffusion Probabilistic Models, DDPM)은 정해진 정방향 마르코프 연쇄와 학습된 역방향 과정을 사용한다. 기본 샘플링은 여러 단계에서 노이즈를 포함하는 확률적 갱신을 수행한다.

잡음 제거 확산 암시적 모형(Denoising Diffusion Implicit Models, DDIM)은 같은 계열의 훈련 목적 함수로 학습한 모델에서 다른 비마르코프 생성 과정을 구성할 수 있음을 보였다. 결정론적인 경로를 선택할 수 있고 더 적은 단계의 샘플링에 활용된다.

DDIM을 단순히 DDPM보다 항상 빠르고 좋은 후속 모델로 이해하면 안 된다. 단계 수를 줄이면 계산량은 줄지만 품질과 다양성, 수치 풀이법 오차의 절충 관계가 생길 수 있다. 비교할 때 같은 신경망 평가 수와 샘플링 설정을 확인해야 한다.

7. 조건을 얼마나 강하게 따르게 할 것인가

조건부 확산은 범주, 텍스트, 구조 조건, 물성값 등을 잡음 제거기에 제공한다. 유도는 생성이 조건을 더 강하게 반영하도록 예측 방향을 조절한다.

분류기 유도는 잡음이 섞인 샘플에서 범주를 예측하는 별도 분류기의 기울기를 사용한다. 분류기 없는 유도(CFG)는 별도 분류기 없이 같은 확산 모형을 조건이 있는 경우와 없는 경우에 학습하고, 샘플링 때 두 예측을 조합한다.

유도 크기를 높이면 조건을 더 강하게 따르는 결과가 나올 수 있지만, 다양성이 줄거나 인공 흔적이 증가할 수 있다. 프롬프트를 잘 따른다, 실제처럼 보인다, 다양하다는 별개의 평가축이다.

8. 잠재 확산은 어디에서 노이즈를 제거하는가

픽셀 공간에서 고해상도 이미지를 반복 처리하면 계산량이 크다. 잠재 확산은 사전 학습된 오토인코더로 이미지를 낮은 차원의 잠재 표현에 인코딩하고, 그 잠재 공간에서 확산을 수행한 뒤 디코더로 이미지를 복원한다.

이 방법은 계산 효율을 높일 수 있지만 오토인코더가 버린 정보나 복원 인공 흔적의 영향을 받는다. 9장의 VAE와 연결되지만 모든 잠재 확산이 같은 VAE 정식화를 사용하는 것은 아니다. 오토인코더 단계와 확산 단계의 목적 함수도 분리해 봐야 한다.

9. 과학 데이터에서의 적용

확산은 이미지뿐 아니라 분자, 결정 구조, 단백질 입체 구조, 궤적, 공간 장 생성에도 적용할 수 있다. 이때 사람 눈에 자연스럽다는 평가로 충분하지 않다.

  • 화학적 유효성과 구조 제약을 만족하는가?
  • 원자 순열과 3차원 회전, 이동에 올바르게 반응하는가?
  • 원하는 조성이나 물성 조건을 만족하는가?
  • 생성된 후보가 시뮬레이션이나 실험에서 유효한가?
  • 훈련 데이터와 지나치게 가까운 구조를 복제하지 않았는가?

모형 구조의 대칭성과 생성 과정의 제약을 함께 설계해야 한다.

이 장에서 기억할 내용

꼭 이해할 내용

  • 데이터에서 노이즈로 가는 고정된 정방향 과정과 학습된 역방향 과정
  • 노이즈 수준 또는 시간 단계를 잡음 제거기에 제공하는 이유
  • 훈련은 무작위 시간 단계 예측, 생성은 반복적인 노이즈 제거라는 차이
  • 노이즈, 데이터, 속도 예측 목표값의 위치
  • 확산 정식화와 잡음 제거기 모형 구조의 구분

다음 공부를 위해 알아둘 내용

  • 스코어와 잡음 제거 스코어 매칭
  • DDPM과 DDIM
  • 분류기 유도와 분류기 없는 유도
  • 잠재 확산
  • 확산 트랜스포머
  • 연속 시간 스코어 기반 모형과 확률 흐름 ODE
자주 하는 혼동과 한계

자주 생기는 혼동과 한계

정방향 과정은 학습 대상이 아닐 수 있다

기본 확산에서는 정방향 잡음 추가 일정을 미리 정하고 역방향 예측을 학습한다. 모든 단계가 신경망으로 학습되는 것은 아니다.

노이즈 제거는 단순한 이미지 필터가 아니다

신경망은 하나의 손상 이미지를 복원하는 것뿐 아니라 여러 노이즈 수준에서 데이터 분포의 구조를 학습한다. 생성은 순수 노이즈에서 시작한다.

  • 반복적인 샘플링은 많은 신경망 평가를 요구할 수 있다.
  • 훈련 목적 함수의 값이 사람이 인식하는 품질과 정확히 일치하지 않는다.
  • 유도는 조건 충실도와 다양성 사이의 절충 관계를 만든다.
  • 생성된 샘플의 신규성, 암기, 안전성, 과학 유효성을 별도로 평가해야 한다.
  • 노이즈 일정, 샘플러, 단계 수가 다르면 같은 체크포인트도 결과가 달라진다.

다섯 질문으로 다시 보기

  • 입력과 출력: 잡음이 섞인 샘플과 시간 단계, 선택적 조건을 받아 노이즈, 깨끗한 데이터 또는 속도 목표값을 예측한다.
  • 구조적 가정: 복잡한 데이터 분포를 여러 노이즈 수준을 거쳐 단순한 가우스와 연결할 수 있다고 본다.
  • 학습 신호: 알고 있는 주입한 노이즈나 그와 동치인 목표값을 사용한다.
  • 모형 구조: U-Net, 트랜스포머, GNN 등 데이터 구조에 맞는 잡음 제거기를 선택한다.
  • 기준 모델과 평가: 다른 생성 모델, 단순 샘플링 방법과 품질, 다양성, 조건 충실도, 계산비용을 함께 비교한다.
  • 실패 조건: 적은 샘플링 단계, 강한 유도, 영역 변화, 잘못된 대칭성 또는 유효성 제약에서 문제가 생길 수 있다.

앞뒤 장과의 연결

9장의 VAE가 잠재 변수와 인코더-디코더를 통해 샘플을 만든다면 확산은 여러 노이즈 수준의 노이즈 제거로 생성을 정의한다. 11장의 플로 매칭은 출발 분포와 목표 분포 사이의 시간 의존 벡터장을 직접 회귀하는 관점을 소개한다. 연속 시간 확산과 흐름이 수학적으로 연결되는 경우가 있지만, 학습 목적 함수와 경로를 같은 것으로 취급해서는 안 된다.

더 읽을 자료

스스로 확인하기

  • 확산의 훈련 과정과 생성 과정은 신경망을 호출하는 방식이 어떻게 다른가?
  • 노이즈 예측 모형과 U-Net 구조를 왜 같은 개념으로 부르면 안 되는가?
  • DDPM과 DDIM을 비교할 때 샘플링 단계 외에 어떤 조건을 맞춰야 하는가?
  • 조건 충실도와 샘플 다양성은 왜 하나의 지표로 대체하기 어려운가?