상세 컨텐츠

본문 제목

[논문] GPT 논문 정리

논문

by 수타. 2024. 7. 15. 17:36

본문

GPT : Improving Language Understanding by Generative Pre-Training (2018)

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의 양식을 다음과 같이 바꾸어 학습시켜줍니다.

 

 


GPT2 : Language Model are Unsupervised Multitask Learners (2018)

https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

 

 

기존 논문들 GPT1 , BERT와의 차이점 


먼저 GPT1과 모델구조는 굉장히 흡사하지만 가장 큰 차이점은 데이터셋을 훨씬 많이 학습하였습니다. 그로인해 fine tuning 하지 않으면 사용할 수 없었던 GPT1에비해 zero-shot학습이 가능해졌고, BERT의경우 masked language model 로 bi-directional한 것이 특징이라면 GPT는 auto-regressive(즉 토큰이 생성이 되면 그 토큰이 다음 시퀀스의 인풋으로 사용됨)

 

GPT2의 특징들

  • 1024개의 토큰까지 input으로 사용할 수 있음(학습할땐 동시에 처리할 수 있는건 512개)
    (이 때 GPT2는 Top-k 라는 파라미터가 있는데 확률이 높은 k개의 단어들을 제시해서 획실적인것을 해결하려 함) 
  • 전체 단어 사이즈는 약 50k개 이며, 임베딩사이즈는 768(small) 부터 1600(extra large)로 사용함
  • Byte Pair Encoding을 통해 단어토큰을 생성하였습니다.
    • 단어를 문자(Char)단위로 쪼갠 뒤, 가장 빈도수가 노은 쌍을 하나로 통합하는 과정을 반복하여 토큰 딕셔너리를 만듦
    • FastText와 같은 원리로 OOV해결

  • Layer Norm 의 위치가 바뀜(원래는 attention 과 feed-forward뒤에 왔는데 앞으로 옮겨짐)

  • 그리고 Residual path를 루트 N분의 1로 스케일링함
    • N은 전체 decoder layer수 이며, gpt2가 돼서 층이 깊어져도 이로인해 기울기 소실 문제를 줄여줍니다

 


GPT3 : Language Models are Few-Shot Learners (2020)

https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdfhttps://arxiv.org/pdf/2005.14165

논문 당시의 배경(당시 논문 특징 및 한계)

  • Pretrained Language Models은 특정 테스크(분류,생성)에 따라 다른 아키텍쳐없이도 바로 파인튜닝 할수 있음
  • 아키텍쳐 구조는 테스크와 상관없이(task-agnostic) 적용이 가능하지만 마지막에 테스크마다 파인튜닝을 위해선 테스크마다의 labeled datasets이 필요함(시간과 돈)
  • 모델 사이즈가 커지만 트레이닝 데이터가 충분하지 않다면 spurious correlations(허위관계,둘 이상의 변수가 통계적으로는 연관이 있지만 인과관계는 없는 것) 이 발생할 확률이 높아짐
    • ex) 휴대폰 판매량이 늘어나면 그 도시 범죄 건수가 증가함 > 사실 둘이 직접적인 관계는 없고 인구가 증가한것인데, 통계적인 관계발생
  • 인간은 대부분의 laugage tast에 대해서 많은량의 supervised(labeled) data를 필요로 하지 않음

 

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로 학습

  • 장점: 많은 해당 Benchmark에 대해서 성능이 잘나옴
  • 단점:각 task 마다 많은량의 새로운 data가 필요하고, ood(out of distribution) 가지고 있는 데이터 밖이면 일반화 능력이 많이 떨어짐 , 데이터의 spurious(가짜의) 특징들을 exploit(악용v)할수 있음(과적합)

Few-shot : 몇몇의 demonstrations(예시,설명)를 추론 단계에서 받고, 업데이트는 안함

  • 장점: task-specific한 data없어도됨
  • Sota모델보단 성능이 현저하게 떨어짐

 

self attention할때 전부 다 하는거보다 다음과 같이 Sparse하게 attention하여, 계산 복잡도는 낮추고 문맥정보를 유지합니다.

 

2048개의 토큰을 멕시멈 인풋으로 받습니다.

 

Common Crawl dataset 이라는 trillion개수에 단어들로 학습시켰는데, 이때 퀄리티를 위해 3가지의 전처리를 해줬습니다.

  • 높은 품질의 corpora와 비교해서 유사도가 높은것들로 필터링을 시킴
  • 문서 레벨에서 중복되는 부분,데이터셋 관점에서 중복되는것들을 제거함,
    • 동일한 데이터가 하나는 학습하고, 하나는 val셋에 있으면 안되기 때문
  • 데이터셋이 너무 크다보니까 전체데이터 셋을 에폭당 한번도 못돌리는 셋도있음

 

필터링에 버그가 있어 중복되는 부분 제거를 완벽하게 못했습니다.

결론적으로 overlap이 존재해서 다시 학습시켜야 하는데 cost가 너무 많이 들어서 하지 못했다고 언급합니다.

 

GPT3의 한계

한계

  • 택스트 생성 관점에서 약점
    • 특정한 표현을 반복한다던가, 매우 긴 문단에서는 coherence(일관성)을 잃어리는 경우가 있음
    • 모순이 발생하거나 자연스럽지 않는 경우가 있음
  • 구조 알고리즘에서 약점
    • (Decoder만을 활용하기 때문에) auto-regressive함 bidirectional하지 않고(뒤쪽의 정보를 앞에서 사용할 수 없음)
    • Rretraining할때 모든 토큰 동등한 가중치로 loss 를 계산함(더 중요한 단어와 덜 중요한 단어 Loss 구분이 안됨)
      • 과거 연구들을 언급하며 단어의 중요도에 따라 Loss를 차별적 으로 줄 경우 Quality의 향상을 기대함

관련글 더보기