SJ_Koding

GPT3에 대해 이해해보자 (GPT 3편) - Language Models are Few-Shot Learners 본문

LLM

GPT3에 대해 이해해보자 (GPT 3편) - Language Models are Few-Shot Learners

성지코딩 2024. 3. 21. 14:48

 

 

 

GPT-1에 대해 이해해보자 (GPT 1편)

Chat GPT의 시초, GPT-1 부터 차근차근 알아보자 (본 포스팅은 AI업계에서 유명하신 허민석 개발자님의 유튜브 GPT-1(밑바닥부터 알아보는 GPT) 강의를 참고했습니다.) What is GPT? Generative Pre Training of a la

sjkoding.tistory.com

 

GPT-2에 대해 이해해보자 (GPT 2편)

GPT-1에 대해 이해해보자 (GPT 1편) Chat GPT의 시초, GPT-1 부터 차근차근 알아보자 (본 포스팅은 AI업계에서 유명하신 허민석 개발자님의 유튜브 GPT-1(밑바닥부터 알아보는 GPT) 강의를 참고했습니다.) W

sjkoding.tistory.com

 

이번 포스팅도 마찬가지로 허민석님의 유튜브 강의를 참고했습니다. (Minsuk Heo 허민석 | [논문 리뷰] GPT-3)

GPT3에 대해 알아보자. GPT3를 제시한 논문은 Language Models are Few-Shot Learners이다.

GPT-2의 장점은 파인튜닝을 아예 제거하였고 GPT-3는 이에 Few-shot Learning을 적용시켰다. GPT3를 알아보기전에 Few-shot Learning이 뭔지 알아보자.

Zero-shot learning

그 전에 Zero-shot learning을 살펴보자. 

Zero-shot learning을 특정 클래스의 데이터를 보지 않았음에도 특정 클래스를 알 수 있게된다. 즉 데이터를 직접 보지 않고 해당 데이터를 이해할 수 있는 정보를 제공하는 것이다. Zero-shot의 의미는 0개의 데이터를 확인하다 라고 이해해도 좋다.

 

(Chat GPT를 활용한 상황극)
딸: 아, 그럼 강아지와 고양이를 구별하는데 새로운 데이터 없이도 학습할 수 있겠네요.
아빠: 정확히 그래. 이제 강아지와 고양이를 구별하기 위해 우리는 각각에 대한 특징을 설명해볼게. 강아지는 주로 코가 길고 귀가 크며, 종종 꼬리를 흔들어. 반면에 고양이는 주로 코가 짧고 귀가 작고, 꼬리를 자주 흔들지 않아.

딸: 알겠어요! 그럼 이 정보를 사용해서 모델에게 강아지와 고양이를 구별하게 할 수 있겠네요?

아빠: 그래, 이제 우리가 모델에게 "코가 길고 귀가 크면 강아지일 확률이 높고, 코가 짧고 귀가 작으면 고양이일 확률이 높다"라는 정보를 주면, 모델은 새로운 이미지를 보고 그 정보를 활용해 강아지와 고양이를 구별할 수 있어.

딸: 와, 신기해요! Zero-shot Learning은 정말 유용하고 효율적인 방법이네요.

이런식으로 사진을 직접 보지 않았음에도 정보만을 보고 사진을 분류할 수 있는 인간의 능력을 모사하였다.

One-shot learning

One-shot Learning은 매우 적은 양의 데이터로도 학습이 가능한 방법이다. 단 한 번의 학습 예제만으로 새로운 클래스를 학습할 수 있는 기계 학습 방법이다. One-shot의 의미는 하나의 데이터를 확인하다라는 의미이다.

 

(Chat GPT를 활용한 상황극)
딸: 아, 그러니까 한 번만 보여주면 된다는 건가요?

아빠: 맞아. 예를 들어, 우리가 새로운 클래스인 "스페이스 펭귄"을 구별하는 모델을 학습시킨다고 해보자. One-shot Learning에서는 스페이스 펭귄에 대한 이미지를 한 장만 제공하고, 이를 바탕으로 모델이 스페이스 펭귄을 구별할 수 있도록 학습시킬 수 있어.

