일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- data analysis
- super resolution
- 데이터과학
- Data Augmentation
- Attention
- 파이썬 구현
- 딥러닝
- 데이터 시각화
- 태블로 실습
- Tableau
- SRCNN
- sparse coding
- ResNet
- Deep Learning
- kt디지털인재
- VGG16
- 장학프로그램
- 태블로
- 개 vs 고양이
- Computer Vision
- LLM
- 데이터 증강
- tcga
- 데이터 분석
- kt희망나눔재단
- cnn
- k-fold cross validation
- 머신러닝
- 논문리뷰
- 논문 리뷰
- Today
- Total
기억의 기록(나의 기기)
[GPT-3] Language Models are Few-Shot Learners 논문 리뷰 (기초부터 꼼꼼히) 본문
[GPT-3] Language Models are Few-Shot Learners
안녕하세요, 데이터과학을 전공하고 있는 황경하입니다.
오늘은 GPT-3 논문인 『Language Models are Few-Shot Learners』에 대해 공부해 보겠습니다. 본 논문은 GPT-2가 Zero-Shot Downstream Task에 대해 좋은 성능을 보임에 따라, One-Shot, Few-Shot으로 진행했을 때의 실험 결과를 보고자 하며 모델의 사이즈와 데이터셋의 크기가 커짐에 따른 성능 변화를 보고자 합니다.
* 리뷰할 논문:
https://proceedings.neurips.cc/paper/2020/hash/1457c0d6bfcb4967418bfb8ac142f64a-Abstract.htm
* 해당 글에 첨부된 사진들은 모두 위 논문에서 발췌한 것임을 미리 밝힙니다.
* 해당 글에 설명은 논문을 기반으로 한 주관적 해석이므로 틀린 부분이 있다면, 댓글로 지적 부탁드립니다!
# Abstract
NLP 과제들은 대부분이 지도학습 방식으로 학습되어왔다. 지도학습 방식을 적용하기 위해서는 특정한 도메인에 적합한 데이터셋을 구성해야 하며, 이렇게 학습된 모델은 학습 데이터와 분포 차이가 큰 데이터가 입력되거나 다른 태스크에 적용하면 성능이 크게 하락되는 경향을 보인다. 이는 모델 자체가 특정 도메인에 깊이 있는 전문가가 된 게 아닌 narrow expert 된 것으로 볼 수 있다. 따라서, GPT는 다양한 도메인이 포함된 대규모 데이터셋 WebText를 구성하여 모델을 훈련해 하나의 모델이 다양한 태스크에 적합되도록 한다. 그러나, 데이터셋에 다양한 도메인 정보가 포함되고 크기가 커짐과 동시에 도메인 별 레이블링에 어려움이 있다. 따라서, GPT는 Unsupervised Learning으로 학습 정보에 태스크, 질문, 답변을 모두 넣어 모델이 그 태스크에 답변을 생성하도록 한다.
GPT-2에서는 WebText로 Pre-Training한 모델에 Zero-shot downstream task의 성능을 측정하였고, 8개의 NLP 태스크 중 7개에서 SOTA 성능을 기록하였다. 그러나 GPT-2 모델은 아직 WebText 데이터셋을 완전히 학습하지 못했다.
모델의 성능은 모델의 크기가 커질 수록 로그 선형적으로 개선됨을 확인하였다.
# Introduction
현재의 대표적인 접근 방식은 (1): 원하는 작업에 대한 데이터셋을 수집한다. (supervision), (2): 데이터셋을 사용하여 모델을 훈련한다. (3): 테스트 데이터에서 성능을 평가한다.
위 방식은 훈련된 작업에 대해서는 높은 성능을 보이지만, 특정 도메인에만 학습되었기 때문에 일반화 성능이 떨어진다. 하지만, 모델을 다양한 도메인에 적합하기 위해 태스크 별로 데이터셋을 구축하고 학습시키기에는 무리가 있다. 따라서, 다양한 도메인과 작업을 학습 데이터에 넣고 학습시킨 후 성능을 평가하는 방향으로 나아가야 한다.
# Approach
GPT는 Unsupervised Multi-Task Learning으로 학습된 Pre-Training 모델이다. 이전 논문인 GPT-2와 동일한 아키텍처를 사용하되, 학습에서 다양한 설정을 탐구하였다. 이번 연구에서는 In-context Learning 방식으로 Few-Shot에 대한 설정을 추가하였다.
- Fine-Tuning: 기존 연구 방식에서는 Language Modling을 할 수 있도록 모델을 Pre-Training 한 후, 특정 도메인에 맞춰 Fine-Tuning 하는 방식을 사용했다. 즉, 원하는 작업에 대해 레이블이 포함된 수천 개의 데이터셋을 구축하고 지도 학습을 진행했다. 장점은 Fine-Tuning을 진행한 태스크에서 강력한 성능을 보인다는 것이다. 하지만, 단점은 학습 데이터와 분포의 차이가 큰 (out-of-distibution)에 일반화에 취약하며, 학습 데이터에 과적합될 수 있다는 것이다. 본 논문에서는 모델이 여러 도메인을 통해 학습하고, Pre-Training 모델로 성능을 평가하기 때문에 Fine-Tuning은 주요 실험 대상이 아니다.
- Few-Shot: 이전 GPT-2는 Zero-Shot downstream task를 진행하였다. 이는 추론 시 모델이 답변해야 하는 질문만 넣은 것이다. 반면, Few-Shot은 모델이 답변해야 하는 질문과 유사한 질문들을 함께 입력한다. 예를 들면, 아래와 같다.
Few-Shot Prompt
Translate English to French:
English: Hello, how are you?
French: Bonjour, comment ça va?
English: What time is it?
French: Quelle heure est-il?
English: I am going to the market.
French:
Zero-Shot Prompt
Translate the following English sentence to French:
"I am hungry."
→
이렇게 하면, GPT 모델의 아키텍처에 포함된 Self-Attention에 예시 문장들이 함께 포함되어 모델이 문맥을 파악해 답변을 내놓게 된다. 이를 In-Context Learning이라고 한다.
본 논문에서는 이 예시를 모델의 입력 사이즈에 따라 달리 설정하였다. 같이 넣는 예시의 수를 k라고 하면, 논문에서는 10~100개까지 설정할 수 있다고 한다. 기존에는 태스크에 대한 적절한 답변을 기대하기 위해서는 그 태스크에 적합한 데이터셋을 수 천개에서 수 만개까지 만들어야 했다면, Few-Shot으로 한다면 몇 개의 예시만 필요하기에 데이터를 대폭 줄일 수 있다. 하지만, 단점은 SOTA 모델에 비해 성능이 낮고, 소량의 예시는 여전히 필요하다는 것이다.
또한, 논문에서는 Few-Shot 말고도, One-Shot (k=1), Zero-Shot 성능도 측정하여 비교하였다.
## Model and Architectures
GPT-3는 GPT-2와 동일한 아키텍처를 사용한다. GPT-2는 GPT-1의 아키텍처와 달리 layer pre-normalization, reversible tokenization을 사용하였다. (모든 GPT는 Transformer의 디코더를 기반으로 한다.)
GPT-3에서 변경된 부분은 Attention Layer 하나이다. 기존 Self-Attention은 모두 Dense Attention으로 입력된 모든 토큰과 Attention을 진행해 문맥 정보를 포함하였다. 그러나, GPT-3에서는 Attention layer를 Dense Attention과 Sparse Attention을 교차하여 진행하였다.
Sparse Attention이란?
Sparse Attention이란 모든 토큰이 일부 위치에만 Attention을 계산하는 것이다. 세 가지 Attention의 결과를 합치는데 Global Attention Block, Random Attention Block, Local(Sliding) Attention Block이다. 우선, Transformer의 시간 복잡도는 O(N^2)이다. 이는 입력 토큰의 수가 늘어날수록 기하급수적으로 증가하기 때문에 입력에 제한이 있었다. 따라서, 이를 극복하려는 시도가 많이 시행되었고, 그중 하나가 Sparse Attention이다.
Sparse Attention은 Dense Attention과 달리 특정 토큰을 Attention할 때에 일부만 보는 것이다. 각 Attention에서는 Attention Mask를 결과로 반환한다.
- Global Attention Block: 전체 문맥 파악에 중요한 토큰을 Global Token으로 정의하여 모든 토큰의 Attention에 포함시키는 것이다.
- Random Attention Block: 토큰을 무작위로 선택하고, 그 토큰들과 Attention을 진행하는 것이다.
- Local Attention Block: 주위 window 개의 토큰들과 Attention을 진행하는 것이다.
이렇게 구해진 Attention Block의 결과인 Global Attention Mask + Random Attention Mask + Local Attetion Mask를 모두 결합하여 최종 Sparse Attention Mask가 된다. 이후 이 Mask를 Self-Attention에 도입함으로써 최종적인 Sparse Attention이 완성된다.
Global mask: [1 0 0 0 1]
Window mask: [0 1 1 0 0]
Random mask: [0 0 1 1 0]
----------------------------
Final mask: [1 1 1 1 1] ← OR 연산 결과
Global, Random, Local을 결합함으로써
- Local은 근거리 문맥 유지,
- Global은 핵심 정보 통합,
- Random은 long-range dependency 보완
→ 이 세 가지가 결합되어 Dense Attention과 유사한 정보 흐름을 구현할 수 있다.
이 구조는 BigBird (Zaheer et al., NeurIPS 2020)에서 제안된 방식이며, sparse attention 구조로도 SOTA 성능을 달성했음을 보여준다. 또한, 이를 통해 계산 복잡도가 O(N) 또는 O(N Log N)으로 개선되어 입력 토큰의 수를 늘릴 수 있다.
GPT-3에서는 Attention Block을 연결할 때에 Dense Attention → Sparse Attention → Dense Attention → Sparse Attention →.. 이런 식으로 교차하여 배치하였다.
또한, 모델의 크기를 다양하게 변경해가면서 성능을 측정해 scaling law를 테스트하였다.
* scaling law: 모델의 크기, 학습 데이터 양, 계산량 위 세 가지를 늘리면 loss가 일정한 비율로 개선됨을 알린 연구. 즉, 모델의 크기를 변경하면서 성능 개선이 일정하게 일어나는지를 테스트함.
## Tranining Dataset
GPT-3에서는 파라미터 수를 1750억개로 늘렸다. 이는 기존의 어떤 언어 모델보다도 10배는 더 큰 규모이며, GPT-2의 파라미터가 15억 개임을 고려하면 모델 사이즈가 획기적으로 커졌음을 알 수 있다.
모델의 사이즈가 커짐에 따라 학습 데이터셋 또한 크게 상승하였다. 기존 GPT-2는 WebText 데이터셋을 구축하여 사용했으며, 이는 Reddit 플랫폼에서 3 karma 이상을 받은 링크만 추출하여 사용하였다. 그러나, GPT-3에서는 더 큰 데이터셋을 구축하기 위해 Common Crawl 데이터셋과 위키피디아, 인터넷 기반 북 코퍼스 두 개를 사용하였다.
이 중 Common Crawl은 웹 크롤링을 통해 획득한 데이터셋으로 품질 문제가 제기되었다. 따라서, 고품질 코퍼스와의 유사도를 측정하여 필터링을 하여 사용하였다. 따라서, 최종적인 데이터셋은 WebText + Common Crawl + 위키피디아 + 북 코퍼스이다. 데이터셋이 커짐에 따라 중복된 콘텐츠가 있을 수 있어, 이 부분은 문서 단위의 퍼지 중복 제거를 수행하여 제거하였다. 이는 학습 데이터와 검증 데이터셋 사이의 무결성을 보존하고 모델의 과적합을 방지하기 위함이다.
* fuzzy deduplication: 문서들 간의 유사도 (코사인 유사도, Jaccard 유사도 등)가 임계치(95%)를 넘으면 중복으로 판단하고 제거하는 알고리즘이다.
## Training Process
모델의 사이즈가 커질수록 일반적으로 더 큰 배치 사이즈를 사용할 수 있지만, 안정적인 학습을 위해서 더 작은 학습률이 필요하다.
본 연구에서는 gradient noise scale을 측정하고 이를 사용하여 배치 크기를 결정하였다.
📌 Gradient Noise Scale이란?
- 학습 도중 계산되는 gradient가 얼마나 "안정적인지"를 정량적으로 측정하는 지표
- 클 수록 좋으나, 너무 크면 안 됨.
- Gradient Noise Scale ∝ Learning Rate × Batch Size
GNS를 수식적으로 보면 아래와 같다.
- g: 각 샘플의 gradient
- E[g]: 미니배치 평균 gradient
- ||E[g]||^2: 미니배치 평균 Gradient의 크기
- E[||g - E [g]||^2] : gradient의 분산
여기서, 분자는 모델이 가야 할 방향의 세기라고 볼 수 있으며, 분모는 그 방향이 얼마나 흔들리는가로 해석할 수 있다.
GNS가 크다는 것은 gradient의 방향이 분명하고 잡음이 적기 때문에 현재 step에서 학습 진행이 신뢰할만 한다고 판단할 수 있다.
따라서, GNS가 큰 경우에는 learning rate를 더 크게 잡아도 되지만, GNS가 작은 경우에는 learning rate를 작게 설정해야 한다. 이에 본 연구에서는 GNS 값을 관찰하여 learning rate를 측정한 것이다.
## Evaluation
- Few-Shot 성능 측정: 테스트 샘플과 훈련 세트에서 무작위로 k개 선정한 샘플을 함께 넣는다.
- Zero-Shot 성능 측정: Zero-Shot은 테스트 샘플과 함께 들어갈 예시가 없기 때문에 자연어 프롬프트를 넣는다. 자연어 프롬프트는 태스크의 설명이 들어가는 형태로 기존 GPT-2가 해온 방식과 동일하다.
- 자유 형식 생성 태스크: 이는 모델이 정답을 선택하는 것이 아닌, 텍스트를 직접 생성해야하는 작업으로 Beam search를 사용함.
📌 Beam Search란?
한 번에 여러 후보 경로를 추적하면서 가장 가능성 높은 문장 전체를 생성하는 탐색 기법.
The cat sat on the
Step 1: 첫 번째 토큰 예측
GPT가 다음 토큰 후보를 예측:
후보 | 확률 |
"mat" | -1.0 |
"sofa" | -1.2 |
"roof" | -1.4 |
... | ... |
→ Top 2 선택:
Beam 1: "mat" (score = -1.0)
Beam 2: "sofa" (score = -1.2)
Step 2: 두 번째 토큰 예측 (각 beam에 대해 계속)
- Beam 1 ("mat"):
- 예측 후보: ".", "and", "was" ...
- Beam 2 ("sofa"):
- 예측 후보: ".", "where", "with" ...
→ 각각에 대해 top-k 후보를 확장함
→ 예:
- "mat." (score = -1.0 + -0.5 = -1.5)
- "mat and" (-1.0 + -1.0 = -2.0)
- "sofa." (-1.2 + -0.4 = -1.6)
- "sofa with" (-1.2 + -0.6 = -1.8)
→ 전체 후보 중 top 2 유지:
- "mat."
- "sofa."
→ 다음 토큰 예측으로 반복…
이런 식으로 서치하여 문장을 생성한다.
# Results
## Language Modeling, Cloze and Completion Tasks
전통적인 언어 모델링 과제 뿐만 아니라 관련된 과제들에 대해 성능을 테스트한다.
- LAMBADA 데이터셋은 문단의 마지막 단어를 예측하는 태스크이다. 본 데이터셋에서는 Zero-Shot 설정에서 GPT-3가 이전 SOTA 모델보다 8% 더 높은 정확도를 보였다. Few-Shot 설정에서는 모델에게 예시로 (Alice was friends with Bob. Alice went to visit her friend, . → Bob) 형식으로 주었다. 이 형식에서 GPT-3는 기존 성능보다 18% 이상 높은 성능을 보였으며, 모델의 크기가 증가할 수록 더 높은 성능을 보였다. 다만, 이런 예시 방식으로 줄 때에 One-Shot에서는 성능이 하락하였다. 이는 모델이 패턴을 인식하기 위해서는 몇 개의 예제가 필요한 것으로 보인다.
"왜 One-Shot에서는 성능이 하락할까?"
: 예제가 오히려 혼란을 불러일으키기 때문이다. Few-Shot의 경우에는 예제가 k개 들어가는데, k는 10~100으로 최소 예제가 10개 이상 들어간다는 것이다. GPT 모델은 이전 단어를 활용해 이후 단어를 예측하는 구조로 되어있다. 따라서, 앞 예제의 답변 방식을 참고하여 이후 예제의 답변을 결정하게 된다. 따라서, 테스트 샘플의 답변을 결정할 때에는 이전 예제들의 답변 방식을 참고하게 되며, 패턴을 인식하게 된다. 그런데, 예제가 하나밖에 없는 경우에는 모델이 이 패턴을 인식하기에 너무 부족하며, 이게 패턴인지 아니면 예외인지에 대한 혼란을 일으키게 된다.
+) zero-shot이 one-shot보다 높은 성능을 보이는 이유는? zero-shot은 그저 학습된 정보를 토대로 답변하는 것이다. 이 경우에는 오히려 혼란이 줄어든다. 그런데, one-shot의 경우엔 예제를 참고하여 답하다 보니 오히려 패턴을 인식하기 어려워 성능이 하락한다.
-) 그러나 아직 의문인 것. 학습 format과 One-shot의 예제 format이 비슷한 구조라면, zero-shot보다 one-shot의 성능이 더 좋지 않을까?
예시로, 10명 중 9명이 단답형으로 대답을 했다고 하면, 나도 단답형으로 대답해야겠다!라는 확신이 들 수 있다. 그런데, 앞 사람 한 명이 단답형으로 대답을 하면, 나도 단답형으로 대답을 해야할지 아니면 주관식으로 대답을 해야할지에 대한 고민이 생길 수 있다. 위 상황을 생각하며 이해가 쉽다.
- HellaSwag 데이터셋은 이야기나 지시문의 마지막을 가장 적절하게 고르는 과제이다. GPT-3는 뛰어난 성능을 보였지만, SOTA 모델에 미치진 못하였다.
- StroyCloze 데이터셋은 다섯 문장짜리 이야기에서 올바른 마지막 문장을 고르는 과제이다. 여기서 GPT-3의 zero-shot 성능은 GPT-2의 zero-shot 성능보다 약 10% 향상되었지만, 여전히 SOTA 모델보다는 4.1% 낮은 수준을 보였다.
## Question Answering
이 섹션에서는 다양한 질문 응답(QA) 과제에 대한 GPT-3의 처리 능력을 평가한다.
- TriviaQA
- GPT-3의 제로샷 성능만으로도 fine-tuning된 T5-11B보다 14.2% 더 높은 성능을 기록
- 사전학습 중 QA에 특화된 스팬 예측을 수행한 모델보다도 3.8% 더 우수
- 원샷 결과는 3.7% 추가 개선 (SOTA와 동일한 수준)
- Few-shot 결과는 여기서 추가로 3.2% 성능 향상
- Natural Questions (NQs)
- GPT-3가 fine-tuned T5 11B+SSM 모델보다 성능이 낮았다.
- NQ는 위키백과의 세세한 정보(fine-grained Wikipedia knowledge)를 묻는 경향이 있으며, 이는 GPT-3의 용량 한계 및 광범위한 사전학습 분포로는 감당이 어려운 수준일 수 있다.
- ARC : 과학 시험에서 수집한 객관식 문제들로 구성된 상식 추론 데이터셋이다.
- Challenge, Easy 두 수준 모두 SOTA 모델보다 현저히 낮은 수준을 보임.
- RC(Reading Comprehension, 독해)
- CoQA: 자유 형식의 대화 기반 QA 데이터셋 → few-shot 성능은 인간 베이스라인보다 3포인트 낮은 수준
- DROP: 정수 계산 및 이산 추론(discrete reasoning) 능력을 평가하는 데이터셋 → 인간 수준이나 SOTA 모델보다는 여전히 크게 낮은 수준
## Translation
영어로 번역할 때는 GPT-3가 기존 비지도 NMT보다 훨씬 뛰어난 성능을 보였지만, 다른 언어로 번역할 때는 성능이 떨어졌다.
특히 영어→루마니아어(En→Ro) 성능은 기존 비지도 NMT보다 BLEU 점수 기준 10점 이상 낮아 현저히 부진했다.
GPT-2에서 개발된 byte-level BPE 토크나이저를 그대로 사용한 것 때문일 수 있다. 해당 토크나이저는 거의 전적으로 영어를 기반으로 설계되었기 때문이다.
프랑스어→영어(Fr→En), 독일어→영어(De→En) 번역에서는 few-shot GPT-3가 Open AI팀이 찾을 수 있었던 지도 학습 기반 SOTA 모델보다도 더 높은 성능을 기록함. 그러나, 본 결과가 정말 SOTA 모델과 비교한 것인지에 대한 확신은 없음.
루마니아어→영어(Ro→En) 번역에서는, few-shot GPT-3가 전체 SOTA에 매우 근접한 성능을 보였다.
## SuperGLUE
SuperGLUE 벤치마크는 표준화된 데이터셋 모음이다 [WPN+19]. Few-shot 설정에서는, 모든 태스크에 대해 훈련 세트에서 무작위로 샘플링한 32개의 예제를 사용하였다. WSC와 MultiRC를 제외한 모든 태스크에서는, 각 문제마다 새로운 예제 세트를 무작위로 샘플링하여 context로 사용하였다. WSC와 MultiRC의 경우에는, 평가에 사용된 모든 문제에 대해 동일한 무작위 예제 세트를 context로 사용하였다.
COPA와 ReCoRD에서는, one-shot 및 few-shot 설정에서 거의 SOTA 수준의 성능을 기록함.
WSC, BoolQ, MultiRC, RTE에서는 합리적인 수준의 성능을 보였으며, 이는 fine-tuning된 BERT-Large의 성능과 대체로 비슷했다.
CB는 전제가 주어지고 가설이 주어지면, 그 가설이 참인지 거짓인지 또는 참인지 거짓인지를 모른다 라는 3가지 분류를 하는 데이터셋이다. GPT-3는 본 태스크에서, SOTA보다 낮은 성능을 보이며, 논문에서는 랜덤한 결과와 유사하다고 말한다. 그 이유는 GPT-3는 두 문장을 비교하는 태스크를 수행한 적이 없으며, 두 문장 간의 관계를 학습한 적도 없기 때문이다. GPT는 이전 단어를 보고 이후 단어를 생성하는 방식으로 작동하며 이에 대한 Label과 Cross-Entropy Loss를 계산하여 학습한다. 또한, 이 과정에서 Self-Attention을 통해 단어들 간의 관계를 학습하기 때문에 문장 단위의 학습이 진행되지 않는다. 따라서, 이런 문장과 문장 간의 관계를 묻는 태스크에는 굉장히 취약하다.
위 부분이 GPT의 약점이라고 한다. Few-Shot의 경우에도 모델이 이런 패턴을 학습하기에는 부족하다. 또한, 지도학습 모델이 아니기 때문에 분류 문제에 약하며, "Entailment", "Neutral", "Contradiction" 중 하나를 텍스트 형태로 정확히 출력하기 위해 학습 format을 여러번 변경했지만, 큰 성능 향상 효과는 없었다고 한다.
# Measuring and Preventing Memorization Of Benchmarks
GPT-3는 GPT-2보다 두 자릿수 이상 더 큰 규모의 데이터셋과 모델 크기를 사용하며, 특히 Common Crawl 데이터를 대규모로 포함함으로써, 데이터 오염(contamination) 및 기억(memorization)의 가능성이 증가하게 된다.
이에, 본 연구에서는 유출된 예제를 제외한 Clean 버전 밴치마크 데이터셋을 구축하였다. 유출된 예제는 GPT의 사전학습 데이터셋과 13-그램(13개의 연속 토큰) 이상 겹치는 경우(또는 전체 예제가 13그램보다 짧을 경우, 전체가 겹치는 경우)로 정의된다.
GPT-3를 이 클린 버전 벤치마크에 평가하고, 원래 전체 벤치마크 점수와 비교하였다. 만약 클린 데이터셋에서의 성능이 전체 데이터셋과 유사하다면, 이는 설령 데이터 오염이 존재하더라도 결과에 큰 영향을 미치지 않았음을 시사한다.
실제로 대부분의 경우, 성능 변화는 거의 미미하였으며, 오염 정도와 성능 차이 사이에 뚜렷한 상관관계는 발견되지 않았다. 이 결과로부터 다음 두 가지 중 하나라고 결론지었다:
- 연구에서 사용된 사용한 보수적인(=과하게 잡은) 측정 방식이 실제 오염을 과대평가했거나,
- 실제 오염이 있더라도 모델 성능에는 거의 영향을 주지 않는다.
# Limitations
GPT는 텍스트를 생성하는 모델이다. 그러나 GPT가 생성한 결과물에서는 다음과 같은 한계가 존재한다.
- 문서 수준에서 의미가 반복된다.
- 충분히 긴 문장에서는 일관성을 잃기도 한다.
- 자기모순적인 표현이 나타나거나, 맥락과 무관한 문장이 등장하기도 한다.
두 번째로, GPT는 BERT 같은 양방향 아키텍처나 denoising같은 다른 학습 목적을 포함하지 않았다. 따라서, 단방향 학습 때문에 빈칸 채우기 같은 태스크, 두 문자을 비교하는 과제, 긴 문장을 읽고 짧은 정답을 추론하는 태스크에서는 불리할 수 있다.
세 번째로, GPT는 모든 토큰에 동일한 가중치를 부여해서 loss를 계산한다. 그러나, 일부 연구에서는 더 중요한 토큰에 더 큰 가중치를 부여하여 loss 계산 시 성능 향상될 수 있음을 보여주었으며, 이는 향후 성능 개선의 여지를 보여준다. 또한, GPT는 unsupervised learning이라고 불리지만, 실제로는 self-supervised learning에 가깝다. 즉, 입력 자체에서 label을 생성하고 모델이 예측한 아웃풋과 비교하여 학습된다. 그런데, 이러한 self-supervised objective는 태스크를 단순한 "예측 문제"로 변환한다는 제약이 있다.
예를 들어, 가상 비서라고 한다면 self-supervised objective는 단순 텍스트 생성에서 그치지만, 실제로는 목표를 달성하기 위한 행동(goal-directed action)을 수행할 수 있어야 한다.
이를 위해서는 단순한 토큰 예측 loss가 아니라, 행동 수행의 성공 여부를 평가하고 학습에 반영할 수 있는 새로운 objective가 필요하다.
# 현재 GPT (self-supervised objective)
User: "회의 일정 잡아줘"
GPT: "회의 일정 잡아줘. 알겠습니다. 언제가 좋으신가요?"
# Goal-directed 시스템
User: "회의 일정 잡아줘"
시스템 내부 행동:
1. 사용자 캘린더에서 빈 시간 확인
2. 팀원 캘린더와 비교
3. 최적 시간 결정
4. 회의 생성
5. 이메일/알림 전송
마지막으로, 대규모 사전학습 언어 모델은 영상이나 다른 영역의 데이터를 학습하지 않았기 때문에 이를 추가하여 모델이 실제로 사람들이 많이 사용하는 데이터를 잘 이해하도록 학습하도록 해야 한다.
# Conclusion
본 논문에서는 1750억개의 파라미터를 가진 언어 모델을 제시하였으며, zero-shot, one-shot, few-shot 설정에서 다양한 NLP 태스크와 벤치마크에서 강력한 성능을 보여주었다.
본 논문의 주요 목적은 fine-tuning 없이 모델의 성능이 스케일에 따라 향상되는 경향성을 보여주는 것이며, fine-tuning 시에 필요한 task specific dataset 없이 단순 몇 가지 예제만 넣어주어 성능이 SOTA에 유사한 수준으로 올릴 수 있다는 것이다.
마무리...
GPT-2를 읽고 GPT-3를 읽어보았습니다. 항상 느끼지만, 버전이 올라가면 많이 변한 것 같지 않다고 생각할 수 있지만 정말 많은 점이 변화되고 그걸 따라가기 위해 여러 논문을 찾아보며 배웁니다. 하나하나 보면서 따라가려고 하니, 꽤 오랜 시간이 걸리기도 하지만 논문의 이해도는 더 높아지는 것 같습니다. 여러분도 논문을 읽으며, 하나씩 파고들어 이해해보시면 하나의 논문이어도 많은 정보를 얻으실 수 있지 않을까 싶습니다.
제 부족한 글이 여러분에게 조금이나마 도움이 되었으면 합니다. 읽어주셔서 감사합니다.
