[ Multi-Modal(멀티모달)이란? ]
과거에는 이미지를 입력으로 주면 결과물로 이미지만 나오고, 텍스트를 입력으로 주면 결과물로 텍스트만 내보내는 모델이 주를 이뤘는데요. 요즘에는 이미지를 입력으로 주면 이미지를 설명해주는 텍스트가 나오기도 하고, 텍스트로 설명을 주면 이미지를 만들어내는 모델에 대한 연구가 활발히 진행되고 있습니다.
이렇게 단일 데이터만 사용하는 것이 아닌 여러 데이터를 한번에 사용하는 것을 "Multi-Modal(멀티모달)"이라고 합니다.
[ 하나의 모델이 Multi-Modal 데이터를 이해하는 방법 ]
이미지를 다루는 신경망들은 대부분 CNN으로 이루어져있고, 텍스트를 다루는 대표적인 신경망에는 Transformer가 있습니다. 그럼 하나의 모델이 이미지도 이해하고 텍스트도 이해하게 하려면 어떻게 해야 할까요?
간단하게 설명하자면 이미지와 텍스트 각각 latent space안에서 embedding vector를 갖도록 학습하고, 그 latent space상에서 유사한 의미를 갖는 이미지-텍스트 쌍을 이어주는 것입니다.
간단히 예시를 들어볼게요. "사과"를 입력하면 사과의 이미지를 output으로 내고, "바나나"를 입력하면 바나나 이미지를 output으로 내는 모델을 학습시켜보겠습니다.
먼저 "사과", "바나나" 텍스트를 한 latent space 에 위치하도록 학습하고, 사과와 바나나 이미지 또한 또 다른 latent space에 위치하도록 학습합니다. 그리고 이 두 latent space 상에서 유사한 것들을 연결지을 수 있도록 학습시켜주면 됩니다.
구체적인 구조는 Text-to-Image 의 가장 유명한 모델로 꼽히는 DALLE2의 구조도를 이용해 설명하겠습니다.
[ DALLE2 구조 ]
step 1) prompt가 입력되면, 텍스트 인코더를 거쳐 텍스트 임베딩 값을 추출
step 2) 추출된 임베딩을 프라이어에 넣어 유사한 쌍으로 판단된 이미지 임베딩 추출
step 2) 이미지 임베딩과 prompt를 디코더에 입력으로 넣어 이미지 생성
- 텍스트 인코더
OpenAI에서 만든 CLIP 모델을 사용합니다. 텍스트-이미지 쌍으로 된 4억개의 데이터 셋을 이용해 두 latent space 상에서 유사한 것들을 연결지을 수 있도록 학습합니다. 아래는 CLIP의 구조도입니다.
텍스트와 이미지를 입력으로 받아 각각 임베딩합니다. 총 데이터셋이 4억개이러므로 4억개 쌍에 대한 cosine similarity를 구합니다. 유사도가 가장 높은 값이 연관있는 텍스트-이미지 쌍입니다. 따라서 텍스트를 입력하면 텍스트와 유사한 이미지 임베딩을 얻을 수 있고, 이미지를 입력하면 이미지와 유사한 텍스트임베딩을 얻을 수 있게됩니다.
- 프라이어
이 프라이어 안에 diffusion 모델이 들어가는 것입니다. 텍스트를 CLIP에 넣어 유사한 이미지 임베딩을 얻어내고 그 이미지 임베딩들로 diffusion모델을 학습합니다. 이 이미지 임베딩에 noise를 추가합니다.
기존의 diffusion과 동일하게 noise를 찾아낼 수 있게 모델을 학습하면 됩니다. 그럼 학습이 끝나면 이미지에 어떤 noise가 들어갔는지 알아낼 수 있고 noise가 추가되기 전의 이미지도 생성해낼 수 있는 것이죠.
- 디코더
디코더는 전반적으로 GLIDE기반으로 되어있습니다. GLIDE는 noise를 제거하는 과정에 텍스트 임베딩으로 안내하는 방식인데, DALLE2에서는 프라이어가 추출해낸 이미지 임베딩을 함께 넣어줍니다.
[ 정리 ]
멀티모달 모델은 텍스트 인코더+프라이어+ 이미지 디코더로 구성됩니다.
CLIP과 GLIDE만으로도 이미지 생성은 가능한데 프라이어가 있어야 prompt 에 포함된 모든 정보를 반영할 수 있어 더 품질이 높은 이미지가 생성된다고 합니다. 여기서도 강력한 diffusion의 성능을 알 수가 있네요.
'AI Research > Deep Learning' 카테고리의 다른 글
[딥러닝 기본지식] Inductive Bias (1) | 2023.10.01 |
---|---|
[딥러닝 기본지식] Self Attention과 Transformer (2) (0) | 2023.08.24 |
[딥러닝 기본지식] Self Attention과 Transformer (1) (0) | 2023.08.19 |
[딥러닝 기본지식] Auto Regressive Models (0) | 2023.05.07 |
[딥러닝 기본지식] Diffusion Model (0) | 2023.05.01 |