본문 바로가기

AI

[OpenAI] Image GPT - 이미지 분야에 트랜스포머 활용하기

** 링크: https://openai.com/blog/image-gpt/

** 깃헙: https://github.com/openai/image-gpt


iGPT 소개

자기지도학습(Self-supervised learning)

자기지도학습은 사람 라벨링 없이도 대량의 raw 데이터를 활용하여 모델이 인풋에 대한 좋은 representation을 생성하는 방법을 배우는 방법이다. 언어 AI의 경우  GPT, BERT 등의 모델은 자기지도학습을 통해 도메인과 무관한(domain agnostic) 특성을 학습하였고, 다운스트림 태스크에서 좋은 성능을 보였다. 특히 이 모델들은 임의 길이의 1차원의 시퀀스를 처리하기 위해 Transformer 아키텍쳐를 사용하였다. 

 

이미지를 Transformer로 처리하기

iGPT는 이미지를 처리하기 위해 이 Transformer을 사용했다. 이미지는 픽셀로 이루어진 긴 시퀀스라도도 볼 수 있기 때문이다. 실험 결과, 모델은 2-D 이미지에서 나타나는 물체의 형태나 카테고리 등을 이해할 수 있는 것을 확인할 수 있었다.

 

- 그 증거로 모델은 사람이 라벨을 제공하지 않더라도 다양한 형태의 이미지를 잘 생성해냈다.

 

<모델 인풋으로 이미지의 절반에 해당하는 픽셀을 주었을 때, 상당히 일관성있게 나머지 부분을 완성함>
<또한, beam search나 nucleus sampling과 같은 트릭 없이도 GPT모델은 사실적인 그림을 생성>

 

- 또한 모델은 ImageNet 챌린지에서 unsupervised 정확도 측면에서 SOTA에 가까운 성능을 달성하였다.

 

iGPT는 언어모델인 GPT-2에서 사용한 것과 동일한 트랜스포머 구조를 활용하였다. 이 모델은 현존하는 최고 성능의 unsupervised CNN 모델에 비하면 feature 생성을 위해 훨씬 많은 연산이 필요하다. 그러나 올바른 모델 prior이 알려지지 않은 새로운 도메인에 대해서도 GPT-2 large 모델은 도메인 특화적인 아키텍쳐 수정 없이도 좋은 feature을 학습할 수 있다는 점에서 강점이 있다. 


언어 GPT vs 이미지 GPT

언어 모델은 사전학습 과제로 단어 예측을 사용하여 좋은 성과를 낼 수 있었다. 이러한 성공의 요인에 대한 한 가지 가설로 다운스트림 태스크에서 필요한 인스턴스들이 자연스럽게 raw 코퍼스에 존재한다는 점을 생각해볼 수 있다. 예를 들어 질문 다음에 답변이 나와있는 텍스트들은 질문답변 과제에 도움을, 긴 텍스트 뒤에 요약을 해주는 문서들은 요약 과제 수행에 도움을 줄 수 있다. 반면에 이미지에 있는 픽셀의 시퀀스들은 그 이미지가 어떠한 라벨에 속하는지, 정보를 명확하게 포함하지 않는다.

 

이렇게 감독이 불분명한 상황임에도 불구하고, GPT-2는 "다음 픽셀 맞추기" 과제를 통해 좋은 성능을 낼 수 있었다. 충분히 캐퍼시티가 큰 트랜스포머 모델을 이용하여 다음 픽셀 예측 과제를 수행한 결과, 모델은 다양하면서도 명확히 식별이 가능한 이미지들을 생성할 수 있게 되었다. 그리고 식별 가능한 이미지를 생성할 수 있는 모델은 또한 물체가 속한 카테고리에 대한 정보도 알 수 있다.(Analysis by Synthesis)

 

연구 결과, 다음과 같은 두 가지 사실을 밝혀낼 수 있었다.

1. 더 좋은 생성 모델은 분류 태스크 성능이 더 좋다.

2. GPT-2를 생성 능력을 극대화하도록 학습한 결과, 다양한 분류 과제에서 좋은 성능을 낼 수 있었다.

 

모델 구조

- 시퀀스 생성 모델은 아주 광범위하게 사용할 수 있는 비지도학습 기법이다. 데이터를 시퀀스로 표현할 수만 있다면 추가적인 엔지니어링 없이 이 기법을 적용할 수 있기 때문이다. 

 

- 이러한 이점을 활용하기 위해, 본 논문에서는 성능을 높이기 위한 추가 코딩 없이 이미지 픽셀 시퀀스를 그대로 Transformer에  넣었다. 예를 들어 relative attention, sparse attention, 2-D position embedding과 같이 이미지 처리를 위해 더 유리하게 사용할 수도 있었은 어떠한 조취도 취하지 않았다.

 

- 모델 파라미터 개수는 iGPT-S(76M) / iGPT-M(455M) / iGPT-L(1.4B)로 선택하였다. (ImageNet 기준)

