English
AI Foundations

Diffusion확산 모델

Stable Diffusion 같은 이미지 생성 모델은 순수한 노이즈에서 시작해 한 단계씩 노이즈를 걷어 냅니다. 여기서 그림은 평면 위의 점 구름이라 모든 단계를 눈으로 볼 수 있습니다. 모양을 고르거나 직접 그리고, 작은 신경망을 브라우저에서 학습시켜 노이즈가 그 모양으로 바뀌는 것을 보세요.

Forward Process

학습은 데이터를 일부러 망가뜨리는 데서 시작합니다. t단계에서 각 점을 가운데 쪽으로 줄이고 무작위 가우시안 노이즈를 섞습니다. t = 100이 되면 모양은 하나도 남지 않습니다. 이 방향은 배울 것이 없는 고정된 식입니다.

xt = √ᾱt · x0 + √(1 − ᾱt) · ε, ε ~ N(0, I)
–남은 신호 √ᾱ
–섞인 노이즈 √(1−ᾱ)

이 페이지는 100단계 코사인 일정을 씁니다. 신호가 처음엔 천천히, 중간에는 빠르게 줄어듭니다.

요약노이즈는 배우는 게 아니라 정해진 식으로 더합니다.깨끗한 데이터에서 어느 단계 t로든 한 번에 갈 수 있습니다.마지막 단계에는 노이즈만 남습니다.

체험: 노이즈 일정

x_t = √ᾱ_t · x₀ + √(1 − ᾱ_t) · ε · SNR = ᾱ / (1 − ᾱ) · linear: β 1e-4 → 0.02 · cosine: ᾱ = cos²((t/T + 0.008)/1.008 · π/2)

체험: 1차원 자료가 노이즈로 녹는 모습

봉우리 셋인 1차원 장난감 자료입니다. 가우시안 혼합이라 모든 단계의 밀도를 식으로 정확히 쓸 수 있고, 가장 좋은 잡음 제거기도 정확히 알 수 있습니다. 다음 탭들이 이것을 씁니다.

참고문헌

  1. Sohl-Dickstein, J. et al. (2015). Deep unsupervised learning using nonequilibrium thermodynamics. ICML.
  2. Ho, J., Jain, A., Abbeel, P. (2020). Denoising diffusion probabilistic models. NeurIPS.

Noise Prediction

신경망은 노이즈 섞인 점과 단계 t를 받아, 섞여 들어간 노이즈 ε를 맞혀야 합니다. 손실은 그 추측의 제곱 오차입니다. 노이즈를 맞힐 수 있으면 어느 쪽이 모양 쪽인지 압니다. 아래 화살표는 격자 위 각 자리에서 신경망이 점을 옮길 방향(−ε)입니다.

t가 작으면 화살표가 모양 위를 정확히 가리킵니다. t가 크면 대략 가운데 쪽만 가리킵니다. 남은 모양 정보가 거의 없기 때문입니다.

요약신경망은 더해진 노이즈를 예측하도록 학습합니다.예측한 노이즈가 데이터로 돌아가는 방향을 알려 줍니다.t를 함께 받으므로 신경망 하나가 모든 단계를 맡습니다.

체험: 노이즈는 얼마나 맞힐 수 있나

학습은 x_t를 보고 ε를 맞히라고 시킵니다. 1차원 장난감에서는 가장 좋은 추측(사후 평균)을 정확히 압니다. 점 하나가 학습 예 하나이고, 참 ε와 가장 좋은 추측을 견줍니다. t가 크면 x_t가 거의 노이즈라 ε를 맞히기 쉽고, t가 작으면 노이즈가 작아 자료 자체의 퍼짐 속에 숨습니다.

참고문헌

  1. Ho, J., Jain, A., Abbeel, P. (2020). Denoising diffusion probabilistic models. NeurIPS.
  2. Nichol, A., Dhariwal, P. (2021). Improved denoising diffusion probabilistic models. ICML.

Reverse Process

만들 때는 t = 100의 새 노이즈에서 시작합니다. 단계마다 신경망이 예측한 노이즈를 빼고, 새 무작위성을 조금 다시 더합니다(DDPM). 100단계 뒤 점들이 모양 위에 내려앉습니다. 아래 선은 점 40개가 지나온 길입니다.

