brunch

You can make anything
by writing

C.S.Lewis

by 개앞맵시 이복연 Oct 15. 2024

이미지 생성 모델(스테이블 디퓨전)을 이해하는 10단계

<밑바닥부터 시작하는 딥러닝 5> 소개

올해 열심히 번역한 <밑바닥부터 시작하는 딥러닝 5>가 며칠 전에 출간됐습니다. 어느덧 5편! 5편에서는 생성 모델을, 그중에서도 이미지 생성 모델을 다룹니다. 어떻게 소개할까 고민하다가, 아무래도 도입부의 ‘이야기 흐름’ 부분이 책의 특징을 가장 잘 담아낸 것 같아서 차용해보았습니다.


여정의 시작은 단순한 정규 분포입니다. 여러분은 정규 분포에서 출발하여 총 10단계(챕터)를 거쳐 첨단 이미지 생성 AI에 적용된 기법에 도달할 것입니다. 이 흐름에는 이 책만의 특징과 재미가 가득 담겨 있습니다. 지금부터 그 매력을 살짝 맛보실 수 있도록 전체 내용을 요약해 살펴보겠습니다.


사람의 키 분포

나이가 같은 남성 집단이 있습니다. 다음 그림은 이 집단의 키 분포입니다. 좌우 대칭인 산 모양이죠. 이런 형태를 ‘종 모양’이라고도 합니다. 생성 모델의 목표는 이러한 분포를 수학적으로 표현하는 것입니다.

사람의 키 분포 등 우리 주변의 많은 데이터가 정규 분포를 따릅니다.


시작은 정규 분포부터

정규 분포는 종 모양 곡선으로 표현되는 확률 분포입니다. 세상에는 정규 분포로 표현할 수 있는 대상이 아주 많습니다. 방금 보았듯이 키 분포도 여기 속합니다. 정규 분포의 형태는 평균(μ)과 표준 편차(σ)라는 두 매개변수에 의해 결정됩니다.

정규 분포의 형태는 평균과 표준 편차에 의해 결정됩니다.


최대 가능도 추정

정규 분포로 현상을 정확하게 표현하려면 정규 분포의 매개변수를 조율하여 형태를 데이터에 맞추는 작업을 해야 합니다(적합화, 즉 fit). 그 방법이 ‘최대 가능도 추정’입니다. 최대 가능도 추정은 어떤 데이터 x가 관측될 확률 p(x)를 가장 커지게 하는지 매개변수를 추정하는 기법입니다. 정규 분포의 최대 가능도 추정 값은 수식을 풀면 쉽게 구할 수 있습니다.

최대 가능도 추정 기법을 이용하면 정규 분포가 주어진 데이터를 잘 표현하도록 만들어주는 매개변수를 얻을 수 있습니다.


1차원에서 다차원으로

키는 1차원 데이터였습니다. 이번에는 ‘키와 몸무게’라는 2차원 데이터를 생각해봅시다. 이를 시각화한 것이 다음 그림입니다. 2차원 데이터도 똑같이 최대 가능도 추정을 이용해 최적의 매개변수를 추정할 수 있습니다. 다음 그림의 등고선은 최대 가능도 추정 후의 2차원 정규 분포를 나타냅니다.

2차원 데이터에 적합한 정규 분포도 최대 가능도 추정 기법으로 구할 수 있습니다. 


산이 두 개

다음 대상은 ‘산이 두 개’, 즉 데이터의 구심점이 두 개인 샘플 데이터입니다. 이러한 형태의 데이터는 정규 분포 하나로는 표현할 수 없습니다. 그래서 등장한 것이 ‘가우스 혼합 모델(GMM)’입니다. 가우스 혼합 모델은 정규 분포 여러 개를 조합한 기법입니다. 따라서 산이 두 개여도 표현할 수 있습니다.

산이 두 개인 분포는 가우스 혼합 모델(GMM)로 표현할 수 있습니다.


보이지 않는 것들(잠재 변수)

두 개의 산을 표현할 때는 데이터가 어느 산에 속하는지 나타내는 ‘잠재 변수’를 사용합니다. 잠재 변수란 직접 관찰할 수 없는 변수입니다. 한편 관찰 가능한 데이터는 ‘관측 변수’라고 합니다. 다음 그림은 잠재 변수 z로부터 관측 변수 x가 생성되는 관계를 나타냅니다.


잠재 변수의 대가

