https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf
기존 방법의 문제점
Data set 들이 labeled dataset보다 unlabeled datasets이 훨씬 많기 때문에 이것들을 활용할 수 없을까 라는 고민에서 시작되었고, 이 Data들을 Generative Pre-Training으로 활용하여 텍스트의 일반적인 언어 구조와 패턴을 학습하고, 후에 labeled data로 Specific task를 위해 튜닝한다면 훨씬 더 좋은 결과를 얻을 수 있습니다.
GPT의 모델 구조
GPT에서는 기존 Transformer 구조에서 decoder부분만을 사용했습니다. 그래서 Attention구조 중에서 이전 임베딩단어들을 참고하는 Masked Multi-Head Attention 은 그대로 사용하지만 encoder를 사용하지 않기 때문에 encoder의 어떤 단어와 연관이 있는지 알기 위해 사용했던 encoder-decoder attention은 사용하지 않습니다. 그럼 이렇게 Decoder만 사용하게 된 이유는 먼저 언어 생성작업에 최적화 된 모델이기 입니다. 이전 토큰들을 입력받아 다음 토큰을 예측하는 데 매우 적합기 때문에 생성하는데 매우 유리합니다. 또한 디코더만 사용하여 모델의 구조를 간소화 했기 때문에 훈련과정에서 계산 비용을 줄이고 ,모델의 효율성을 높였습니다. 이 전체의 층을 N개를 쌓았으며 이들은 구조는 동일하지만 각각 고유한 weights를 갖습니다.
Unsupervised pre-training & Supervised fine-tuning
Unsupervised pre-training
- 대규모의 unlabeled data를 Next Token Prediction 즉 다음 단어 예측 방법으로 학습합니다. 간단히 말하면 "나는 오늘 학교에 " 다음 "갑니다"라는 토큰을 예측하는 방식으로 학습이 진행됩니다. 이를 통해 모델이 언어의 복잡한 패턴과 구조를 학습하게 되고, 이는 후에 진행되는 전이 학습에 유용합니다.
Supervised Fine Tuning
- 이후 각 Task에 따라 labeled dataset으로 재학습을 하게 됩니다.
L1 : 이전 단어들이 주어졌을 때, 그 다음 단어를 맞추도록 하는 목적함수 입니다.
L2 : labeled data로써 x^1 ~ x^m 까지 m개의 토큰이 주어졌을 때, 정답 y가 나올 확률 이고 이를 최대화 하는것이 목적입니다. 식을 보면 L1에서는 파라미터가 u(unlabeled token)임에 반해 L2에서는 c로 알고있는 데이터들이 input임을 확인할 수 있습니다.
L3 : 이 두 목적함수를 hyper parameter 인 감마로 합친 것이 L3입니다.
마지막으로 task에 따라 input의 양식을 다음과 같이 바꾸어 학습시켜줍니다.
기존 논문들 GPT1 , BERT와의 차이점
먼저 GPT1과 모델구조는 굉장히 흡사하지만 가장 큰 차이점은 데이터셋을 훨씬 많이 학습하였습니다. 그로인해 fine tuning 하지 않으면 사용할 수 없었던 GPT1에비해 zero-shot학습이 가능해졌고, BERT의경우 masked language model 로 bi-directional한 것이 특징이라면 GPT는 auto-regressive(즉 토큰이 생성이 되면 그 토큰이 다음 시퀀스의 인풋으로 사용됨)
GPT2의 특징들
https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdfhttps://arxiv.org/pdf/2005.14165
논문 당시의 배경(당시 논문 특징 및 한계)
GPT3의 특징들
Meta-learning이란 모델이 학습하는 과정, training time안에서 굉장히 다양한 데이터셋들의 스킬들과 패턴을 인지하는 능력을 개발하는것, (명시적으로 명명하지 않더라도 , In-context learning 을 통해 다양한 데이터를 하나의 모델이 인식할 수 있게 함)
학습할때 Loss(log)값은 결국 parameter의 크기가 커질수록 성능도 같이 높아지며,갈수록 fewshot.oneshot,zeroshot간 성능차가 커졌습니다.
zero-shot에서도 엄청 좋은 성능을 보여줬지만 특정 테스크에선 아직 부족한점이 많음
지금 나오는 방법인 in-context learning인 zero-shot,one-shot,few-shot은 학습(gradient 가 update되는)이 아닙니다.
Fine-tuning: Pre-trained Models을 특정한 테스크에 specific한 data로 학습
Few-shot : 몇몇의 demonstrations(예시,설명)를 추론 단계에서 받고, 업데이트는 안함
self attention할때 전부 다 하는거보다 다음과 같이 Sparse하게 attention하여, 계산 복잡도는 낮추고 문맥정보를 유지합니다.
2048개의 토큰을 멕시멈 인풋으로 받습니다.
Common Crawl dataset 이라는 trillion개수에 단어들로 학습시켰는데, 이때 퀄리티를 위해 3가지의 전처리를 해줬습니다.
필터링에 버그가 있어 중복되는 부분 제거를 완벽하게 못했습니다.
결론적으로 overlap이 존재해서 다시 학습시켜야 하는데 cost가 너무 많이 들어서 하지 못했다고 언급합니다.
GPT3의 한계
한계