elevne's Study Note
GPT에 대해서~ 본문
오늘은 지금껏 미뤄둔 GPT 모델에 대해서 알아보고자 하였다. GPT는 OpenAI에서 2018년 처음 제안된 모델로, GPT1으로 시작하여 지금은 GPT3까지 발표되어 있다. GPT1은 "Improving Language Understanding by Generative Per-Training" 이라는 논문에서 처음 소개되었으며 BERT보다 먼저 사전학습 기법을 활용하여 여러 문제에서 당시 기존 모델들보다 높은 성능을 보인 바가 있다.
GPT1
GPT1은 BERT와 마찬가지로 매우 큰 Text Data를 활용, 비지도학습으로 사전학습을 시킨 후 Fine Tuning을 통해 여러 영역에 사용하는 방식을 사용한다. GPT1의 구조도 BERT와 마찬가지로 Transformer의 구조를 띄어 BERT와 대부분의 구조가 비슷하다고 한다.
하지만 차이점으로는 BERT에서는 Transformer의 Encoder 구조만 사용한 반면, GPT1은 Transformer의 Decoder 구조만 따랐다는 점이다. Decoder 구조를 따른다는 것은 순방향 마스크 어텐션을 사용한다는 것을 의미한다.
BERT에선 NSP, Mask Language Model을 사용한 것과 다르게 GPT에서는 앞선 단어를 통해 뒤의 단어를 예측하는 전통적인 언어 모델 방식을 사용했다. 또 GPT1에서는 BERT와 다르게 실제 문제를 대상으로 학습을 진행할 때도 언어모델을 함께 학습한다고 한다. BERT에서는 사전학습에서만 언어모델의 Loss를 이용하여 학습하는 반면 GPT1에서는 실제 문제에 이 언어모델을 적용할 때에도 문제의 손실값과 더불어 언어모델의 손실도 계산하는 것이다.
GPT2
GPT2의 구조도 GPT1의 구조와 거의 유사한데, 달라진 점이 있다면 GPT1에서 각 Layer 이후 Residual Connection과 함께 적용되던 Layer Normalization이 각 부분 블록의 입력 쪽으로 위치가 이동했다는 점이 있다. 또, 마지막에 Self Attention Layer 이후 Layer Normalization이 적용된다고 한다.
GPT3
GPT3는 GPT2에 이어 OpenAI에서 2020년에 발표한 모델이며, 총 1750억 개의 가중치를 갖는다고 한다. 기존 GPT2 모델에 비해서도 크기가 매우 커졌는데 기존의 사전학습, 미세조정 방식의 한계를 지적하며 새로운 방법론을 제시하였다고 한다.
기존의 Pre-Training, Fine-Tuning 방식은 학습된 모델이 특정 도메인에 국한되게 된다는 한계점을 지닌다. 좀 더 구체적으로는 각 하위문제들을 해결하기 위해서는 미세조정 과정이 필요할 뿐만 아니라 미세조정을 위해 하위문제의 해결을 위한 데이터셋 구축이 필요하다.
위 문제점을 극복하기 위해 Meta-Learning - 메타학습 방법론을 제안하였다고 한다. Pre-Training 과정에서 학습된 다양한 언어적인 능력 및 패턴을 인식하는 능력만을 활용해서 새로운 문제에 적용하는 방법이다. 방대한 데이터를 활용하여 가중치를 사전학습 시키고 학습된 모델의 능력을 활용해서 특정문제에 적용 및 예측하는 방법이다. 이 방법이 기존의 사전학습 모델과 다른 이유는 기존에는 Fine Tuning 과정을 거쳐서 새로운 문제에 특정된 가중치로 새롭게 업데이트 하지만, Meta Learning에서는 가중치를 업데이트 하는 것이 아니라 사전학습 과정에서 학습된 정보만을 활용하여 문제를 해결하기 때문이다.
위 Meta Learning을 활용하는 방법론은 문제를 해결하기 위한 예시를 몇 개 사용했는지에 따라 Zero-shot Learning, One-shot Learning, Few-shot Learning 으로 나뉜다고 하며 각 방법은 각각 0, 1, n개의 예시를 활용하는 것이다.
Few-shot Learning에 대해서 알아보자면, 이 방법을 사용하여 모델이 소량의 데이터만으로도 처음 보는 문제를 풀 수 있게끔 하는 방식이다. (사람이 현재 가지고 있는 지식을 바탕으로 문제의 몇 가지 예시만을 가지고도 다른 문제들의 정답을 유추할 수 있는 것으로 비유할 수 있다고 한다.)
아쉽게도 GPT3의 체크포인트는 따로 공개되어 있지 않으며 해당 모델의 크기는 너무 커서 일반 GPU로는 테스트해볼 수 없다. 이는 OpenAI 에 API로 열려있어 활용하는 방법이 있다고 한다.
'Machine Learning > NLP' 카테고리의 다른 글
KoBART 분석해보기 (2) (0) | 2022.11.26 |
---|---|
KoBART 분석해보기 (1) (1) | 2022.11.24 |
KoBART 전이학습 (Colab) (0) | 2022.11.20 |
BERT - KorQuAD (2) (0) | 2022.11.19 |
BERT - KorQuAD (1) (0) | 2022.11.18 |