확산 모델은 먼저 데이터에 단계적으로 노이즈를 더한 뒤, 그 노이즈를 단계적으로 제거하는 법을 학습해 새로운 콘텐츠를 생성하는 생성 모델로, 현재 이미지 생성의 주류 방법 중 하나입니다. 이미지를 직접 그리는 것이 아니라 순수한 노이즈에서 출발해 노이즈를 한 단계씩 걷어 내며 화면이 천천히 드러나게 합니다.
먼저 노이즈를 더하고, 그다음 제거한다: 두 가지 반대 과정
순방향 과정은 노이즈를 더하는 것입니다. 실제 이미지를 가져와 고정된 단계에 따라 무작위 노이즈를 층층이 섞으면, 여러 단계를 거친 뒤 이미지는 원래 모습을 전혀 알아볼 수 없는 노이즈가 됩니다. 이 과정에는 학습이 필요 없으며, 규칙에 따라 화면을 흐트러뜨릴 뿐입니다.
역방향 과정은 노이즈를 제거하는 것으로, 생성할 때 사용하는 방향입니다. 모델은 무작위 노이즈 덩어리에서 시작해 노이즈의 일부를 예측하고 제거해 조금 더 선명한 결과를 얻고, 이를 반복해 마침내 완전한 새 이미지를 생성합니다. 생성의 출발점은 무작위 노이즈이지, 어떤 기존 이미지가 아닙니다.
훈련에서 배우는 것은 노이즈 예측
훈련은 모델에게 이미지를 외우게 하는 것이 아니라 노이즈 예측을 연습시키는 것입니다. 노이즈가 더해진 이미지와 노이즈 단계가 주어지면, 섞여 들어간 노이즈가 무엇인지 정확히 추측하게 합니다. 같은 이미지를 서로 다른 정도로 노이즈화해 모델이 반복해서 연습하게 합니다.
노이즈를 예측할 수 있게 되면 노이즈 제거의 근거가 생깁니다. 각 단계에서 예측한 노이즈의 일부를 빼낼 때마다 화면은 실제 데이터의 모습에 조금씩 가까워집니다. 모델이 배우는 것은 데이터 자체의 분포 법칙이므로, 훈련 집합에 한 번도 등장하지 않은 새로운 조합을 생성할 수 있으며 원본 이미지를 복사하는 것이 아닙니다.
단계 수가 속도를 결정하고 품질에도 영향을 준다
확산 모델의 생성은 반복적이어서 한 단계에서는 조금만 바뀌므로, 보통 이미지 한 장을 완성하려면 수십 단계가 필요합니다. 단계 수가 많을수록 한 번의 변화는 작아져 화면이 더 안정되고 세부 묘사가 더 깔끔해지는 경우가 많지만, 시간은 더 오래 걸립니다. 단계 수가 너무 적으면 변화의 폭이 커져 구조가 뒤틀리거나 세부 묘사가 흐려지기 쉽습니다.
이것이 확산 모델의 분명한 단점이기도 합니다. 한 번에 완성하는 생성 방식에 비해 속도가 본질적으로 느립니다. 이후 등장한 가속 샘플링과 증류 기술은 모두 품질 손실을 최대한 줄이면서 필요한 단계 수를 줄이는 것을 핵심으로 합니다.
GAN, 자기회귀 생성과의 차이
GAN은 생성자와 판별자의 적대적 훈련에 의존해 한 번에 완전한 결과를 출력합니다. 속도는 빠르지만 훈련이 불안정하고 다양성이 부족할 때가 있습니다. 자기회귀 생성은 문장을 쓰듯 픽셀 하나 또는 작은 블록 하나를 차례로 생성합니다. 논리는 명확하지만 오차가 누적되기 쉽습니다.
확산 모델은 훈련이 비교적 안정적이고, 생성 결과가 다양하며 세부 묘사를 제어하기 쉽습니다. 여러 단계의 반복을 통해 품질과 안정성을 얻는 대신 추론 속도를 대가로 치릅니다. 세 가지 방법 사이에 절대적인 대체 관계는 없으며, 주로 서로 다른 절충이 있을 뿐입니다.
가장 흔한 두 가지 오해
첫 번째 오해는 확산 모델이 기존 이미지를 흐리게 한 뒤 복원하는 것이라고 생각하는 것입니다. 노이즈를 더했다가 제거하는 것은 훈련 때 학습 과제를 만드는 방식일 뿐입니다. 실제 생성 때 입력은 무작위 노이즈와 텍스트 프롬프트 같은 조건뿐이며, 복원할 원본 이미지는 없고, 출력은 완전히 새로운 이미지입니다.
두 번째 오해는 생성할 때 어떤 바탕 이미지를 수정한다고 생각하는 것입니다. 사용자가 직접 바탕 이미지를 제공하고 변경 정도를 제어하는 것은 이미지 투 이미지 같은 전용 모드뿐이며, 텍스트 투 이미지의 기본 생성 과정과는 다른 일입니다.
Stable Diffusion은 확산 모델의 가장 대표적인 응용 중 하나로, 잠재 확산을 사용합니다. 먼저 이미지를 더 작은 잠재 공간으로 압축하고, 그곳에서 노이즈 추가와 제거를 수행한 뒤, 마지막에 다시 이미지로 복원합니다. 이로 인해 계산량이 크게 줄어 일반 그래픽 카드에서도 실행할 수 있습니다.