가우스 혼합 모델은 잠재 변수를 이용하기 때문에 모델(수식)이 복잡합니다. 따라서 정규 분포가 하나일 때처럼 수식을 푸는 방식으로는 최대 가능도 추정의 해를 구할 수 없습니다. 여기서 등장하는 것이 ‘EM 알고리즘(기댓값 최대화 알고리즘)’입니다. 이 알고리즘을 이용하면 최적의 매개변수를 추정할 수 있으며, 산이 두 개인 모델에도 정규 분포를 적용할 수 있습니다.

 잠재 변수 때문에 복잡한 GMM의 최적 매개변수도 EM 알고리즘을 이용하면 구할 수 있습니다.


위대한 신경망

한 걸음 더 나아가 신경망을 도입해보겠습니다. 신경망을 이용하면 샘플 데이터를 더 잘 표현해내는 분포를 학습시킬 수 있습니다. 다음 그림에서 (1)은 하나의 정규 분포, (2)는 가우스 혼합 모델, (3)은 신경망을 도입한 ‘변이형 오토인코더(VAE)’ 모델입니다. 신경망을 도입하면 (3)처럼 복잡한 데이터까지도 표현해내는 유연한 모델을 얻을 수 있습니다.

신경망을 이용하면 더 복잡한 모델도 표현할 수 있습니다.


변이형 오토인코더(VAE)로 이미지 생성

VAE도 가우스 혼합 모델과 마찬가지로 잠재 변수가 존재하는 모델입니다. 잠재 변수에서 관측 변수로 변환할 때 신경망을 사용하고(디코더), 그 반대로 변환할 때는 또 다른 신경망을 사용합니다(인코더). VAE의 학습 알고리즘은 EM 알고리즘을 발전시켜 이끌어낼 수 있습니다.

인코더와 디코더를 신경망으로 구성한 VAE를 이용하면 새로운 이미지를 생성할 수 있습니다.


잠재 변수 계층화

VAE는 그 자체로 상당히 복잡한 대상을 표현할 수 있지만 잠재 변수를 계층화하여 표현력을 더 높일 수 있습니다. 이것이 바로 ‘계층형 VAE’입니다. VAE에 잠재 변수를 여러 개 도입한 모델이죠. 잠재 변수는 인접한 잠재 변수로부터만 영향을 받습니다.

VAE의 잠재 변수의 수를 늘려 계층화하면 더 복잡한 대상도 표현할 수 있습니다.


노이즈로 데이터 파괴

VAE의 계층을 늘리면 잠재 변수가 많아지는 만큼 신경망으로 처리할 것도 많아집니다. 따라서 처리 시간이 길어지는 문제와 매개변수 추정이 어려워지는 문제 등이 생깁니다. 이 문제들을 해결하기 위해 ‘관측 변수에서 잠재 변수로의 변환’을 단순한 ‘노이즈 추가’로 대체합니다(노이즈는 정규 분포에서 생성). 이 아이디어를 기점으로 확산 모델을 끄집어낼 수 있습니다. 노이즈를 추가하면서 데이터를 파괴하는 과정을 확산 과정(diffusion process)이라고 합니다.

인코딩 과정을 노이즈 추가 작업으로 대체하면 계산량이 대폭 줄어듭니다.


조건 추가

지금까지의 주제는 단순히 데이터 x의 확률 분포 p(x)를 모델링하는 것이었습니다. 하지만 어떤 조건 y가 주어졌을 때 x의 확률, 즉 수식으로는 p(x | y)로 표현되는 조건부 확률을 모델링해야 더 유용합니다. 예컨대 숫자 이미지를 생성한다면 조건 없는 확산 모델에서는 무작위로 아무 숫자나 생성합니다. 반면 조건부 확산 모델에서는 8과 같은 클래스를 조건으로 주어 원하는 숫자 이미지를 만들어낼 수 있습니다.

조건을 지정하여, 드디어 내가 원하는 특정한 이미지를 생성할 수 있습니다.


첨단 이미지 생성 AI

스테이블 디퓨전 같은 이미지 생성 AI도 조건부 확산 모델과 원리는 같습니다. 여기에 몇 가지 기법을 더해 다음 그림과 같은 고품질의 이미지를 생성합니다. 이 책에서는 스테이블 디퓨전을 비롯한 첨단 이미지 생성 AI에서 사용하는 기술들을 개괄적으로 살펴봅니다.

첨단 이미지 생성 AI에 쓰이는 기술도 살펴봅니다.


이상이 이 책의 줄거리입니다. 확산 모델에 이르는 전체 과정을 하나의 스토리로 엮어서 중요한 기술들을 서로 잇고 개선하면서 나아가도록 구성했습니다. 스토리의 각 단락을 다루는 장은 다음 그림과 같습니다.

흥미롭지 않나요? 여러분도 <밑바닥부터 시작하는 딥러닝 5>와 함께 생성 모델의 세계를 탐험하며 그 매력과 가능성, 그리고 디테일에 담긴 재미에 푹 빠져들기를 바랍니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari