OpenAI의 새로운 이미지 생성 모델인 DALL-E에 대해 분석해보자.
DALL-E란 openAI라는 회사에서 개발한 Text를 이미지로 변환시켜주는 모델이다. openAI에서 개발한 또 다른 모델인 GPT-3를 이용해서 개발한 모델인데, GPT-3는 현재 NLP에서 현재 글을 제일 잘 쓰는 모델로 알려져 있다.
따라서, DALL-E를 이해하려면 먼저 GPT-3를 알아야 한다.
GPT-3
Generation Pre-trained Transformer. 파라미터 수만 1750억개라는 엄청난 규모의 트랜스포머 모델이다.
트랜스포머
트랜스포머가 뭔가 엄청난 기술처럼 느껴지는데, 간단히 설명하면 Attention이라는 메커니즘을 사용하여 기존의 seq2seq 모델이 갖고 있는 한계를 극복하기 위한 모델이다.
반바지를 입고 아이스크림을 들고 있던 아이는 그것을 금방 다 먹었다.
라는 문장을 보고 사람은 여기서 그것
은 아이스크림이라는 것을 바로 알지만, 머신 러닝 모델이 이것을 이해할 수 있을까?
트랜스포머 모델과 seq2seq 모델의 차이를 살펴보자.
[seq2seq 모델]
그것
을 이해하기 위해서는 아이스크림
과 먹었다
를 동시에 보아야 한다. 하지만, 순차적으로 단어를 처리하는 RNN은 구조상 그럴수가 없다.
[트랜스포머 모델]
Attention mechanism이 추가된 트랜스포머 모델은 아래와 같이 동작한다. Attention을 직역하면 ‘집중’이다. 이름에서도 알 수 있듯이, 문장의 여러 부분을 ‘집중’해서 참고한다. 그래서 아이스크림
, 그것
, 먹었다
세 단어를 함께 ‘집중’을 할 수 있게 되고 마침내 문맥상 ‘그것’은 ‘아이스크림’ 이구나. 라는 것을 이해할 수 있게 된다.
출처: https://jiho-ml.com/weekly-nlp-25/
특징
이러한 트랜스포머 모델을 사용한 GPT-3는 아래와 같은 특징이 있다.
- 3000억개의 데이터셋으로 1750억개의 파라미터를 활용하여 학습
- 700GB GPU 메모리 상에서 학습 시킴
- 막대한 데이터셋, 파라미터를 학습시키기 위해 퓨샷러닝(few-shot learning) 기법을 사용함
- 퓨샷러닝: 소량의 데이터만으로 기계가 학습이 가능한 방식
- 언어 생성, 기계 번역, 질의 응답 등의 다양한 유형의 실험에서 우수한 성능을 보여줌
단점
위와 같은 특징 때문에 단점 또한 존재한다.
- 모델이 너무 큼
- GPT-3를 학습시키는 데 드는 비용을 정확히 추산할 수는 없지만 약 50억 원 정도가 소요되는 것으로 추정됨
- 짧은 문맥에 대한 예측만 함
- GPT-3가 생성하는 모든 결과는 가장 최근의 2048 토큰( 문자열을 block으로 나눈 형태) 만 보고 생성하기 때문에 사람처럼 전체적인 문맥을 파악하기 어려움
DALL-E
DALL-E는 앞에서 설명한 GPT-3 모델에 text-image 쌍의 dataset을 학습시켜 text로부터 image를 변환할 수 있도록 만든 모델이다.
DALL-E의 트랜스포머는 GPT-3와 구조가 똑같지만 들어가는 데이터의 형태가 다른 것이다. 120 억개 매개 변수를 사용하는 GPT-3의 작은 버전이라고 생각하면 된다.
구동 순서
텍스트 토큰와 이미지 토큰이 함께 하나의 데이터 스트림으로 구성된다.
앞에 먼저 텍스트가 토큰화 되어 있고 이미지를 펴서 일직선으로 만든다. 32x32 픽셀로 구성된 이미지는 일자로 펴 1024개가, 마치 한 단어, 한 단어 들어가듯이, 하나의 토큰으로 변환된다.
이렇게 변환된 text+image 토큰들은 GPT-3 모델을 거쳐 주어진 텍스트 그리고 여태까지 자신이 예측한 픽셀값들을 전부 고려하여 다음 픽셀이 무엇일지 예측(생성)한다.
장점
이미지가 너무 고화질이면 예측해야 하는 픽셀 값이 기하급수적으로 늘어나는데 DALL-E에서는 Discrete Autoencoder라는 다른 모델을 학습시켜 이미지를 압축시키는 과정을 통해서 계산량을 줄여준다.
단점
- 아직 저화질의 이미지 밖에 생성하지 못한다.
- 생성된 이미지가 바로 쓰이기에는 퀄리티가 아쉽다.
Zero-shot image generation
DALL-E의 논문을 보면 Zero-shot image generation by a text prompt
라는 Title을 볼 수 있다.
Zero-shot image = 0장의 이미지
라는 뜻 같은데, 이미지가 아무 것도 없어도 학습을 알아서 한다는 건가? 인공 지능은 라벨을 붙여주던 붙여주지 않던 데이터가 있어야 학습을 하는데 말이 안되지 않는가?
그게 아니고 인공 지능에서 Zero-shot
이라는 용어가 붙으면 한 번도 학습시킨 적 없는(모델이 한 번도 본 적없는) 것이라고 보면 된다. 여기에 image가 붙어 한 번도 학습시킨 적 없는 image
. 여기에 generation이 붙어 한 번도 학습시킨 적 없는 image를 생성
한다는 뜻이 된다.
기존 지도 학습은 고양이와 강아지에 대해서만 학습을 하면 악어 이미지를 줘도 고양이나 강아지로밖에 답을 내지 못한다.
하지만, Zero-shot은 어떤 이미지에 대해 학습한 경험이 없어도 이미 모델이 학습한 정보를 변형하고 해석하여 학습했던 문제와 학습하지 않았던 문제 간의 특징을 분석하여 답을 에측한다.
공개 여부
Open AI의 DALL-E는 공개하지 않아서 사용할 수 없지만, Phil Wang가 공개한 DALL-E의 pytorch 버전을 사용해보면 DALL-E의 성능이 아직 상용화시키기엔 먼 것 같다는 생각이 든다.
ref
https://jiho-ml.com/weekly-nlp-40/ https://m.blog.naver.com/jaeyoon_95/221760816958 http://www.aitimes.kr/news/articleView.html?idxno=17455