DALL - E2 인공지능 모델이 만들어지는 방법

Open AI라고 하면 gpt밖에 몰랐는데, DALL-E2라는 인공지능 모델도 있었나보다.

이 모델은 gpt와 달리, 텍스트를 넣어주면 분석해서 이미지를 생성해주는 모델이라고 한다. (아 그게 이거였구나 싶다)

 

 

 

달리는 일단 기본적으로 텍스트와 이미지를 매칭시켜줘야 하기 때문에 transformer language 모델과, convolutional neural network라는 모델을 합쳤다.


(이렇게 두 개를 합쳐서 key - value pair를 training했다고 한다. gpt reference 원문이 영어라 한글보다 영어로 설명하는게 더 많아지는것같다..)

 

 

 

 

트레이닝 과정

DATA Collection, DATA Preprocessing

위에서 말한 트레이닝의 첫 번째 단계는 DATA Collection이다.
이미지를 생성하기 위해서 이 텍스트가 어떤 이미지다 라는 데이터를 많이 가지고 있어야 한다.

 

그 다음으로, 이렇게 이미지를 설명하는 텍스트를 전부 모으고 clean up 해서 어느정도 사이즈를 맞추는 과정이 필요한데 이것을 DATA Preprocessing이라고 한다.
데이터를 가져온 후 resizing과 normalizing 하고, 토큰화 시키고 embedding vector로 인코딩하는 과정을 총합해서 말한다.

 

 

 

 

Supervised Learning 과 UnSupervised Learning

 

트레이닝의 단계를 알아봤는데, 달리를 트레이닝 시키는 방법엔 Supervised Learning과 UnSupervised Learning이 있다.

 

Supervised Learning는 일단 어떤 정확한 데이터를 주고서 이 정확한 데이터가 어떤 것이라는 정보를 계속 알려주는 것이다. 이것은 yes, 저것은 no. 이것은 자동차고 저것은 동물. 이런식으로 다 설명을 해주면서 트레이닝 시키는 것이다.

 

UnSupervised Learning은 기존의 데이터를 갖고 기본에 보지 않았던 새로운 것을 생각하게 하는 것이다. 이미 트레이닝 시켰던 이미지 말고 새로운 이미지를 창조하게끔 만드는 방법이다.

 

 

NLP , CNN 단계

다음으로 DALL-E 모델 아키텍쳐는 이미지를 생성하기 위해 NLP (natural language processing)과 CNN (convolutional neural network) 트레이닝을 한다.

https://www.assemblyai.com/blog/how-dall-e-2-actually-works/

OpenAI에는 Clip이라는 프로세스를 사용해서 Prior라는 스테이지에 데이터를 generation한다.

우리가 프롬프트를 넣으면 방금 말한 Clip에서 단어들을 토큰화시키고 text embedding을 하는 것이다.
여기서 텍스트 임베딩은 word를 컴퓨터가 알아들을 수 있게끔 바꾸는 작업이다.
(우리가 입력한 문장들을 벡터로 바꾸는 작업)

그리고 Clip embedding을 해서 최종적으로 이미지를 생성한다.

 

https://www.geeksforgeeks.org/clip-contrastive-language-image-pretraining/

지금까지 말해왔던 Clip 프로세스는
Constrastive Language-Image Pre-training 의 의미로, language와 이미지를 대조하는 작업을 pre training한다는 말이다.

이 작업은 이미지와 텍스트의 관계를 어떤 식으로 효과적이게 연결시킬 수 있을지 훈련한다.

 

 

우리가 텍스트를 넣으면 텍스트 인코더를 통해서 11, 22, 5 등의 숫자로 변하고, 이미지를 임베딩으로 인코더에 넣으면 역시 숫자로 변환한다.

이렇게 만든 숫자들을 행렬에 넣는데, 하늘색 부분이 이미지와 텍스트와의 연관성이 가장 높은 부분이라는 뜻이다.
연관성이 큰 하늘색 부분은 maximizing하고, 나머지 흰 부분은 minimizing 한다.

 

다음은 그림대로 텍스트들을 분류시킨 data set을 넣었을 때, 이 이미지가 어떤 식으로 나오는지를 확인하는 작업을 한다.

이러한 작업들을 통틀어서 Clip이라고 한다.

 

 

 

 


 

 

 

달리가 만들어지는 과정

 

달리의 주요한 단계는 4 가지로 볼 수 있다.

1. text embedding 단계는 word를 숫자로 바꾸는 과정.

 

2. prior stage 단계는 그림을 그리기 전에 스케치를 하는 단계.

여기 prior stage 단계에서 스케치를 하는 과정을 더 자세히 알아보자면, Diffusion이라는 모델을 사용한다.

https://encord.com/blog/diffusion-models/

기본적인 이미지에 조금씩 노이즈를 넣다보면 어느 순간 이미지가 사라지는 순간이 있다.

이제 반대로 이 과정을 back tracking 해서 노이즈를 조금씩 지운다.

이렇게 기존에 있던 이미지를 다시 되살리게 되는데, 이런 방식으로 모델이 그림을 그리는 방법을 배우게 된다. 이것을 diffusion model이라고 한다.

 

 

다시 돌아와서
3. image embedding 단계는 이미지를 벡터 공간에 넣는 과정.

 

4. decoder stage(unClip) 는 기존에 그렸던 윤곽을 가지고 보다 많은 디테일과 특징들을 한꺼번에 다 넣으면서 그림을 그리는 역할을 한다. 이것을 unClip이라고 하는데, OpenAI는 Glide diffusion model을 사용했다.

 

Glide diffusion model은 랜덤 노이즈에서 시작해서 점차 이미지로 변환시키는 프로그램이다.
text와 Clip embedding의 특정 특징들을 유지하면서 노이즈를 추가한다. 노이즈를 지울 부분은 지우면서.
노이즈를 지우면서 이미지를 조그맣게 만들었으면 이 이미지의 크기를 크게 늘린다.

 

 


레퍼런스

inflearn에서 미쿡엔지니어 님의 강의 정리

https://www.inflearn.com/course/%EC%8B%A4%EB%A6%AC%EC%BD%98%EB%B0%B8%EB%A6%AC-openai-chatgpt-api/dashboard

 

실리콘밸리 엔지니어와 함께하는 OpenAI API (ChatGPT) | 미쿡엔지니어 - 인프런

미쿡엔지니어 | OpenAI API와 함께 미래를 그려보세요! OpenAI는 인공지능 분야의 선두주자로, 항상 최첨단 기술을 제공합니다. GPT-4 기반의 OpenAI API는 인간과 같은 대화를 가능하게 해주어 여러 분야

www.inflearn.com