경로는 옅은 점(노이즈)에서 시작해 산호색 점에서 끝납니다. 노이즈가 많은 초반에는 이리저리 헤매다가 끝에 가서 자리를 잡습니다.

요약생성은 노이즈 더하기를 한 단계씩 거꾸로 돌리는 것입니다.매번 다른 노이즈에서 시작하므로 결과도 매번 다릅니다.모양은 마지막 수십 단계에서 정해집니다.

체험: 입자 60개를 거꾸로 따라가기

입자 60개를 순수 노이즈에서 출발시켜, 1차원 장난감의 정확한 잡음 제거기로 역과정을 돌립니다. DDPM은 단계마다 새 노이즈를 더해 길이 흔들리고 늦게까지 봉우리를 바꿀 수 있고, DDIM은 결정적이라 출발점 하나가 끝점 하나로 갑니다.

참고문헌

  1. Ho, J., Jain, A., Abbeel, P. (2020). Denoising diffusion probabilistic models. NeurIPS.

Fewer Steps (DDIM)

그림 하나에 신경망을 100번 부르는 건 느립니다. DDIM은 같은 신경망으로 여러 단계를 한 번에 건너뛰고, 중간에 무작위성을 더하지 않습니다. 단계가 적을수록 빠르지만 거칩니다. 아래는 같은 신경망이 설정마다 점 500개를 그린 결과입니다.

학습 2,000단계, 시드 1, Node 22DDIM 5DDIM 10DDIM 25DDPM 100가우시안 하나노이즈 그대로모양의 새 표본

같은 모양에서 새로 뽑은 점 1,000개까지의 거리, 그린 점 1,000개 기준입니다. 마지막 열이 바닥값입니다. 같은 모양에서 정직하게 뽑은 두 표본도 이만큼은 떨어져 있습니다.

요약같은 신경망을 더 적은 단계로 쓸 수 있습니다.단계가 너무 적으면 점이 번집니다.실제 서비스가 20~50단계를 쓰는 이유입니다.

체험: 단계를 얼마나 줄여도 될까

각 2,000개, 정확한 잡음 제거기를 써서 단계 수만 다릅니다. 오차는 참 표본 2,000개와의 1차원 바서슈타인 거리(작을수록 좋음).

참고문헌

  1. Song, J., Meng, C., Ermon, S. (2021). Denoising diffusion implicit models. ICLR.

Image Diffusion Models

조리법은 같습니다. 일정에 따라 노이즈를 더하고, 그것을 예측하도록 신경망을 학습시키고, 한 단계씩 걷어 냅니다. 이미지는 2차원 대신 아주 많은 차원을 가진 공간의 점 하나일 뿐입니다.

이 페이지DDPM (2020)Stable Diffusion v1 (2022)
표본 하나점 하나, 숫자 2개32×32 컬러 이미지, 숫자 3,072개64×64×4 잠재, 숫자 16,384개
신경망MLP, 파라미터 약 3.6만U-Net, 3,570만U-Net, 약 8.6억
노이즈 단계1001,0001,000
무엇을 그릴지없음없음글 지시(CLIP)
요약이미지는 차원이 높은 점입니다. 방법은 그대로입니다.Stable Diffusion은 계산을 아끼려고 압축된 잠재 공간에서 확산합니다.글 지시가 노이즈 예측을 원하는 쪽으로 이끕니다.

체험: 왜 잠재 공간에서 확산하나

체험: classifier-free guidance

글→그림 모델은 조건이 있는 예측('고양이')과 조건 없는 예측을 섞어 조건 쪽으로 더 밉니다. ε = (1 + w)·ε(x | c) − w·ε(x). 1차원 장난감에서 조건은 '오른쪽 봉우리들'입니다. w가 클수록 조건에 더 맞지만 덜 퍼집니다.

참고문헌

  1. Rombach, R. et al. (2022). High-resolution image synthesis with latent diffusion models. CVPR.
  2. Nichol, A., Dhariwal, P. (2021). Improved denoising diffusion probabilistic models. ICML.

교육용 장난감입니다. 거리는 이 페이지의 점에서만 잰 값이며, 실제 이미지 모델의 품질 평가가 아닙니다.