SJ_Koding

GPT-1에 대해 이해해보자 (GPT 1편) 본문

LLM

GPT-1에 대해 이해해보자 (GPT 1편)

성지코딩 2024. 3. 20. 10:22

Chat GPT의 시초, GPT-1 부터 차근차근 알아보자

(본 포스팅은 AI업계에서 유명하신 허민석 개발자님의 유튜브 GPT-1(밑바닥부터 알아보는 GPT) 강의를 참고했습니다.)

 

What is GPT?

 

Generative Pre Training of a language model (GPT)의 약자, 여기서 말하는 language model부터 이해해보자.

구글이나 유튜브를 검색할 때, 어떤 단어를 입력하면 다음 단어가 추천되는 것을 자주 확인할 수 있다.

ex) 입력: GPT
      추천: GPT 사용법, GPT-4, GPT 유료, ... 등등

language model은 위 예시처럼 현재 토큰을 가지고 다음 토큰을 예측하는 행위도 가능하다.

 

 이때 Language model의 장점은 특별한 라벨링이 필요 없다는 것이다. 현재 토큰을 가지고 다음 토큰을 예측하는 것이기 때문에, 어떠한 샘플 문장속에 라벨이 모두 포함되어있는 것이다. 따라서 라벨링에 필요한 시간과 인력이 필요하지 않다는 것이다. 인터넷 상에 돌아다니는 Text만 사용하면 된다. 따라서 대규모 데이터셋을 사용할 수 있는 것이다. 

따라서 사람이 이해한, 혹은 이해하지 못한 자연어의 특성을 학습할 수 있게 된다.

 

GPT is not just Language Model

GPT 1의 핵심은 LM학습방법으로 엄청나게 많은 학습데이터를 통해 자연어 처리 능력이 뛰어난 모델을 만드는 것이다. 기존 LM의 파인튜닝은 별도의 Task관련 모델을 연결지어줘야 했지만, GPT-1은 별도의 추가 레이어를 붙일 필요가 없다. (성능이 크게 뛰어나기 때문에)

GPT1 has two steps of GPT train

  1. Unsupervised Pre-training with LM objective function
  2. Supervised Fine Tuning (1. 에 만들어진 모델을 이어서 학습하되, 데이터는 필요에 맞는 데이터로만 추가학습)
    1. Natural Language Inference
    2. Question Answering
    3. Semantic Similarity
    4. Classification

 

GPT는 왜 Transformer의 Decoder를 메인 디자인으로 삼았을까?

 

What is Transformer?

Transformer는 모든 토큰에 대해 연산할 필요 없이 한 번의 연산으로만 진행된다. Positional Encoding과 attention 레이어를 통해 학습을 진행한다. Self-attention의 내용은 아래 포스팅 글을 부가적으로 참고하자.

2024.01.21 - [이론 정리] - ViT(Vision Transformer)에 대해 차근차근 이해하기 上편

 

ViT(Vision Transformer)에 대해 차근차근 이해하기 上편

모의 면접을 진행했을 때 ViT에 대해 질문이 나왔다. 큰 흐름은 알고있었지만 세부적인 내용은 숙지가 되어있지 않아서 어영부영 넘어가 버렸다. 이번 기회에 ViT에 대해 디테일한 부분을 정리하

sjkoding.tistory.com

Attention을 단일로 사용하면, 한 attention에 치우칠 수 있기 떄문에, 병렬적으로 여러 개의 Attention을 앙상블을 이용하여 이를 완화하는데 이를 Multi-head Attention이라고 부른다. 또한 Transformer에는 skip connection이 존재하며 이는 하위 정보를 보존할 수 있다는 점과 gradient vanishing을 완화하며 효율적으로 학습할 수 있다.

Encoder부분에 Multi head Attention과 FC레이어를 skip connection과 함께 묶은 것들을 통으로 Encoder Block으로 불리고 Decoder부분에도 마찬가지로 Decoder Block으로 불리며 최종적으로 논문에서 제시한 Transformer는 각각 6개씩 Block을 연결하여 좋은 성능을 보였다고 한다.

다시 돌아와 GPT - 1

Transformer의 Encoder를 사용한 대표적인 모델 --> BERT

Transformer의 Decoder를 사용한 대표적인 모델 --> GPT

GPT1은 다음과 같은 테스크에서 눈에 띄는 성능을 보

  1. Natural Language Inference (두 문장간의 관계를 유추)
  2. Question Answering (챗봇과 같이 질의응답)
  3. Semantic Similarity (두 문장이 유사한지 확인)
  4. Classification (문장의 유형 분류)

GPT-1은 Transformer의 Decoder를 12개를 쌓아 제작되었다.

Laungage Model의 학습은 비지도 학습이다. 대규모의 텍스트 데이터셋으로 Pre-training model of LM을 만든 후 이를 라벨링된 데이터로 파인튜닝한다. 사실 기존 모델에서 파인튜닝을 할 때, 적절한 레이어를 추가했었지만 GPT-1은 별도의 레이어를 추가하지 않고도 파인튜닝이 가능한 큰 장점을 보였다. 중요.

예를 들어

두 문장의 유사도를 검사하려고 할때, 기존에는 pre-trained model에 추가 레이어를 붙여, 추가학습을 진행 했었지만, GPT-1은 두 개의 문장 사이에 special한 문자를 추가하여 한 문장에 넣고 라벨링 된 데이터로 지도학습만으로도 파인튜닝이 가능하다라는 말이다. 즉, 다양한 형태의 입력 값을 하나의 입력값으로 치환해서 입력하는 것도 큰 메리트다.

기존 모델들은 파인튜닝을 위해 추가적인 레이어를 연구하기 위해 많은 노력과 시간이 필요했지만 GPT-1은 해당 과정이 필요 없다는 큰 장점이 있다. 이게 GPT-1의 아주 큰 핵심이다.

 

진화된 Embedding 방법

기존에는 word embedding 혹은 character embedding을 많이 사용했었지만 GPT-1은 Byte pair encoding을 사용한다. 이는 자주 함께 사용되는 character를 하나의 묶음으로 사용하는 encoding 방식이다. 해당 방식은 word embedding과 character embedding의 장점을 두루 가지고 있다.

word embedding의 장점은 단어 유사도를 가지고 있는 것이며 단점은 보지못한 단어는 유사도가 존재하지 않는 Zero vector로 표시되기때문에 신조어나 오탈자에 상당이 민감하다라는 것이다.

character embedding은 Zero Vector가 나올 확률이 거의 없지만, 단어 간의 유사도의 정보는 word embedding에 비해 확실히 떨어질 수 밖에 없다.

 

Byte pair embedding

예를 들어 hackable이라는 단어는 생소한 단어이기 때문에 기존 embedding에서는 zero-vector가 될 가능성이 크지만, 이를 나누어서 hack과 able이라는 단어는 상당히 빈번한 단어이다. byte-pair encoding은 hackable이라는 단어를 hack과 able이라는 단어로 쪼개어 각각에 embedding을 부여한다.

이 경우 단순히 zero-vector을 전달하는 기존 모델보다 hack과 able이라는 의미를 잘 전달할 수 있기 때문에 더 나은 모델의 성능을 기대할 수 있는 것이다.

 

요약

  1. Use transformer decoder
  2. Unsupervised Learning with unlabeled text for pre training
  3. Fine tuning without additional task specific model
  4. sub word tokenization ( byte pair encoding )

 

다음은 GPT-2를 알아보겠다.