Transformer는 현재 ChatGPT와 Bert, KoAlpaca등 대규모 언어모델(LLM, Large Language Model)분야에서 가장 크게 성장하고 있는 모델로써, 스스로 Transformer를 이해하기 위해 정리할 필요성이 있다고 느껴서 여기에 정리해 본다.
Transformer는 영화 Transformers와 연관성이 전혀 없지만, 지금 보면 자유로이 입력을 출력으로 만들 수 있는 정의를 준것이 아닌가 라는 생각이 든다. Transformer 논문은 2017년 Attention Is All You Need 라는 이름으로 https://arxiv.org/abs/1706.03762 거제되었고, 기존 CNN, RNN등을 사용했을 때보다 높은 성능을 내면서 많은 관심을 받으며, 현재 Bert(이후 Bard) ChatGPT(GPT, Generative pre-trained transformer 관련)으로 확대되었다.
Attention 방식은 번역 모델인 Seq2Seq에서 선보인 입력된 단어의 번역에 연광성있는 단어를 찾는 방법으로 Transformer에서는 Self-Attention을 통해 입력 단어간의 연관성을 찾게 된다.
논문에서 가장 중요한 전체 모델 구조는 아래와 같다.
입력과 출력 부분에 처리하는 과정이 거희 동일하게 Multi-Head Attention을 이용해 입력 문장의 단어들의 연관성을 파악하고 출력에서는 Encoder의 결과와 Masked Multi-Head Attention을 통해서 다음 단어(혹 문장)을 예측하는 어떻게 보면 단순하지만 현재 가장 강력한 LLM 모델로 자리 잡았다.
GPT
GPT는 Generative Pre-trained Transformer의 약자
GPT-1은 OpenAI에서 2018년에 개발한 최초의 GPT모델
Radford, Alec, et al. "Improving language understanding by generative pre-training." (2018).
하나의 모델로 다양한 자연어 처리 Task에 대해서 state-of-the-art 성능을 보여주는 모델을 개발함, 즉 특정 작업을 위해서 개발되지 않아도 범용성이 좋은 하나의 모델로 대규모 데이터를 통해 필요한 튜닝을 거치면 더 좋은 성능을 낼 수 있다는 것을 증명하면서 급속도로 발전 하게 되었다.(기존 모델 대비 좋은 성능이 증명됨) 해당 영역은 아래와 같다.
자연어 처리 영역
Text Entailment (텍스트 연관성 인식) - 2가지 주어진 문장, 텍스트 간의 연관성을 파악하는 작업으로, 2개의 문장을 주고서 긍정인지 부정인지 중립인지를 파악하는 것이다.
SNLI (image captions), SciTail (science exams), QNLI (wiki articles), MNLI (transcribed speech and govt reports), RTE (news articles)
Semantic Similarity(문장간 유사도) - 2개의 문장의 의미 파악하는 작업, 동일한 의미인지 아닌지를 분별하는 것이다.
MRPC (paraphrase corpus), QQP (quora question pairs), STS-B(Semantic Textual Similarity Benchmark)
Reading Comprehension(문장 이해) - 독해 지문을 통해 문제를 이해하고 답을 맞추는 작업
RACE(Large-scale ReAding Comprehension Dataset From Examinations)
Commonsense Reasoning(상식 능력) - 상황을 주어주고 상식적인 답을 맞추는 작업
COPA(Choice of Plausible Alternatives), ROCStories
Sentiment Analysis(텍스트 감정 이해) - 문장, 텍스트를 통해 감정을 맞추는 작업
SST-2
Linguistic Acceptability(문법 오류) - 문장, 텍스트의 문법 오류를 맞추는 작업
CoLA
아래는 GPT 가 나오기 전에 가장 좋은 성능으로 유명한 SOTA(State of the art)모델보다 9개 영역에서 좋은 성능을 발휘한다는 것을 확인할 수 있다.
GPT는 문장을 생성하는데 최적화 하여 개발된 Transformers Decoder 모델을 활용하는 모델로,
Generative pre-trained transformer라는 말처럼 사전 학습(Pre-trained) 을 시키는 부분이 크다.
사전 학습을 통해서 기본적인 언어 모델의 능력인 범용성 높은 텍스트로 문장을 잘 구사하도록 학습을 수행할 수 있고, 이후 Fine-Tuning을 통해 각각 개별 Task에 대한 성능도 함께 사용할 수 있는 모델이다. 이러한 이유로 현재 사전 학습 모델들이 많이 활용되어지고 있다.
그럼 이 사전 학습(Pre-trained) 은 어떻게 진행할 수 있을까?
사전 학습은 일반적인 말뭉치를 학습하는 것이라고 할 수 있다. 즉 특정 작업에 맞춰서 진행하는 것이 아닌, 다양한 문장을 통해 단어간의 연관성을 찾도록 하는 것이다. 이를 통해 보다 다른 모델보다 학습이 되지 않은 상황에서도 보다 높은 성능을 나올 수 있게 된다.
GPT-1의 경우 BookCorpus 데이터셋은 7000개의 판타지, 로맨스, 어드벤처 장르를 포함한 미출판된 책의 텍스트로 사전 학습을 진행하였다고 한다. 또한 모델이 Iong-term information을 잘 학습할 수 있도록 연속적인 긴 텍스트로 구성하여 진행하였다고 한다.
모델의 사전학습에 대해 조금 더 자세히 다루어 보면,
모델은 Transformer 기본 모델의 Decoder 부분을 활용하였고, 12개의 레이어를 가진 768개의 파라메터와 12의 Attention Heads를 활용하였다고 함
Position-wise feed-forward는 3072 차원의 Inner States를 사용하고, learning rate는 2.5e-4로 정수로 0.00025로 경사하강법으로 학습 파라메터로 512의 연속된 토큰으로 64개씩 랜덤하게 minibatch로 구성해 100번(epoch) 학습을 진행
미세 조정(Fine-Tunning)
이후 미세 조정(Fine-Tunning)을 진행하게 되는데, GPT는 특정 작업별로 모델을 만들지 않고, 모델 하나를 이용해서 다양한 자연어 처리가 가능하도록 구성하는게 목적이기 때문에, 이를 위해서 약간의 구성에 맞게 변환작업을 거치게 된다.
GPT에서는 Text Classification과 Question Answering, Text Entailment와 같은 작업을 처리할 수 있는데, 각 작업은 목적에 맞게 사용하기 위해서 구조적으로 다른다. 예를 들어 Question Answering 의 경우, Document, Question, Answer으로 구분하여 작업을 수행해야 하는데, 하나의 모델에서 처리하기 위해서 각각 작업 특성에 맞게 구분 토큰을 이용해서 연속된 테스트로 변경하여 이용하게 된다. 이때 사용되는 것이 <s>, <e> 그리고 구분하는 <$>와 같은 토큰으로 구조를 구분하게 된다.
아래 그림은 GPT에서 처리하는 대표적인 4가지 작업에 대한 구분 방식이다.
GPT 모델의 경우 모델 자체의 학습된 모델이 다수 공개 되어 있고, 이렇게 공개된 모델들이 범용성이 높은 텍스트 문장을 구사하는 모델이라고 할 수 있으며, 추가로 입력시점에도 사전 학습을 시켜 줄 수 있는 방법이 있는데 바로 In-Context Learning 이다.
In-Context Learning 은 사전에 유사한 질문을 몇가지 줌으로써, 올바른 결과를 만들어주는 방식인 Few-shot Learning(GPT-3에 사용됨)을 이용하여 보다 정확한 결과를 찾는 Text Generation에 초점이 맞춰진 모델이다.
즉 거대 언어 모들을 통해 In-Context Learning(추론을 통해 답을 찾는 모델)을 효과적으로 활용하기 위해 Few-shot Learning 을 활용함. 적은 데이터의 샘플로도 활용할 수 있는 장점이 있다.
GPT가 현재 잘 나가는 이유?
생성 모델과 Few-shot learning
- 입력 내용을 토대로 다음 단어가 생성이 되는 것을 목표
- Fine-tuning 없이도 few-shot 성능이 좋은 결과를 보임
- 모델 스케일을 키우면 성능이 좋아진다는 경향이 있음
- 명령어 만으로 사용자가 원하는 것을 쉽게 볼 수 있는 점
용어정리