Study/자연언어처리 NLP

Decoder Model (GPT)

김 도경 2025. 1. 17. 11:26
GPT-1
  • GPT (Generative Pre-Training)
    - Improving Language Understanding by Generative Pre-Training
    - Language Understanding : Text Entailment, QA, Classification 등 다양한 task 포함
    - Generative Pre-training : BERT의 Masked Language Modeling (MLM) 과 다르게, 다음 단어를 생성하는 방식으로 Pre-training 진행 (Causal Language Modeling)

    - Transformer Decoder 구조를 활용하여 생성에 강점을 가지는 모델
    - 문장의 흐름대로, “앞” 의 문맥이 주어졌을 때 다음으로 오는 단어를 맞추는 방식으로 학습 -> 단방향 (Unidirectional) 성격

  • GPT 모델 구조
    - Multi-Layer Transformer Decoder
    - 40,000 개 단어의 Bytepair Encoding (BPE) Vocab
    - Positional Embeddings 사용
    - 단어의 시퀀스를 입력으로 받아 각 Layer마다 Masked Multi-Headed Self-Attention을 적용하고 Position-Wise Feed Forward Layer를 통과시키는 과정을 반복해서 수행

  • Self-Attention vs Masked Self-Attention
    - Self-Attention : 예측하는 단어 (MASK token) 을 제외한 앞, 뒤 단어를 반영해서 예측
    - Masked Multi-Headed Self-Attention : 예측하는 단어의 앞 단어만을 반영 해서 예측

  • Pre-training
    - 왼쪽에서 오른쪽으로 예측하며 언어 모델을 학습 (Causal Language Modeling)
    - N개의 단어로 이루어진 문장으로, N+1개의 사전 학습 데이터 생성
    - 문장의 시작과 끝을 나타내기 위해 두 개의 special token 사용 ( <sos>,<eos> )

  • Fine-tuning
    - Task에 맞게 입력을 토큰 ($)을 통해 하나의 문장으로 변환
    - 사전학습 모델에 최소한의 변경만으로 효과적인 Fine-tuninig을 위해 사용
    - 시작 (Start)및 종료 (Extract)토큰 (⟨s⟩, ⟨e⟩)추가
       - 모델에 명시적으로 시작과 끝을 지정해주지 않으면, 장황한 응답을 생성하는 등의 문제 발생

  • Single Sentence Classification 
    - 문장을 입력으로 넣고 문장의 종류를 분류하는 문제 (SST-2, CoLA)
    - GPT 예측 방식
          - text 형식으로 모델에 전달하여 예측 (예) 우리는 어렵지만 열심히 공부한다. -> 중립)

  • Textual Entailment
    - 전제와 가설이 주어지면 두 문장의 관계를 이해하여 문장간 관계를 구분 (MNLI, SNLI)
         - 참(Entailment) : 전제가 가설을 포함하는지
         - 거짓(Contradiction) : 전제가 가설과 모순되는지
         - 중립(Neutral) : 그 외
    - GPT 예측 방식
        - <s>와 <e>사이에 전제 𝑝 와 가설 ℎ token 사이에 구분자 token ($)로 문장을 연결하여 모델에 전달하여 예측
        (예) 101빌딩 근처에 나름 즐길거리가 많습니다. $ 빌딩 부근에서는 여러가지를 즐길수 있습니다. -> 참)

  • Similarity
    - 다른 표현으로 작성된 두 문장이 유사한 내용을 담고 있는지 구분 (STS, MRPC)
    - GPT 예측 방식
        - 가능한 문장 순서를 모두 포함하도록 입력 시퀀스를 배치(Delimiter $ ) 후 각각 Transformer 에 전달하여 예측
         (예) 숙소 위치는 찾기 쉽고 일반적인 한국의 반지하 숙소입니다. $ 숙박시설의 위치는 쉽게 찾을 수 있고 한국의 대표적인 반지하 숙박시설입니다. -> 유사 : 두 문장의 결과를 각각 더하여 Linear Layer 에 전달)

  • Question Answering and Commonsense Reasoning
    - 주어진 문서를 바탕으로 질문에 답변 (SQuAD, RACE) 
    - GPT 예측 방식 : 문서 𝑧 + 질문 𝑞 (context)과 답변 집합 각각을 Delimeter ($) 로 연결
      (예) 제주도 장마 시작 … 중부는 이달 말부터 질문 : 중부 지방의 장마 시작은? $ 이달 말)
      (예) 제주도 장마 시작 … 중부는 이달 말부터 질문 : 중부 지방의 장마 시작은? $ 이달 초)
      (각각 독립적으로 처리된 후 Softmax 를 통해 가능한 응답에 대한 분포를 생성)

  • 성능
    - MNLI, SNLI, RACE 등 대부분의 Task 에서 큰 차이로 우수한 성능을 보임
