GPT
GPT는 Generative Pre-trained Transformer의 약자이다. OpenAI사가 개발했으며 3세대까지 존재한다.
GPT1
위의 그림은 GPT1의 구조이다.
GPT가 개발된 배경은 대부분의 task들은 label이 있는 데이터를 사용하였는데, 이러한 데이터를 구축하는 것부터가 많은 비용이 들기 때문에, label 되지 않은 데이터를 사용해보자는 생각에서 시작되었다.
Similarity 부분에서는 두 문장이 비슷한 문장인지 아닌지를 비교한다. 비슷한 주제인지 파악할 때 사용되며 결과로 나온 두 vector를 합하여 Fully Connected Layer을 거치게 된다. Entailment부분은 2개의 문장이 하나가 참이면 두번째 문장도 필연적으로 참이어야하는지, 아니면 관련없는 문장인지 확인한다. 즉, 논리적으로 두 문장이 양립할 수 있는건지 아닌지를 판단한다. 이때는 두 문장을 한 sequence로 주며, 중간에 Delimeter라는 특수문자를 넣어서 앞의 문장과 뒷 문장을 구분하는 역할을 수행하게끔 한다.
GPT 2
GPT 2 는 완전히 새로운 구조는 아니고, decoder로만 구성된 transformer와 매ㅜ 유사하다. 이것은 방대한 양의 dataset으로 훈련된 transformer 기반의 매우 큰 language model이다. 그저 정말 큰 transformer LM인 것이다.
Transformer 모델의 가장 초기 버전은 encoder 와 decoder 으로 구성되어 있었으며, 각각은 transformer 블록들을 쌓아서 만들어지는 것이었다. 그 후에 encoder와 decoder 중 하나만 사용하는 형식으로 변화하였고, 이 block들을 쌓을 수 있는 만큼 많이 쌓아서 대량의 텍스트들을 학습에 이용하였다. 쌓을 수 있는 block의 양이 GPT2 모델의 크기를 정하는 주요 구별요소이다.
GPT 3
최근 많은 각곽을 받고 있는 모델이며 소개된 논문은 <Language Models are Few-Shot Learners> 이다. GPT2와의 차이가 있다면 3가 훨씬 더 많은 파라미터를 가지고 있으며 훨씬 방대한 양의 학습 데이터를 사용했다는 것이다. 96개의 attention layer, 3.2M의 배치사이즈, 175B 개수만큼 파라미터를 가지고 있기 때문에 하나의 서버에서 학습을 시킨다는 것은 사실상 불가능하다. 따라서 모델을 학습시킬 때, layer을 자르거나 pipelining하여 GPU 여러개를 활용하여 학습시킨다. 아래의 표를 보면 GPT-3 모델의 사이즈가 기존 다른 모델들과 얼마만큼이나 큰 차이를 보이는 지 실감할 수 있다.
GPT3에서 소개한 아이디어는 In-Context Learning이다. 직역하면 문맥 속에서 배운다는 의미인데, 파라미터 수가 너무 많다보니까 fine tuning 조차도 매우 큰 에너지가 필요하다. 그래서 fine tuning 하지 않고 문맥을 제시하면 해당 문맥이 무엇을 의미하는 지 스스로 학습하여 output으로 제시하도록 하는 것이다. 여기서 이 예시를 prompt라고 하며 prompt가 제시되지 않으면 zero-shot, 한 개면 one-shot, 그 이상이면 few-shot이라고 한다.
연구된 바에 따르면, zero-shot의 성능은 모델의 사이즈와 거의 동일하게 증가하며, few-shot은 이것보다도 더 빠르게 증가한다. 아래의 표가 그것을 나타내주고 있고, 표를 통해서 따로 학습시키지 않았지만, task에 맞는 prompt와 이에 대한 몇가지 example을 주는 것만으로도 50% 정도의 성능은 보일 수 있음을 뜻한다.
** GPT3 논문을 후에 번역/정리할 예정**