- 또한 이미지넷 데이터 + 웹상의 이미지를 활용하여 iGPT-XL(6.8B)도 학습해 보았다.

- 이미지 해상도는 32x32 / 48x48 / 64x64의 저해상도 사진에 대해서만 실험하였다. (dense attention이 가지는 한계)


실험 결과

 

결과 1. iGPT가 생성한 feature을 추출하여 다운스트림 태스크에 활용

- iGPT의 레이어가 리턴하는 feature에 logistic regression을 적용하여 분류 과제 수행 (iGPT fine-tuning X)

- 중간 레이어에서 생성한 feature을 사용했을 때, 분류모델의 성능이 가장 좋게 나옴

- 이는 다음 픽셀을 생성하는 데에 필요한 feature가 물체의 카테고리를 가장 잘 예측할 수 있게 하는 것은 아니라는 것을 보여줌

- 따라서 생성 모델은 두 phrase로 작동한다는 것을 유추해볼 수 있음

   a. 먼저 주변에 있는 이미지 문맥을 사용해 문맥에 맞는 이미지 feature을 만들어냄

   b. 이 문맥화된 feature을 사용하여 조건부로 다음 픽셀 예측 과제를 수행함

- 이러한 관측 결과는 중간 feature을 사용하도록 수동 구현한 아키텍쳐인 bottleneck auto-encoder 떠올리게 한다..!

 

- 또한, 생성을 잘 하는 모델이 분류 태스크에서의 성능도 좋다는 것을 확인할 수 있었음

<기울기는 사전학습 스텝 수; 131K/262K/524K/1000K별 성능 향상을 보여줌>

 

결과 2. BERT-like 사전학습 과제와 비교

- 모델이 생성한 feature을 사용해 분류 태스크를 수행할 경우, BERT의 MLM 보다 GPT의 사용한 다음 픽셀 예측 과제가 월등함.

- 하지만, 전체 모델을 fine-tuning하는 접근법에서는 BERT 방식의 사전학습이 성능이 더 좋았음.


한계점

- GPT-2 모델을 그대로 사용하기 때문에 계산량이 매우 많다. iGPT-L의 경우 V-100 GPU로 2500일 동안이나 학습해야 MoCo 모델(70일 소요)에 비견할만한 성능을 얻을 수 있었다. 

 

- 또한, full self attention으로 인해 저해상도의 사진만을 처리할 수 있다. 반면에 Convolution을 기반으로 하는 모델들의 경우 고해상도의 인풋을 쉽게 받아들일 수 있다. 만약 도메인 불특정의 multi-scale 트랜스포머를 학습하고자 한다면 지금보다도 훨씬 많은 계산량이 필요할 것이다. 

 

- 이 논문은 도메인 지식에 대한 하드코딩 없이도 트랜스포머 기반의 iGPT모델이 좋은 비지도학습식 representation을 생성할 수 있다는 것을 보인, proof-of-concept 실험이었다고 볼 수 있다. 하지만 이 모델은 너무 많은 자원을 소모함에도 불구하고 Convolution 기반의 모델에 비해 정확도는 떨어지기 때문에 현실에서 활용하는 것은 어려워보인다.

 

- 뿐만아니라 생성 모델은 근본적으로 모델이 학습시에 본 예제들에 대해 바이어스되어있을 수 있다. 물론 어떠한 편향들은 좋은 바이어스이다. 갈색과 초록색의 픽셀이 섞여 있는 장면은 잎으로 뒤덮인 나무일 수 있다는 것을 모델이 아는 것은 중요하다. 하지만, 나쁜 바이어스도 존재한다. 예를 들어 과학자에 대한 이미지가 대부분 남성이었다면, 모델은 다양한 성별보다는 남성에 치중한 이미지를 생성해내게 될 것이다. (언어에서도 나타나는 편향 문제가 여기서도... 흥미롭다....)


(my comment) Transformer의 Self-attention이 필연적으로 초래하는 엄청난 계산량을 어떻게 감당하는지 궁금했는데.. 결국 저해상도로 가는 수밖에 없었다고 함. Sparse Attention + 2D 위치 임베딩 등 보다 이미지에 적합한 모델링을 하면 더 좋아질 수 있을지 궁금함. but 직관적으로는 이미지를 픽셀의 시퀀스로 밀어넣어서 CNN sota 모델을 뛰어넘는 성능이 나올 수 있을지.. 잘 모르겠음. 어쨌든 이미지 분야에서도 좋은 Self-supervised learning 태스크를 고안하는 것이 중요하고, 언어에서 사용한 사전학습 기법을 그대로 썼는데, 꽤 좋은 성능을 얻을 수 있었다는 것이 재미있었음.

GPT 방식이 더 좋은 layer feature을 생성함에도 불구하고 BERT 방식이 fully fine-tuning 셋팅에서 더 좋았다는 것은 왜 그런지 궁금하다.