Calvin Luo, Understanding Diffusion Models: A Unified Perspective
์ฌ์ค ์ด ์๋ฃ๋ ArXiv์ ์ฌ๋ผ์จ ์งํ ๋ค์ด๋ก๋๋ฅผ ํด ๋๊ณ ์๊ณ ์์๋ ์๋ฃ์ ๋๋ค.
์ด์ฉ๋ค ๋ค์ ํ์ด๋ณด๋ ๊ตฌ์ฑ๊ณผ ๋ด์ฉ์ด ์ข์ ๊ฒ ๊ฐ์ ๊ณต์ ํฉ๋๋ค.
์ ์๋ diffusion model์ Markovian Hierarchical VAE๋ก ๊ฐ์ฃผํฉ๋๋ค.
๊ธ์ ์ด๋ฐ์๋ ELBO์ VAE ์ค๋ช
์ผ๋ก ๋น๋์
์ ํ๋ค
diffusion model์ ์ค๋ช ์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ ๋์ด๊ฐ๋ ๊ตฌ์ฑ์ผ๋ก ๋์ด ์์ต๋๋ค.
๋ค๋ฅธ ์๋ฃ๋ค์ ๋ณด๋ฉด score-based model์ ์ค๋ช ๋ถํฐ ์์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ ์๋๋ฐ
๊ทธ๋ฐ ์๋ฃ์ ๋นํ๋ฉด ์ ๋ง ์ดํดํ๊ธฐ ์ฌ์ด ๊ฒ ๊ฐ์ต๋๋ค.
Diffusion model์ ๋ํด์ ๊ถ๊ธํ๋ฐ ๋ฐฐ๊ฒฝ์ง์์ด ์์ด์ ๋ ผ๋ฌธ์ ๋ฐ๋ก ๋ณด๊ธฐ ์ด๋ ค์ด ๋ถ๋ค์๊ฒ๋
๋ง์ ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
Arxiv ์ฃผ์
์ ๊ณต์ชฝ์ ์๋๋ฐ ์ฌ๋ฐ๊ฒ ๋ณผ๊ฒ ใฑใ - dc App
์ฌ์ค ์ ๋ ์ ๋ชจ๋ฅด๋ ๋ถ์ผ์์... ์ ๊ฐ ๋ฌด์จ ์๋ฆฌ๋ฅผ ์จ ๋์๊ฑด์ง๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค์ ใ ใ ใ
์ ๊น kld ๋ mi๋ฅผ ๋ฉํธ๋ฆญ์ผ๋ก ์ด๋ค๊ณ elbo๊ณต๋ถ๋ฅผ ํ๋๋ฐ ์ด๋ ต๊ธดํ๋๋ผ - dc App
ELBO๋ฅผ ์ดํดํ๋ ค๋ฉด Variational Inference์ KL divergence๋ฅผ ์์์ผํ๊ณ ๊ทธ ๋์ ๋ ์ ์๊ธฐ ์ํด์๋ ์๋ฆฌํต๊ณํ์ด ํ์ํ๊ณ , ์๋ฆฌํต๊ณํ์ ์ ์ดํดํ๋ ค๊ณ ํ๋ค๋ณด๋ ์ธก๋๋ก ์ด ํ์ํ๊ณ ........
์์ฅ ์ง๋ฌธํ๋ ํด๋ ๋จ? - dc App
์๋๊ฒ ์์ด์ ์๋ง ๋ชจ๋ฅธ๋ค๊ณ ํ ๊ฒ ๊ฐ์ง๋ง ํ์ ๋ ๋ผ์.
cs231n๋ณผ๋ asssignments๋ค ํ๋ฒ์ ๋ชปํ๊ฒ ๋๋ฐ ์ผ๋จ 1-3๊น์ง ํ๋๋ฐํด ๋๋ฆฌ๊ณ ๊ตฌํ์๋๊ฑฐ ๋ณด๊ณ ๊ตฌํํด๋ ์๊ด์์? ๋๋ฌด ์ด๋ณด์ ์ด๋ผ ๋ฏธ์ - dc App
1-3๊น์ง๋ผ๋๊ฒ lecture 1โ3 ์ ๋งํ๋ ๊ฑฐ๋ผ๋ฉด ์ดํด๊ฐ ๋์ง ์๋ ๋ถ๋ถ์ CS231n ๊ฐ์ ์ฌ์ดํธ์ course notes๋ฅผ ์ฐธ๊ณ ํ๋ฉด์ ๋ช ๋ฒ ๋ฐ๋ณตํด์ ๋ค์ผ๋ฉด ๋ ์ข๊ฒ ์ฃ . '๊ตฌํ์๋๊ฑฐ ๋ณด๊ณ ๊ตฌํํด๋ ์๊ด์์?' ์ด ๋ฌด์จ ๋ป์ธ์ง ์ ์ดํด๊ฐ ๋์ง ์๋ค์. ๊ตฌํํ์ง ๋ชปํ ๋ถ๋ถ์ ๋ค๋ฅธ ๊ตฌํ๋ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ ์์ฑํ๋ค๋ ์๋ฏธ๋ผ๋ฉด ์ฝ๋๋ฅผ ์ดํดํ๋ค๋ ์ ์ ํ์ ํฌ๊ฒ ์๊ด ์์ ๊ฒ ๊ฐ์์.
๊ทธ๋ฐ๋ฐ assignment๊ฐ ๋๋ฌด ์ด๋ ต๊ฒ ๋๊ปด์ง๋ค๋ฉด '๋ฐ๋ฐ๋ฅ ๋ถํฐ ์์ํ๋ ๋ฅ๋ฌ๋ 1'์ ๊ฐ์ด ๋ณด์๋๊ฑธ ์ถ์ฒ๋๋ ค์. ์ ๊ธฐ์ต์ผ๋ก ์ ์๊ฐ CS231n assignments๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฑ ์ ์ผ๊ฑฐ๋ ์. ํ๋ค๊ฒ ์ง๋ง CS231n๊ณผ ๋ฐ๋ฐ๋ฅ~ ์ฑ ๋ง ์ ๋๋ก ๊ณต๋ถํ๋๋ผ๋ ์์ผ๋ก ๋ฅ๋ฌ๋ ๊ณต๋ถํ์๋๊ฒ ํ์ฐธ ์์ํด์ง๊ฑฐ์์.
๋ชจ๋ฐ์ผ์ด๋ผ์ ์ง๋ฌธ์ด ๋๋ฌด ์ด์ํ์ ๋ฏธ์; assignment1 ~ assignment3๊น์ง ๋งํ๋ ค๋๊ฑฐ์์ ๊ตฌํ ์๋๊ฑฐ์์๋ ์๋ชป ์ ์๋๊ฑฐ ๊ฐ์ 'assignment1~3๊น์ง ์ด๋ฏธ ๋ค๋ฅธ์ฌ๋์ด ๊ตฌํํ ์ฝ๋ ๋ณด๋ฉด์ 1~2๋ฒ ์ ๋ ์ฝ๋๋ณด๊ณ ์ดํ์ ๊ฐ์ ๋ช๋ฒ ๋ ๋ค์ด๋ณด๋ฉด์ ๋ค์ assignment ๊ตฌํํ๋๊ฒ ์ด๋ฐ?' ์ผ๋ก ์์ ํด์ผํ ๋ฏ
์๋ ๊ธ์ ๋ฆ๊ฒ๋ดค๋ค ์ฑ ์ ์ผ๋จ ๊ฐ๊ณ ์์ผ๋๊น ๊ฐ์ด ์ฐธ๊ณ ํด๊ฐ๋ฉด์ ์ต๋ํ ํผ์ ๊ตฌํํด๋ด์ผํ ๋ฏ ใฑใ ใฑใ
์ด๊ฑด ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ ๋๋ค. ์ ๋ ๋ค๋ฅธ ์ฝ๋๋ฅผ ๋จผ์ ๋ณด๋ ํ์ ์์ฒด๋ฅผ ๋ถ์ ์ ์ผ๋ก ์๊ฐํด์. ์ด๋ฏธ numpy๋ pytorch ์ฝ๋์ ์ต์ํด์ ์ฝ๋๋ง ๋ด๋ ๋ด์ฉ์ ์ดํดํ ์ ๋๋ผ๋ฉด ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์๋ง ๋จ์ ๊ตฌํ์ ๋ณด๋๋ผ๋ ์ ๋๋ก line-by-line์ผ๋ก ์ดํดํ๊ณ ๋์ด๊ฐ๋ ค๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด๊ฑฐ์์. ๊ฒ๋ค๊ฐ CS231n์ ๋ณธ์ง์ ์ฝ๋ ๊ตฌํ ๋ฐฉ๋ฒ๋ณด๋ค๋ ์๊ณ ๋ฆฌ์ฆ์ ์ดํด๋ผ๊ณ ์๊ฐํ๋๋ฐ, ์ฝ๋๋ก ๊ณต๋ถ๋ฅผ ํ๋ ค๊ณ ํ๋ค๋ฉด ์ ์ฒด์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๋ ๋ฐ์ ์์ด์ ๋งค์ฐ ๋นํจ์จ์ ์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํด์. ๋จ์ง ๊ณผ์ ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ์๊ฐํ๋ฉฐ ์ฝ๋๋ก ์ฎ๊ธฐ๋ฉด์ ์ดํด๋ฅผ ๋์ฑ ๊ฐํํ๊ณ , ์๋ชป ์ดํดํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์์ ํ ์ ์๋ ๊ธฐํ๋ฅผ ์ฃผ๊ณ , ์ค์ ๋ก ๋์ํ๋ ๋ชจ์ต์ ํ์ธํ๋ฉฐ ์ฝ๊ฐ์ ์ฌ๋ฏธ(?)๋ฅผ ์ฃผ๋ ๋ถ๊ฐ์ ์ธ ์์๊ฒ ์ง์.
ใฑใ ใฑใ ๊ทธ ๋ง ๋ค์ผ๋๊น ์ ์ ์ด ํ ๋๋ค ์ผ์ ์์ ๋๋ธ๋ค๊ธฐ๋ณด๋ค ๊ทธ๋ฅ ๊ฐ์ ํ๋๋ ๋ช์ผ ๊ณ ๋ฏผํด๋ด์ผ ํ๋๊ฒ ๋ง๋๋ฏํจ ์ฑ ๋ ์๊ณ ์๊ฐ์ด ๋ง๋ฅ ๋ชจ์๋๊ฒ๋ ์๋๋๊น ๋ง์ ์ข ํธํ๊ฒ ๋จน๊ณ ์ฌ์ ๋กญ๊ฒ ํด์ผํ ๋ฏ - dc App
์ ๋ง์นจ ddpm ํ๋๋ผ ํ์ํ๋๋ฐ ใณใณ ์ญ์ ์์ฆ ํธ๋ ๋์ธ๊ฐ๋ด
hierarchical vae ์ค๋ช ํ๊ณ ๋ํจ์ ์ผ๋ก ๋์ด๊ฐ๋๊ฑฐ ๋ณด๋ ์ง์ง ๋ณด๊ธฐ ๋๋ฌผ๊ฒ ์ ๋๋ก ์ค๋ช ํ๋ ๊ธ์ธ๋ฏ - dc App
ddpm ์ ๋๋ก ์ค๋ช ํ๋ ๊ฐ์ ๋ณด๊ธฐ๊ฐ ํ๋ฌ - dc App
์ค ๊ฐ์ฌํฉ๋๋ค์ฃผ๋ฑ๋