GENERALIZATION IN DIFFUSION MODELS ARISES FROM GEOMETRY-ADAPTIVE HARMONIC REPRESENTATIONS


https://openreview.net/pdf?id=ANvmVS2Yr0


딥러닝 관련 학회중 하나인 ICLR이 열려서 많은 논문들이 발표되었습니다. 그중에 우수논문으로 꼽힌 논문중 2개를 소개하려고 하는데 그 첫번째가 요거입니다. 언어모델과는 약간 거리가 있는 디퓨전 모델이긴 하지만, 딥러닝의 학습 원리를 심층적으로 이해하는데 도움이 될 것이라 생각해서 소개합니다.


스테이블 디퓨전 같은 딥러닝 모델을 이용하면 다양한 이미지 야짤를 생성할 수 있습니다. 그런데 디퓨전 모델은 과연 생성하는 이미지를 정말 학습한 것일까요? 아니면 단순히 외워놨다가 뱉어내는걸까요?


위의 논문에서는 딥러닝 모델이 어디까지 학습을 한건지 분석해보기 위해 재미있는 실험을 진행합니다. 일부러 간단한 모델을 만들어놓고 (해상도 80*80, 흑백 1채널) 학습의 대상이 될 데이타셋의 규모를 1장, 10장, 100장, 1000장, 10000장, 100000장으로 늘려가면서 학습을 돌립니다. 


그리고 위의 1장~100000장과는 전혀 겹치지 않는 또 다른 이미지셋들을 100000장 준비해놓고, 그 이미지를 1장만, 10장만, 100,... 100000 장 학습시킨 또다른 모델을 만듭니다.



위의 그림을 보면 S1 과 S2 는 서로 겹치지 않는 100000 개의 이미지들입니다. 맨 왼쪽 N=1 이라고 써 있는 남자 얼굴은 S1 에 있는 100000 개중 한개의 이미지만 뽑아서 그 이미지만 계속 학습시킨 경우입니다. 첫번째줄이 데이터셋이고 두번째줄은 그 데이터셋으로 학습시킨 이미지입니다. 한장으로만 학습시켜서 당연한 결과겠지만, 거의 똑같은 이미지가 나옵니다. 학습이라기보단 단순 암기라고 봐야겠습니다.


맨 왼쪽 세번째줄과 네번째줄은 S1 과 겹치지 않는 두번째 데이터셋 S2 에서 한장 (여자 얼굴) 만 뽑아서 학습시킨 결과입니다. 역시 암기의 산물이 나옵니다.



계속 데이타셋의 장수를 늘려가면서 학습을 시킨 모델에서 뽑은 이미지와, 원래 데이타셋중 그 이미지에 가장 가까운 (코사인 유사도로 계산) 이미지를 비교해보면 N=1000 까지는 거의 암기에 가깝다고 할 수 있는 똑같은 얼굴이 나옵니다만, N=10000 에서 생성한 이미지를 보면 데이타셋과 좀 다른 이미지가 나오기 시작하고 N=100000 에서 생성한 이미지는 학습한 데이타셋에 있는 얼굴과 겹치지 않는 얼굴이 나옵니다.


그런데 재미있는 것은 서로 겹치지 않는 데이터셋 S1, S2 에서 학습한 모델을 갖고, 같은 노이즈에서 시작해서 각각 이미지를 생성시켰더니 그 두 이미지는 거의 닮게 나오더라는 것입니다 (맨 오른쪽 두번째줄과 세번째줄의 이미지)  


전혀 다른 데이터셋을 갖고 학습했는데도 비슷한 결과에 도달했다는 점, 그리고 결과물은 원래 학습데이터와 상당한 차이점을 보인다는 점은, 디퓨전 모델이 만든 얼굴은 단순한 암기의 산물이 아니라, 그 본질을 학습해서 만들어진 결과물이라는 증거가 될 수 있겠습니다. 


한편으로는 디퓨전 모델들이 만들어내는 AI 얼굴 (주로 여자?) 들이 대부분 비슷비슷하게 수렴하는 것도 같은 맥락으로 이해할 수 있습니다. 평균에 수렴한 결과물이 나올 가능성이 높기 때문입니다. 


물론 평균에서 벗어나기 위해 샘플링시 조건을 부여하는 방법을 쓸 수 있습니다. 프롬프트를 적어준다던가, 컨트롤넷이나 IP Adapter 같은 것을 적용한다던가.. 다양한 방법들이 있지만 공통적인 원리는 Unet 의 셀프어텐션이나 크로스어텐션에서 계산하고자 하는 조건부 확률분포에 영향을 주는 것입니다.


논문의 후반부는 그렇다면 학습은 구체적으로 어떤 형태를 띄는가를 탐구하는데, 디퓨전 모델이 학습하려고 하는 잠재공간은 geometry-adaptive harmonic bases 의 형태들과 가깝다는 점을 밝힙니다. 



예를 들면 위와같이 여자의 얼굴에 노이즈를 가한 다음에 원래대로 복원하는 디노이징 모델을 학습시키고 학습된 형태를 시각화해보면 여러가지 기하 패턴들의 조합이라는 형태를 디퓨전 모델이 학습한 결과임을 알 수 있습니다. 


모델이 얼마나 학습을 잘 하냐 못하냐는 점은 모델의 구조가 제시하는 inductive bias 가 얼마나 데이터와 잘 맞냐에 달려있다고 할 수 있습니다. 그런 점에서 위의 기하 패턴들의 기본 형태에 잘 맞을것 같은 이미지만 모아 데이터로 만들어서 학습을 해본다면 inductive bias 가 극대화될 것이기 때문에 학습이 빨리 이루어지지 않겠느냐? 라는 가설을 세우고 실험을 해봅니다



실험 결과는 예상대로 저런 패턴은 디퓨전 모델이 기본으로 사용하는 재료이니 빠르게 학습하는 것으로 나옵니다. 


결론적으로 기억해둘만한 포인트라면

 - 모델의 구조 대비 적은 데이터로 학습을 하면 그냥 암기를 한 결과가 나오지만

 - 어느 이상의 규모로 학습을 하게 되면 그제서야 암기가 아닌 이해를 하기 시작한다


자작 디퓨전 모델이나 로라 모델을 만드는 분들도 저런 원리를 생각해서 로라의 랭크값을 데이터셋의 크기에 맞게 조절하면 단순 암기가 아닌 모델을 학습하는데 도움이 될 것 같습니다.