AI VIDEO BRIEFING
스테이블 디퓨전 동작 원리 정리: 확산 과정, 분류기 없는 가이던스, 잠재 공간까지
이미지 생성 모델 스테이블 디퓨전을 파이토치만으로 직접 구현하며 해설한 강의를 정리했다. 잡음을 더하고 걷어내는 확산 과정, 프롬프트를 반영하는 분류기 없는 가이던스, 계산량을 줄이는 잠재 공간이 핵심이다.

핵심 메시지
쉽게 이해하기
이 영상은 2022년 공개된 이미지 생성 모델 스테이블 디퓨전을 토크나이저를 제외한 외부 라이브러리 없이 파이토치만으로 처음부터 구현하는 다섯 시간짜리 강의다. 발표자는 코드를 치기 전에 수학적 배경을 먼저 설명하는데, 무엇을 만드는지 모른 채 어둠 속으로 뛰어들 수는 없다는 이유에서다. 확률과 통계의 기초 개념, 어텐션, 합성곱에 대한 감각이 있으면 따라가기 수월하다고 안내한다.
출발점은 '생성 모델이란 무엇인가'다. 생성 모델은 데이터의 확률분포를 학습한 뒤 그 분포에서 표본을 뽑아 새로운 데이터를 만든다. 발표자는 나이와 키라는 두 변수로 가짜 신원을 만드는 상황을 예로 든다. 두 분포에서 따로 표본을 뽑으면 키 130센티미터의 세 살짜리 같은 조합이 나오므로, 변수들을 하나의 결합분포로 묶어야 그럴듯한 결과가 나온다는 것이다. 이미지에서는 각 픽셀이 하나의 거대한 결합분포를 이룬다.
확산 모델에는 두 개의 과정이 있다. 순방향 과정은 원본 이미지에 정해진 양의 잡음을 단계마다 더해 결국 순수한 잡음에 이르게 하는데, 각 단계의 잡음 크기가 미리 정해져 있어 학습할 것이 없고 특정 시점으로 한 번에 건너뛰는 닫힌 공식도 있다. 문제는 반대 방향이다. 잡음을 걷어내는 닫힌 공식은 존재하지 않아 이 부분만 신경망이 학습한다. 학습 목표를 직접 계산하려면 모든 중간 단계 변수에 대해 적분해야 해서 사실상 불가능하므로, 우도 대신 그보다 작은 하한을 최대화한다. 회사의 매출이 판매액보다 크거나 같으니 판매를 늘리면 매출도 따라 오른다는 비유가 붙는다. 실제 구현은 잡음 섞인 이미지와 그 잡음 단계를 받아 섞인 잡음의 양을 예측하는 손실을 줄이는 것으로 끝난다.
여기까지는 아무 그림이나 만들 뿐 무엇을 그릴지 지시할 수 없다. 그래서 잡음을 예측하는 신경망의 입력에 프롬프트 임베딩을 함께 넣는다. 임베딩은 이미지와 설명문을 짝지어 학습한 클립의 텍스트 인코더로 얻는다. 학습 중 일부 비율은 일부러 프롬프트를 비워 두는데, 그러면 하나의 모델이 조건부 예측과 무조건 예측을 모두 할 수 있게 된다. 생성할 때 두 예측을 선형으로 결합하고 그 가중치로 프롬프트를 얼마나 따를지 정하는 것이 분류기 없는 가이던스다.
마지막 조각은 속도다. 512×512 크기의 행렬을 수십 번 통과시키면 느리기 때문에, 변분 오토인코더로 이미지를 압축한 잠재 표현 위에서 잡음 제거를 반복하고 마지막에만 디코더로 복원한다. 이 구조 덕분에 세 가지 작업이 같은 틀에서 나온다. 텍스트에서 이미지를 만들 때는 순수 잡음에서 시작하고, 이미지를 변형할 때는 원본을 인코딩한 뒤 잡음을 얹어 시작하며, 인페인팅에서는 매 단계 출력에서 이미 아는 영역을 원본 값으로 되돌려 놓아 모델이 마스크 영역만 채우게 만든다.
주요 인사이트
- 잡음을 더하는 데는 공식이 있지만 빼는 데는 없다는 비대칭이, 확산 모델이 신경망을 쓰는 지점을 정확히 한정한다. 모델은 그림을 그리는 법이 아니라 잡음의 양을 재는 법만 배운다.
- 이미지를 변형할 때 처음 얹는 잡음의 양이 곧 자유도 손잡이다. 잡음을 많이 넣을수록 모델이 원본을 크게 바꿀 수 있고, 적게 넣을수록 원본에 묶인다.
- 인페인팅의 요령은 모델을 고치는 것이 아니라 출력을 고치는 데 있다. 매 단계마다 이미 아는 영역을 원본으로 덮어써서, 모델이 그 부분을 자기가 그린 것으로 여기게 만든다.
- 일반 오토인코더 대신 변분 오토인코더를 쓰는 이유는 압축 코드가 의미적 구조를 갖게 하기 위해서다. 그냥 압축하면 고양이의 코드와 피자의 코드가 비슷해질 수 있다.
- 분류기 없는 가이던스는 모델을 두 개 만드는 대신, 학습 때 프롬프트를 가끔 비워 두는 것만으로 하나의 모델에 두 역할을 겸하게 한 설계다.
자주 묻는 질문
스테이블 디퓨전에서 잡음을 예측하는 신경망은 정확히 무슨 일을 하나요?
잡음이 섞인 (잠재) 이미지와 현재 잡음 단계, 그리고 프롬프트 임베딩을 입력으로 받아 그 안에 섞여 있는 잡음의 양을 예측합니다. 스케줄러가 예측된 잡음을 덜어낸 뒤 결과를 다시 신경망에 넣는 과정을 잡음이 남지 않을 때까지 반복합니다.
분류기 없는 가이던스는 왜 예측을 두 번 하나요?
학습할 때 프롬프트를 주는 경우와 비워 두는 경우를 섞어 두면, 같은 모델이 프롬프트를 따르는 예측과 무시하는 예측을 모두 낼 수 있습니다. 생성할 때 두 결과를 가중치로 섞고, 그 가중치를 키울수록 결과가 프롬프트에 가까워집니다.
왜 원본 해상도가 아니라 압축된 표현에서 잡음을 제거하나요?
512×512 같은 큰 행렬을 매 단계 신경망에 통과시키면 시간이 오래 걸립니다. 변분 오토인코더로 압축한 잠재 표현 위에서 반복하고 마지막에만 디코더로 되돌리면 훨씬 빠르며, 이 때문에 잠재 확산 모델이라고 부릅니다.
인페인팅은 이미지 변형과 어떻게 다른가요?
구조는 같고 마스크가 추가됩니다. 모델은 매 단계 이미지 전체에 대한 잡음을 예측하지만, 우리는 이미 알고 있는 영역을 원본 값으로 되돌려 놓고 다음 단계로 넘깁니다. 그 결과 지워진 영역만 새로 채워집니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