GPT-2,3
  • GPT-1 vs GPT-2 vs GPT-3
    - GPT-2, GPT-3는 기본적으로 GPT-1과 같은 구조. : Transformer Decoder Layer를 쌓아올린 구조
    - GPT-1 -> GPT-2 -> GPT-3 으로 갈수록 더 많은 Layer를 쌓고, 더 많은 데이터를 사용해서 Pre-training 진행

  • GPT-2, GPT-3 공통점
    - 하나의 모델로 여러 task를 수행하기 위한 GPT 모델
    - Fine-Tuning 에도 라벨이 있는 데이터셋이 상당량 필요함을 언급하며 매개 변수나 아키텍처 수정 없이 원하는 task 를 수행할 수 있도록 하는 Zero-shot 성능의 중요성 강조
    - 모델 사이즈(Scale)의 증가가 Zero-Shot 성능에 중요한 영향을 준다는 주장 -> Scaling Laws

  • GPT-2 이전 모델의 한계
    - 기존의 모델 (Machine learning, Transfer learning, Fine-tuning)은 대규모 데이터와 큰 크기의 모델을 결합해 학습한 task 에서 좋은 성능
    - 하지만 학습하지 않은 task에 대해서는 좋은 성능을 기대할 수 없음
        - 한계 1 : 데이터 분포의 약간의 변화에도 취약하고 민감하여 일반화가 안됨.
             - 학습한 task에서 높은 성능을 보인다 하더라도 다른 기본적인 task에서는 성능 저하
        - 한계 2 : 새로운 task에 대해 매 번 라벨이 있는 데이터가 많이 필요한 부분은 모델의 활용성을 제한
             - 사람은 대부분의 task에서 학습하기 위해 많은 데이터가 필요 없음. 몇 개의 예제만으로도 새로운 task를 수행하기 충분하나 이전 방식은 불가

    - 해결책 1) 여러 task가 가능하도록 모델의 일반화 성능을 높임
         - 학습 시에 일반적인 지식과 task 인지 능력을 향상시키면, 추론 시에는 task를 빠르게 인지하고 이에 적응
    - 해결책 2) 모델의 크기 증가
         - 모델 크기가 향상될수록 일반적인 성능도 향상되는 것처럼 보임 (Scaling Laws)

  • GPT-2 (Language Models are Unsupervised Multi-task Learners)
    - Multi-task Learning과 유사하게 여러가지 task를 동시에 학습시켜 일반화 가능한 하나의 모델 구축
        - Multi-task learning : 연관성 있는 여러가지 task 를 동시에 학습시켜 학습된 representation 을 공유함으로써 Multi-task 를 수행가능하도록 학습

    - GPT-2 특징
        - GPT-1와 같은 모델 구조를 가짐.
        - Layer 수, Paramerter 수, Pre-training 데이터셋 크기, 모델에 들어갈 수 있는 문장의 최대 길이를 증가시킴

    - 여러 task 를 하나의 일반화된 하나의 모델로 수행하기 위해서는, 전체적인 입출력 형식은 통일시키지만, task 별로 구분은 돼야 함
        - 여러 task에 하나의 통일된 입출력 형식 사용 (입력 : 지시문 + Context / 출력 : 정답)
        - 동시에 지시문을 통해 task 별로 구분
             - 번역 task 입-출력 (입력 : 번역을 수행하세요 “영어 문장” / 출력 : 번역된 문장)
             - 질의응답 task 입-출력 (입력 : 질문에 답하세요 “문서와 질문” / 출력 : 질문에 대한 답변)

  • GPT-3 (Language Models are Few-Shot Learners)
    - In-Context learning을 통해 task 별 많은 데이터를 구축하거나 학습할 필요 없이 Few-shot 예제만으로 성능 향상
    - In-context Learning : 사용자가 입력한 내용만으로 다양한 task 를 수행하도록 학습. 입력한 내용 내 맥락적 의미(In-Context)를 모델이 이해하고(learning), 답변을 생성
    - Pre-training 이나 Fine-tuning 와 달리, 별도의 모델 학습과정이 존재하지 않음.
    - Zero-shot, One-shot, Few-shot 이 이에 해당

    - GPT-3 성능
       - 번역, QA, 자연어 이해 등 학습하지 않은 다양한 task 에서 Zero-shot 혹은 Few-shot만으로 Fine-tuning 성능과 비슷하거나 더 높은 성능을 보임

  • 모델이 자연어 처리 Task를 해결하는 방식
    1) 기존 Fine-tuning 방식 
    - 장점 : 많은 벤치마크에서 강력한 성능
    - 단점 : 수천에서 수십만 개의 레이블이 지정된 데이터 필요, 모든 작업 별 새로운 데이터 필요, 학습되지 않은 task 나 분야에서 일반화 부족

    2) Few-shot
    - task 에 대한 지시문과 K개 (10 ~ 100) 예제를 제공하고 마지막에는 모델이 예측해야 할 예제문을 제공
    - 장점 : 필요한 task 별 라벨이 있는 데이터의 개수가 크게 감소
    - 단점 : Fine-tuning 방식의 최고 성능보다 나쁨. ○ task 별 데이터가 여전히(예제 개수로 설정된 K개 만큼) 필요하긴 함.

    3) One-shot
    - task 에 대한 지시문 외에 하나의 예제만 허용된다는 점을 제외하고는 Few-shot 과 동일
    - 단점 : 예제가 제공되지 않으면 task 의 내용이나 형태를 제대로 전달하는 것이 어려운 경우가 있음

    4) Zero-shot
    - task 에 대한 지시문만 주어짐.
    - 예제가 없다는 점을 제외하고는 one-shot 과 동일
    - 일부 task 에서는 사람이 task 를 수행하는 방법에 가장 가까움.
       ( 예) 우측 그림의 번역 예제에서 사람은 예제가 없어도, task 지시문만으로 무엇을 해야 하는지 알 수 있음.)
    - 장점 : 가장 간단하게 사용 가능, 모델의 일반화 성능 확인 가능
    - 단점 : 어떤 경우에는 예제 없이 task 의 내용이나 형식을 이해하는 것이 어려울 수도 있음

  • GPT-2, GPT-3 한계
    1) 여러 task 에서 공통적인 약점을 보임
    - 같은 단어가 반복되어 생성
    - 긴 문장을 생성하는 경우 일관성을 잃음
    - 여러 응답 간 모순이 발생
    - 특히 두 단어가 문장에서 동일한 의미로 사용되는지 또는 한 문장이 다른 단어를 암시하는지 여부를 결정하는 것과 같은 일부 "비교" 작업에서 성능 저하

    2) 모델 규모가 커질수록 성능은 향상되지만, 규모가 크기 때문에 추론을 수행하기에 비용이 많이 들고 불편함
    - 추론 비용의 증가로 실제 서비스 적용시엔 비용 효율적인 추론 기술 필요
    - 대형 모델은 대부분 특정 task에 필요하지 않은 매우 광범위한 task(일반화)를 포함하고 있으므로 원하는 task 에 대해서만 학습 어려움



 

'Study > 자연언어처리 NLP' 카테고리의 다른 글

BERT 이후의 모델  (0) 2025.01.17
Encoder-Decoder Model (BART)  (0) 2025.01.17
Encoder Model (BERT)  (0) 2025.01.17
자연어 처리 Task와 파이프라인  (2) 2025.01.15
자연언어처리 - BERT 이전 모델  (1) 2025.01.13