최근 인공지능 그림들을 보면 감탄이 나옵니다. DALL-E, Midjourney 같은 모델들은 어떻게 완전히 새로운 이미지를 만들어낼까요? 이 기술의 중심에는 '확산 모델(Diffusion Model)'이라는 아이디어가 있습니다.
문제는 대부분의 설명이 시작부터 아래와 같은 알 수 없는 수학 공식을 들이민다는 겁니다.
q(x_t | x_(t-1)) = N(x_t; sqrt(1 - beta_t) * x_(t-1), beta_t * I)
이런 식만 보고 "아, 노이즈를 추가하는 정규분포군!" 하고 바로 이해하는 사람이 몇이나 될까요? 공식을 이해하려면 직관이 먼저입니다. 제가 이제부터 이 공식이 왜 나왔는지, 그리고 이 모델이 실제로 어떻게 작동하는지 차근차근 설명해 드리겠습니다. 설명을 다 듣고 나면, 이 공식이 사실은 매우 간단한 아이디어를 표현한 것뿐이라는 걸 깨닫게 되실 겁니다.
확산 모델의 핵심 아이디어는 아주 역설적이고 재미있습니다. AI에게 '창조'하는 법을 가르치기 위해, 먼저 '파괴'하는 법을 완벽하게 마스터하게 하는 것입니다.
가장 쉬운 비유로 시작해 보죠.
이것이 바로 확산 모델의 순방향 과정(Forward Process)과 역방향 과정(Reverse Process)의 핵심입니다.
이 단계는 AI를 훈련시키기 위한 '문제집'을 만드는 과정입니다. 깨끗한 사진(x_0)에서 시작해서, 그 위에 모래알 같은 노이즈(noise)를 아주 조금씩, 여러 번(T번)에 걸쳐 뿌립니다.
한 번 뿌릴 때마다 사진은 아주 살짝 손상됩니다. 이 과정을 수백, 수천 번 반복하면, 마지막(x_T)에는 원래 사진이 무엇이었는지 전혀 알아볼 수 없는 순수한 노이즈(TV 채널이 끊겼을 때 나오는 '지지직' 화면)만 남게 됩니다.
이제 수학 공식을 파헤쳐 봅시다
q(x_t | x_(t-1)) = N(x_t; sqrt(1 - beta_t) * x_(t-1), beta_t * I)
겁먹지 마세요. 하나씩 뜯어보면 별거 아닙니다.
q(x_t | x_(t-1))
: "이전 단계 이미지(x_(t-1))가 있을 때, 다음 단계 이미지(x_t)는 어떤 모습일까?"를 나타내는 기호입니다. 즉, '노이즈를 한 번 뿌렸을 때의 결과'를 설명하는 식이죠.N(...)
: '정규 분포' 또는 '가우시안 분포'를 의미합니다. 갑자기 웬 통계일까요? 우리가 추가하는 노이즈는 완전히 무작위적이지만, 대부분의 노이즈는 미세한 변화를 주고 아주 가끔 큰 변화를 주는 패턴을 보입니다. 이런 자연스러운 무작위성을 표현하기에 가장 적합한 도구가 바로 정규 분포입니다.sqrt(1 - beta_t) * x_(t-1)
): 이 부분이 핵심입니다. beta_t
(베타)는 t번째 단계에서 우리가 뿌릴 노이즈의 양을 나타내는 아주 작은 숫자입니다(예: 0.001). 그러면 sqrt(1 - beta_t)
는 1보다 아주 살짝 작은 값이 되겠죠? 즉, 이 부분의 의미는 "이전 이미지를 가져와서 아주 살짝 희미하게(값을 작게) 만들어라"는 뜻입니다. 원본의 형태는 유지하되, 약간 흐리게 만드는 거죠.beta_t * I
): 바로 이 부분이 실제 노이즈를 뿌리는 역할을 합니다. 분산은 데이터가 흩어진 정도를 의미하는데요, 여기서는 beta_t
의 강도로 픽셀 값들을 무작위로 흩어놓으라는 의미입니다.순방향 과정 한 줄 요약: "이전 이미지를 살짝 흐리게 만들고, 그 위에 beta_t
만큼의 노이즈를 뿌린다." 이 과정을 T번 반복하면 완벽한 노이즈 이미지가 만들어집니다.
(역자: 결국 순방향 과정은 AI를 위한 '오답 노트'를 만드는 과정이라고 보시면 됩니다. 정답(깨끗한 이미지)과 다양한 수준의 오답(노이즈 낀 이미지)을 미리 다 만들어두는 거죠.)
이제 본격적으로 AI를 훈련시킬 시간입니다. AI는 '망가진 사진'을 보고 '어떻게 망가졌는지'를 알아맞히는 전문가가 되어야 합니다.
어려움: x_t
(노이즈가 조금 낀 이미지)를 보고 x_(t-1)
(노이즈가 끼기 바로 전 이미지)을 예측하는 것은 거의 불가능합니다. 경우의 수가 너무 많기 때문이죠.
천재적인 발상의 전환: 여기서 확산 모델의 가장 중요한 아이디어가 나옵니다. "이전 이미지를 통째로 예측하지 말고, 방금 추가된 '노이즈'만 예측하자!"
AI 모델(epsilon_theta
)의 역할은 이렇습니다.
x_t
와 현재 단계 t
를 AI에게 보여줍니다. (역자: 단계 t
를 알려주는 것이 매우 중요합니다. AI는 지금이 초기 단계인지, 거의 다 복원된 단계인지 알아야 예측할 노이즈의 양을 조절할 수 있습니다.)x_t
에 섞여있을 것이라고 예측되는 노이즈 epsilon
을 뱉어냅니다.훈련 과정:
1. 순방향 과정에서 우리는 t
단계의 노이즈 낀 이미지(x_t
)와, 그때 사용한 실제 정답 노이즈(epsilon
)를 모두 알고 있습니다.
2. AI에게 x_t
를 보여주고 "여기에 섞인 노이즈가 뭘까?"라고 묻습니다.
3. AI는 예측 노이즈를 내놓습니다.
4. AI의 예측과 실제 정답을 비교해서, 둘 사이의 차이(오차)를 계산합니다.
5. 이 오차를 줄이는 방향으로 AI의 내부 파라미터(theta
)를 계속 업데이트합니다. 마치 오답 노트를 보며 공부하는 학생처럼요.
역방향 과정 한 줄 요약: "AI는 노이즈 낀 이미지를 보고 '어떤 노이즈가 추가됐을까?'를 맞추는 훈련을 반복하며, 점차 노이즈 예측의 달인이 되어갑니다."
훈련이 끝난 확산 모델은 이제 '노이즈 예측의 대가'가 되었습니다. 이제 이 모델로 완전히 새로운 이미지를 만들 수 있습니다.
x_T
)에서 시작합니다.x_T
에서 살짝 뺍니다. 그러면 아주 희미하게 무언가의 형체가 나타납니다 (x_(T-1)
).x_0
에 도달할 때까지 계속 반복합니다.이것이 바로 생성 확산 모델의 작동 원리입니다. 복잡한 수식은 결국 '사진을 체계적으로 망가뜨렸다가, 그 과정을 거꾸로 되짚어 복원하는' 매우 직관적인 아이디어를 표현한 것뿐입니다.
sqrt(1 - beta_t)
에서 sqrt를 사용하는 이유는 '분산(variance)'의 성질 때문입니다. 양수로 만들려는 목적이 아니라, 전체 분산을 1로 유지하기 위한 수학적 장치입니다.
이것을 이해하려면 '분산'과 '표준편차'의 관계를 먼저 알아야 합니다.
σ²
): 데이터가 평균으로부터 얼마나 퍼져 있는지를 나타내는 값입니다. 숫자가 클수록 많이 흩어져 있다는 뜻입니다.σ
): 분산에 제곱근(sqrt)을 씌운 값입니다. 분산은 단위를 제곱한 형태라 직관적이지 않아서, 다시 원래 단위로 돌려놓은 것이 표준편차입니다.핵심 관계: 표준편차 = sqrt(분산)
우리가 사용하는 가우시안 노이즈는 '표준' 정규 분포를 따릅니다.
N(0, I)
): 평균이 0이고, 분산이 1인 특별한 정규 분포입니다.확산 모델의 아이디어는, 깨끗한 이미지(x_0
)에 노이즈를 계속 추가해서 최종적으로는 완전히 무작위적인 노이즈(x_T
), 즉 표준 정규 분포 N(0, I)
와 거의 똑같은 상태로 만드는 것입니다.
여기서 중요한 가정이 있습니다. "과정 중간에 있는 모든 이미지(x_1
, x_2
, ... x_t
)들도 대략적으로 표준 정규 분포(N(0, I)
)를 따르게 만들자!" 는 것입니다. 즉, 각 단계의 이미지들의 분산도 항상 1로 유지되도록 만들고 싶은 거죠.
왜냐하면, 이렇게 하면 모델이 훨씬 안정적으로 학습되고, 수학적으로 다루기도 쉬워지기 때문입니다.
이제 수식을 다시 봅시다.
x_t = sqrt(1 - β_t) * x_{t-1} + sqrt(β_t) * ϵ
이 식은 "다음 이미지(x_t
)"는 "이전 이미지(x_{t-1}
)의 성분"과 "새로운 노이즈(ϵ
)의 성분"을 더해서 만들어진다는 뜻입니다.
통계학에는 아주 중요한 공식이 있습니다. 서로 독립적인 두 확률 변수 X, Y가 있을 때,
Var(a*X + b*Y) = a² * Var(X) + b² * Var(Y)
(여기서 Var는 분산(Variance)을 의미합니다.)
이 공식을 우리 식에 적용해 봅시다.
a = sqrt(1 - β_t)
X = x_{t-1}
b = sqrt(β_t)
Y = ϵ
그러면 x_t
의 분산은 다음과 같이 계산됩니다.
Var(x_t) = (sqrt(1 - β_t))² * Var(x_{t-1}) + (sqrt(β_t))² * Var(ϵ)
여기서 제곱근(sqrt)과 제곱(²)이 서로 만나 사라지는 마법이 일어납니다!
Var(x_t) = (1 - β_t) * Var(x_{t-1}) + β_t * Var(ϵ)
이제 각 항의 분산을 대입해 봅시다.
Var(x_{t-1})
: 우리는 이전 단계의 이미지도 분산이 1이라고 가정했습니다. 그래서 Var(x_{t-1}) = 1
입니다.Var(ϵ)
: ϵ
는 우리가 추가하는 순수 노이즈이고, 표준 정규 분포를 따르므로 분산이 1입니다. Var(ϵ) = 1
입니다.이 값들을 대입하면,
Var(x_t) = (1 - β_t) * 1 + β_t * 1
Var(x_t) = 1 - β_t + β_t
Var(x_t) = 1
결론적으로, x_t
의 분산도 정확히 1이 됩니다!
x_{t-1}
)과 새로운 노이즈에서 가져올 성분(ϵ
)의 분산의 합이 항상 1이 되도록 계수를 설정하는 것입니다.sqrt(1 - β_t)
와 sqrt(β_t)
로 설정하면, 이들을 제곱해서 더했을 때 (1 - β_t) + β_t = 1
이 되기 때문에, 다음 단계 이미지의 분산도 깔끔하게 1로 유지됩니다.즉, sqrt
는 각 단계에서 이미지의 '흩어짐 정도(분산)'를 일정하게 유지시켜주는, 매우 정교하고 중요한 수학적 장치인 것입니다. 양수/음수와는 직접적인 관련이 없습니다.
네, 아주 좋은 지적입니다. 그 부분을 명확하게 짚고 넘어가는 것이 중요합니다.
q(x_t | x_{t-1}) = N(x_t; sqrt(1 - β_t) * x_{t-1}, β_t * I)
여기서 왜 β_t * I
가 분산을 나타내는지 단계별로 설명해 드릴게요.
먼저, 정규 분포를 나타내는 기호 N(μ, σ²)
를 다시 봅시다.
μ
(뮤): 평균 (데이터가 어디에 몰려있는가)σ²
(시그마 제곱): 분산 (데이터가 얼마나 널리 퍼져있는가)우리 수식에서 이 형태에 맞춰보면 다음과 같습니다.
μ
= sqrt(1 - β_t) * x_{t-1}
σ²
= β_t * I
즉, 이 수식은 β_t * I
를 분산으로 갖는 정규 분포를 따르도록 정의된 것입니다. 이제 왜 이것이 '분산'의 역할을 하는지 그 의미를 파헤쳐 보겠습니다.
I
(단위 행렬, Identity Matrix)의 역할: 픽셀별 독립성이미지는 수많은 픽셀들의 집합입니다. 예를 들어 64x64 이미지는 4096개의 픽셀 값을 가집니다.
β_t
)라면, 모든 픽셀이 똑같은 정도로만 퍼져나간다는 의미가 됩니다.이 '독립성'을 수학적으로 표현하는 것이 바로 단위 행렬 I
입니다.
단위 행렬 I
란?
대각선 성분만 1이고 나머지는 모두 0인 행렬입니다.
(이건 3x3 예시이고, 4096개 픽셀이라면 4096x4096 행렬이 됩니다.)
통계학에서의 의미: 분산을 나타내는 행렬(공분산 행렬)에서, 대각선 이외의 성분이 0이라는 것은 각 변수(픽셀)들이 서로 상관관계가 없다(독립적이다)는 뜻입니다.
따라서 분산 자리에 I
가 있다는 것은 "각 픽셀에 추가되는 노이즈는 다른 픽셀의 노이즈와 완전히 독립적이다" 라는 가정을 나타냅니다.
β_t
(베타)의 역할: 노이즈의 강도 조절이제 β_t
가 무엇을 하는지 봅시다.
β_t
는 아주 작은 양수입니다 (예: 0.001, 0.002, ...).
이 숫자가 단위 행렬 I
에 곱해집니다.
의미: 이제 분산 행렬의 대각선 성분이 1이 아니라 β_t
가 되었습니다. 이는 각 픽셀의 노이즈가 평균 0, 분산 β_t
인 정규 분포를 따른다는 의미입니다.
결론적으로 β_t
는 노이즈의 '강도' 또는 '크기'를 조절하는 역할을 합니다.
β_t
가 크면: 노이즈가 강하게 추가되어 이미지가 많이 망가집니다.β_t
가 작으면: 노이즈가 약하게 추가되어 이미지가 조금만 망가집니다.확산 모델에서는 보통 t
가 0에 가까울 때는 β_t
를 작게 설정하고, t
가 커질수록 β_t
를 점차 크게 만들어 노이즈의 강도를 점진적으로 높입니다.
분산 (
β_t * I
) 이라는 표현을 다시 한번 해석해 봅시다.
"각 픽셀에 노이즈를 추가할 건데,"
I
: "각 픽셀에 추가되는 노이즈는 서로 완전히 독립적이야."β_t
: "그리고 그 노이즈의 강도(분산)는 β_t
만큼이야."이것이 바로 β_t * I
가 분산의 자리에 있는 이유입니다. 이것은 단순한 숫자가 아니라, 수많은 픽셀들에게 독립적으로, 특정 강도의 노이즈를 어떻게 부여할 것인지를 정의하는 약속이자 설계도인 셈입니다.