- [17′ NIPS] Transformer : Attention Is All You Need
- [18′ OpenAI] GPT-1 : Improving Language Understanding by Generative Pre-Training
- [19′ NAACL] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
- [20′ NIPS] GPT-3 : Language Models are Few-Shot Learners
- [22′ NIPS] InstructGPT : Training language models to follow instructions with human feedback
- [21′ ICLR] LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
- [21′ IJCNLP] Prefix-Tuning: Optimizing Continuous Prompts for Generation
- [22′ NeurIPS] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
- [20′ NeurIPS] Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
- [23′ ICLR] Self Consistence : SELF-CONSISTENCY IMPROVES CHAIN OF THOUGHT REASONING IN LANGUAGE MODELS
- Prompt Engineering, PEFT, RAG – LLM이 외부 정보를 사용하는 세 가지 방법
- [22′ NeurIPS] LIFT: Language-Interfaced Fine-Tuning for Non-Language Machine Learning Tasks
- [23′ ICLR] LANGUAGE MODELS ARE REALISTIC TABULAR DATA GENERATORS
1. 들어가며
자연어 처리 분야는 지난 수년 동안 놀라운 발전을 이루어왔습니다. 그 중심에는 GPT-1 같은 혁신적인 모델이 있습니다. 이번 글에서는 GPT-1의 근본적인 구조와 기능, 그리고 그것이 어떻게 다양한 자연어 처리 작업에서 뛰어난 성능을 발휘하는지에 대해 깊이 있게 알아보겠습니다.
첫 번째 섹션에서는 기존의 자연어 처리 방법들과 그것들이 겪고 있는 주요한 문제점들에 대해 논의합니다. 이러한 문제점들은 GPT-1과 같은 새로운 모델의 등장을 촉발한 주요한 요인입니다. 기존 모델들의 제한된 문맥 이해와 처리 능력, 그리고 복잡한 작업에 대한 어려움 등이 여기에 포함됩니다. 이러한 문제들은 자연어 처리 작업의 효율성과 정확성을 제한하며, 이를 해결하기 위한 새로운 접근 방법의 필요성을 높입니다.
두 번째 섹션에서는 GPT-1의 핵심인 모델 구성과 학습 방법에 대해 상세히 알아봅니다. GPT-1이 어떻게 다음 단어를 예측하는 방법을 통해 효과적으로 학습되는지, 그리고 이를 다양한 자연어 처리 작업에 어떻게 적용하는지에 대한 설명이 포함되어 있습니다. 이 부분은 GPT-1의 기본적인 작동 원리를 이해하는 데 중요합니다. GPT-1의 세부적인 모델 구조와 학습 전략을 통해, 이 모델이 어떻게 고급 자연어 처리 기능을 실현하는지에 대한 근본적인 이해를 얻을 수 있습니다.
세 번째와 네 번째 섹션에서는 GPT-1의 실험 결과와 분석 실험에 대해 소개합니다. 이를 통해 GPT-1의 성능과 그 한계를 실제로 확인할 수 있습니다. 여러 가지 자연어 처리 작업에서의 GPT-1의 성능을 실제 데이터와 결과를 통해 살펴봅니다. 이 과정에서 GPT-1의 강력한 성능과 동시에 그것의 한계와 제약사항도 분명히 이해할 수 있습니다.
다섯 번째 섹션에서는 GPT-1의 장단점을 살펴봅니다. 모델의 강점과 약점을 이해함으로써, GPT-1이 실제 작업에 어떻게 적용될 수 있는지에 대한 통찰을 얻을 수 있습니다. 이는 GPT-1을 실제 작업에 적용할 때 중요한 고려사항입니다. GPT-1의 성능과 효율성, 그리고 그것의 한계와 제약사항에 대한 균형 잡힌 이해를 통해, 이 모델을 최대한 효과적으로 활용하는 방법을 살펴봅니다.
마지막 섹션에서는 GPT-1의 의의에 대해 논의합니다. GPT-1이 자연어 처리 분야에 어떤 영향을 미치고 있는지, 그리고 앞으로 어떤 발전이 기대되는지에 대한 내용을 다룹니다. 이는 GPT-1의 장기적인 영향과 가치를 이해하는 데 도움이 됩니다. GPT-1의 혁신적인 접근 방법과 성과를 통해, 자연어 처리 분야의 미래 발전 방향에 대한 통찰을 얻을 수 있습니다.
이 글을 통해 GPT-1에 대한 깊이 있는 이해를 얻고, 이 모델이 어떻게 다양한 자연어 처리 작업을 혁신하는 데 기여하고 있는지를 배울 수 있습니다.
2. 기존 방법의 문제점
먼저 기존 방법의 문제점을 살펴보겠습니다. GPT-1은 어떠한 문제를 해결하고자 한 것일까요? 제목과 Introduction 부분을 통해 이 질문에 대답을 얻을 수 있는데요. 언어 모델을 위한 데이터 구성을 생각해보면 Labeled Data의 양은 많지 않습니다. 이러한 데이터는 사람의 Labeling 작업이 필요하고, 따라서 확보하기가 어렵기 때문이죠. 반면 Unlabeled Data는 쉽게 다량으로 확보할 수 있습니다.
문제는 기존 언어 모델에서 이렇게 다량의 Unlabeled Data를 충분히 활용할 수 있는 방법이 없다는 것입니다. Labeled Data를 사용한 Supervised Learning 방법에 많이 의존하고 있었죠. 이에 GPT-1에서는 Unlabeled Data를 사용한 Generative Pre-Training을 효과적으로 활용할 수 있는 방법을 고민하고, 이에 초점을 맞춰 모델을 개발합니다.
3. GPT-1 제안 방법
그럼 GPT-1은 어떻게 Generative Pre-Training의 효과를 누릴 수 있었는지에 초점을 맞춰 GPT-1의 제안 방법을 살펴보겠습니다. 이번 챕터에서는 먼저 GPT-1의 전체 Architecture를 살펴보고요, Unsupervised Pre-Training 방법과 Supervised Fine Tuning 방법을 차례대로 살펴봅니다. 마지막으로는 Task별 Input 구성 방법에 대해서도 살펴보겠습니다.
3-1. Architecture
먼저 GPT-1 Architecture를 살펴보겠습니다. GPT-1은 Transformer에서 Encoder는 제외하고 Decoder만을 가져와 사용합니다. Transformer와 GPT-1의 Architecture를 비교하면 다음과 같습니다.
GPT-1에서는 Transformer의 Decoder 부분만을 사용하는데, 이때 Cross Self Attention 부분은 제거한 모습을 볼 수 있습니다. 이유를 생각해보면, 당연함을 알 수 있는데요. Transformer에서 Cross Self Attention은 Encoder의 입력과 Decoder의 입력을 Cross Attention 하는 역할을 합니다. 하지만 GPT-1에서는 Encoder 없이 Decoder 단독으로 구성되었으니 Cross Attention 기능이 필요 없어졌기 때문이죠.
그렇다면 GPT-1에서는 왜 Encoder를 제외하고 Decoder 만을 사용했을까요? 크게 두 가지 이유를 생각해볼 수 있습니다.
첫 번째는 아래에서 설명할 학습 원리 때문입니다. GPT-1은 다음 단어를 예측하는 방법을 사용하여 학습합니다. 이는 Decoder가 수행하기에 적합한 문제이죠. 이와 정확히 반대 이유로 BERT에서는 Transformer의 Encoder만을 사용합니다. BERT와 GPT-1 Architecture를 비교해보면 원리를 쉽게 이해할 수 있습니다.
두 번째는 간결성의 이점을 얻기 위함입니다. Decoder 만을 사용하면 모델 구조를 더 간결하게 만들 수 있고 이로 인해 연산량이 줄어드는 장점이 있습니다.
GPT-1에서는 이렇게 Decoder 12개를 쌓아 올린 구조를 하고 있습니다. Decoder의 최종 Output에 Linear Layer와 Softmax를 이어주어 최종 Output Probability를 출력하는 구조입니다.
3-2. Unsupervised Pre-Training
다음으로 GPtT-1의 Unsupervised Pre-Training 방법을 살펴보겠습니다. 이는 앞서 언급한대로 GPT-1 논문의 핵심이라고 할 수 있는데요. GPT-1부터 시작해서 GPT-2, GPT-3, InstructGPT, 그리고 ChatGPT까지 이어지는 GPT 시리즈의 공통된 학습 철학이라고 할 수 있습니다. 또한 BERT 등 다른 LLM들과 차별화되는 방법이며 근본적인 성능 차이를 가져오는 원인중 하나라고 할 수 있습니다.
방법은 간단합니다. GPT-1은 다음 단어를 맞추도록 학습합니다. 논문에서는 Next Word Prediction이라고 표현하는데요. 수식으로는 간단하게 이렇게 표현됩니다.
조금 더 구체적으로 상상해볼게요. 전체 데이터셋은 아주 많은 문장으로 구성되어 있을겁니다. 이 데이터셋을 우선 문장별로 나누어줍니다. 그리고 각 문장을 GPT-1에 입력해주는데, 문장을 잘라서 주고 그 다음에 나올 단어를 예측하도록 학습하는겁니다. 예를 들어 ‘나는 오늘 학교에 가서 수업을 듣는다.’ 라는 문장이 있다고 가정해볼게요. 이때 GPT-1에게 ‘나는 오늘 학교에’ 라는 문장을 입력해주고, 다음에 나올 단어를 예측하도록 학습하는거죠.
3-3. Next Word Prediction의 효과
이제 중요한건 이겁니다. GPT 시리즈는 모두 다음 단어를 예측하는 방식으로 학습을 합니다. 그리고 그 성능이 아주 좋다는 사실은 우리 모두가 알고 있죠. 이렇게 다음 단어를 예측하는 학습 방법은 왜 효과적인걸까요? 다섯가지 이유를 생각해봤는데요.
첫 번째는 언어 구조를 학습하게 되기 때문입니다. 모델은 다음 단어를 예측하며 문장 내에서 단어가 어떻게 배치되는지, 어떠한 단어가 다른 단어 뒤에 올 확률이 높은지를 학습합니다. 이를 통해 모델은 언어의 기본적인 구조와 문법을 이해하게 되는 것이죠.
두 번째는 문맥을 이해하려 노력하게 되기 때문입니다. 다음 단어를 예측하려면 반드시 문맥을 이해하고 있어야 하는데요. 앞의 내용을 이해해야 다음 단어를 예측할 수 있기 때문이죠. 따라서 다음 단어를 예측하는 과정을 통해 모델은 문맥 이해 능력을 향상하게 됩니다.
세 번째는 다양한 언어 패턴을 학습하게 되기 때문입니다. Unlabeled Dataset을 아주 다량의 언어 데이터로 구성되어 있는데요. 따라서 다양한 종류의 언어와 다양한 패턴, 특성을 포함하고 있죠. 이러한 데이터에서 다음 단어를 예측하도록 학습함으로써 모델은 다양한 언어와 다양한 특성, 패턴을 학습하게 되고 이 덕분에 인간과 유사한 언어 능력을 얻었다고 할 수 있습니다.
네 번째는 전이 학습의 유용함입니다. Pre-Training을 완료한 모델은 모든 학습을 끝낸것이 아닌, 최종 문제에 맞는 Fine Tuning 작업을 해야 하는데요. 따라서 Pre-Training 작업은 반드시 다양한 Task의 Fine Tuning에 적합한 형태여야 합니다. 다음 단어를 예측하는 작업은 특정 문제에 치우치지 않으면서 언어의 일반적인 이해 능력을 향상시키죠. 따라서 특정 문제에 특화된 문제를 학습하기 전에 일반적인 능력을 향상시키는 Pre-Training 방법으로 적합하다고 할 수 있습니다.
3-4. Supervised Fine Tuning
이렇게 Pre-Training을 마친 모델은 최종 성능 측정을 하기에 앞서 각 Task에 맞도록 재학습을 합니다. 이 과정을 Fine Tuning이라고 하는데요. 이러한 Fine Tuning은 앞선 Pre-Training과 달리 Supervised Learning 방법으로 이루어집니다. Fine Tuning을 위한 데이터셋은 Labeled Dataset으로 구성되어 있기 때문이죠. 따라서 Loss 함수는 다음과 같이 간단하게 표현됩니다.
이때 Pre-Training Loss도 추가하여 같이 학습해줍니다. 최종 Loss 함수는 다음과 같습니다.
3-5. Task Specific Input Transformations
그럼 Task 별로 Fine Tuning을 할때 Input Data는 어떻게 구성해줄까요? 예를 들어 하나의 문장의 종류를 구분하는 Classification 문제와, 두개의 문장을 입력받아 유사도를 측정하는 Similarity 문제에서의 Input Data 구성은 분명 달라야 할텐데요. Task별 Input Transformation 방법은 아래 그림과 같습니다.
대표적인 Task들을 하나씩 살펴보겠습니다.
먼저 Classification 문제입니다. 이는 입력받은 Text를 분류하는 문제인데요. 가장 대표적으로 스팸 메일 분류 문제가 있습니다. 메일 내용 전체를 입력으로 주고 모델은 이 메일이 스팸인지 아닌지를 구분하는 문제이죠. 이때는 단순히 문장 전체를 모델에 입력으로 넣어주면 됩니다.
다음은 Textual Entailment 문제입니다. 이는 2개의 문장을 입력 받아 두 문장의 관계를 Classification 하는 문제입니다. 보통 세 가지로 분류하는데요. Entailment (함축), Contradiction (모순), Neutral (중립) 입니다. 이 경우는 문장 2개를 구분해서 입력 받아야 하는데요. 따라서 위의 그림과 같이 첫 번째 문장인 Premise를 넣고, Delim (구분)과 두 번째 문장인 Hypothesis를 구성해줍니다.
세 번째는 Similarity 문제입니다. 이는 두개의 문장을 입력 받아 두 문장이 얼마나 유사한지를 측정하는 문제입니다. 따라서 입력으로는 두개의 문장을 받아야 하고, 출력은 0~1 사이값을 내야 합니다. 위 그림을 보면 첫 번째 입력은 Text1, Text2 순서로 구성하고, 두 번째 입력은 Text2, Text1 순서로 구성하고 있습니다. 이 두 문장을 각각 모델에 입력한 뒤 나온 Representation을 Elementwise Addition 한 뒤 Linear와 Activation 함수를 거쳐 최종 유사도 값을 출력하는 구조입니다.
네 번째는 Multiple Choice 문제입니다. 구체적으로는 Question Answering and Commonsense Reasoning 문제가 있는데요. 이 문제는 Context와 Answer로 구성되어 있습니다. 예를 들면 이렇습니다.
Context는 이렇게 구성해주는 거죠. “서울은 대한민국의 수도입니다. 이 도시는 한강을 중심으로 확장되어 있습니다. 대한민국의 수도는 어디입니까?”
이에 대한 Answer는 “서울” 이죠. 모델은 Context를 입력으로 받아 그에 맞는 Answer를 출력하도록 학습합니다.
4. 실험 결과
다음은 GPT-1의 실험 결과를 통해 제안 방법의 효과를 살펴보겠습니다.
4-1. Natural Language Inference
먼저 Natural Language Inference 실험 결과입니다.
모든 데이터셋에서 기존 방법들보다 성능이 좋은 모습을 볼 수 있습니다.
4-2. Question Answering and Commonsense Reasoning
다음은 Question Answering and Commonsense Reasoning 실험 결과입니다.
역시 모든 데이터셋에서 기존 방법들 대비 가장 좋은 성능을 확인할 수 있습니다.
4-3. Semantic Similarity & Classification
다음은 Semantic Similarity & Classification 실험 결과입니다.
대체로 좋은 성능을 보여주고 있습니다.
5. 분석
다음은 여러 실험을 통해 GPT-1을 분석한 내용을 살펴보겠습니다.
5-1. Impact of Number of Layers Transferred & Zero Shot Behaviors
먼저 Layer의 개수에 따른 성능과 Zero shot 성능 실험 결과를 보겠습니다.
왼쪽 그래프는 Transfer에 사용한 Layer 개수에 따른 성능을 측정한 그래프입니다. 사용한 Layer의 개수가 많을수록 성능이 좋아지는 모습인데요. 이는 Pretrained 정보를 많이 사용할 수록 Fine Tuning 했을때의 성능이 좋다는 의미고요. 결과적으로 Pretrained Model은 Down Stream Task를 해결하기에 유용한 정보를 많이 가지고 있다는것을 알 수 있습니다. 즉 GPt-1에서 제안하는 다음 단어 예측하기 학습 방법은 대부분의 Down Stream Task에 적합하다고 결론 내릴 수 있습니다.
오른쪽 그래프는 Zero Shot 성능을 측정한 그래프입니다. X 축은 Pre-Training을 진행한 정도를 의미합니다. 또한 실선은 Transformer를 사용한 성능을, 점선은 LSTM을 사용한 성능을 나타냅니다. 결과를 해석해보면 대부분의 Task에서 Pre-Training을 많이 진행했을수록 성능이 좋으므로, Pre-Training 과정이 대부분의 Down Stream Task에 적합함을 알 수 있습니다. 또한 Transformer 구조가 LSTM보다 탁월함을 알 수 있습니다.
5-2. Ablations
다음은 Ablation 실험 결과를 살펴보겠습니다.
위 표는 Ablation 실험 결과를 보여주고 있는데요. 이를 통해 세 가지 교훈을 얻을 수 있습니다.
첫 번째는 L1 Auxiliary Objective의 효과입니다. Fune Tuning 과정에서 Loss 함수를 Pre-Training Loss와 같이 구성할 수 있다고 말씀드렸는데요. 이러한 방법을 L1 Auxiliary Objective 라고 표현하고 있습니다. 결과를 보면 이는 NLI, QQP 등 큰 데이터셋에서는 도움이 되고, 작은 데이터셋에서는 도움이 안되는 모습을 볼 수 있습니다.
두 번째는 LSTM과의 비교입니다. 전체적으로 LSTM을 사용할 경우 성능이 크게 하락하는 모습을 볼 수 있습니다. 이를 통해 Transformer 구조가 LSTM을 사용하는 구조보다 우수함을 알 수 있습니다.
세 번째는 Pre-Training의 효과입니다. Pre-Training을 생략할 경우 아주 크게 성능이 하락하는 모습을 볼 수 있습니다. 이를 통해 GPT-1에서 제안하는 Pre-Training 방식이 효과적이며, 성능에 아주 큰 영향을 준다는 사실을 알 수 있습니다.
6. 장단점
다음으로 여기까지 정리한 GPT-1 논문을 토대로 GPT-1의 장단점에 대해 생각해보겠습니다.
6-1. 장점
첫 번째 장점은 전이 학습의 효율성을 높인 방법이라는 것입니다. 즉 강력한 Pre-Training 방법을 제안한 것이라고도 표현할 수 있겠는데요. 실험 결과를 통해 살펴봤듯이 GPT-1의 Pre-Training 효과는 아주 강력합니다. Pre-Training 없이 Fine Tuning만 진행했을때 성능이 크게 하락하는 모습을 통해 확인할 수 있죠. 이렇게 강력한 Pre-Training 덕분에 Task별 Fine Tuning으로 모델은 아주 좋은 성능을 가질 수 있었습니다.
두 번째 장점은 Task 별 최소한의 엔지니어링이 필요하다는 것입니다. 앞서 언급한 것 처럼 GPT-1의 Pretraining은 아주 강력한 효과를 발휘하는데요. Fine Tuning 과정 또한 모델의 구조를 크게 변경하지 않고 진행할 수 있기에 이러한 강력한 Pretraining 효과를 그대로 사용할 수 있스빈다.
세 번째 장점은 강력한 성능입니다. 앞서 실험 결과를 통해 살펴본 것처럼 Pretraining과 Fine Tuning을 거친 GPt-1의 성능은 대부분의 데이터셋에서 SOTA를 기록했습니다.
6-2. 단점
하지만 GPT-1에는 단점도 존재하는데요.
첫 번째 단점은 너무 많은 계산량에서 야기되는 비싼 계산 비용입니다. 이는 물론 뒤에 나올 LLM 등에 비하면 작은 연산량이지만 이 당시에는 가장 큰 연산량을 요구하는 방법이었죠.
두 번째 단점은 Task별 Fine Tuning의 어려움입니다. 이는 마찬가지로 상대적인 비교인데요. 뒤에 발표된 모델들은 Fine Tuning 의 단점을 없애기 위해 Fine Tuning 없이 사용하는 방법을 사용합니다. 이와 비교했을때 GPT-1은 직접 Fine Tuning을 진행해야 하므로 일반화 능력을 잃어버리는 등의 한계가 존재합니다.
7. 의의
그럼에도 불구하고 GPt-1은 다음과 같은 의의를 갖습니다. 바로 언어 모델의 새로운 패러다임을 제시했다는 점입니다. 기존 방법과 달리 강력한 Pretraining 방법을 제시하며 새로운 접근 방법을 제안했죠. 이는 이후 LLM 모델들에게 새로운 연구 방향을 제시합니다.
8. 마치며
이 글을 통해 GPT-1의 전반적인 구조와 기능, 그리고 그것이 자연어 처리 분야에서 어떻게 혁신을 가져왔는지에 대해 깊이 있게 살펴보았습니다. 기존 방법의 한계를 극복하기 위해 탄생한 GPT-1은 그 자체로 많은 가능성과 잠재력을 지니고 있습니다.
이번 글에서는 GPT-1의 모델 구성과 학습 방법을 자세히 알아보았습니다. 이를 통해 GPT-1이 어떻게 다양한 자연어 처리 작업에서 뛰어난 성능을 발휘하는지 이해할 수 있었습니다. 실험 결과와 분석 실험을 통해 이러한 성능이 실제로 어떻게 나타나는지도 확인할 수 있었습니다.
물론, GPT-1도 완벽하지 않습니다. 이 모델의 장단점을 신중하게 검토하면서, 실제 작업에 어떻게 적용할 수 있을지에 대해 고민해야 합니다. 그럼에도 불구하고, GPT-1의 혁신적인 접근 방법은 자연어 처리 분야에 큰 영향을 미치고 있으며, 이를 통해 더욱 발전된 모델과 기술이 나타날 것으로 기대됩니다.
마지막으로, GPT-1의 의의를 되짚어보면, 이 모델은 자연어 처리의 미래를 예측하는 중요한 단서를 제공합니다. GPT-1과 같은 모델들은 앞으로도 계속해서 발전하며, 자연어 처리 분야의 다양한 문제와 도전 과제를 해결하는 데 중요한 역할을 할 것입니다.
이 글을 통해 GPT-1에 대한 통찰과 이해를 더욱 확장할 수 있었기를 바랍니다. 이 모델이 자연어 처리 분야에 미친 영향과 그것이 앞으로 어떻게 발전할 수 있을지에 대한 근본적인 이해를 갖게 되어, 이 분야의 미래 연구와 개발에 대한 통찰력을 키울 수 있기를 기대합니다.