딸: 그러면 모델은 한 번 보여준 데이터를 잘 기억하고 있겠네요.

아빠: 맞아! 모델은 이 한 번의 학습 예제를 기반으로 새로운 클래스를 구별할 수 있는 패턴을 학습해. 이렇게 함으로써 데이터를 효율적으로 사용하면서도 새로운 상황에 대응할 수 있게 되는 거야.

 

Few-shot learning

한 장 이상의 사진을 보여주고 강아지를 식별해내는 러닝. 이번 GPT3의 핵심, 파인튜닝 없이 few-shot learning을 사용한다.

딸: 알겠어요. 그럼 퓨샷 학습은 또 뭐죠?

아빠: 퓨샷 학습은 약간 더 많은 정보로 배우는 거야. 예를 들어, 네가 새로운 동물 '글리프'에 대해 배운다고 치자. 내가 네게 글리프의 사진을 몇 장 보여주고 그 특징에 대해서도 설명해줘. 그래서 넌 몇 장의 사진과 그 설명을 통해 글리프를 좀 더 잘 알게 돼. 나중에 네가 다양한 동물 사진을 볼 때, 그 몇 장의 사진을 기반으로 글리프를 인식할 수 있게 되는 거야.

예를들어 사칙연산, 오타수정, 번역 등의 패턴을 few-shot learning으로 학습할 수 있음. 

 

GPT-3 Introduction

GPT-3의 핵심은 few-shot 러닝을 통한 학습으로 fine tuning 없이도 고성능의 다용도 자연어 처리 모델을 만들 수 있다라는 것이다.

LM을 학습하는 동안 few-shot learning으로 다양한 패턴 인지 능력을 학습했다.

예를 들어 사칙연산, 오타 수정, 번역 등의 다양한 패턴을 few-shot learning으로 학습한 것이다.

GPT-3는 작은 모델부터 170billion (1700억) 개의 파라메터까지 다양한 크기의 성능을 비교하였고 zero-shot  부터 few-shot learning의 성능을 비교했다. 그 결과 few shot learning이 zero-shot learning 보다 우수한 성능을 보였고, 거대한 모델이 작은 모델보다 우수한 성적을 보인것을 확인했다. 

위 그래프를 보면 문맥정보를 1개 줬을 때와, 10개 줘서 학습한 경우 성능차이가 뚜렷하게 확인되었다.

그렇다면 어떻게 문맥정보를 포함시켜 학습을 시켰는지 실제 학습 문장을 살펴보자.

예제의 개수가 n일때 위는 n-shot learning이 되는것이다. (n >= 2 를 few-shot learning이라고 부름)

 

저자들은 파인튜닝 없이 다른 모델과의 성능을 비교했을 때 일부 테스크에서는 SOTA를 보였으며 일부는 뛰어넘지 못하고 하였다. 이는 파인튜닝 없이 괴물 성능을 보여주는 GPT-3임을 알 수 있다.

GPT-3 Architecture

놀랍게도, GPT-2 의 구조를 그대로 사용했다고 한다.

 

GPT-3 Dataset

Common Crawl dataset을 사용했다. 학습데이터의 품질을 높이기 위해 GPT-2와 같이 좋아요가 3개 이상인 좋은 글만 학습하였으며, 중복을 줄이고 좋은 데이터를 추가삽입 하여 학습을 진행했다.

총 3000억개의 토큰을 학습하였으며, 놀라운 점은 대다수의 데이터가 중복이 없었다는 것이다.

 

GPT-3 Training

LLM 학습에 주로 사용되는 큰 배치사이즈의 작은 learning rate를 사용하여 학습했다. Adam optimizer를 사용했고, 첫 375만개의 토큰에 대해 선형 warm up scheduler를 사용했고, cosine decay를 사용하여 lr을 점점 낮추었다고 한다.