1. Pretraining 개요

Pretraining(사전 훈련) 은 대량의 텍스트 데이터를 기반으로 모델이 언어 패턴을 학습하는 초기 단계입니다. 이 과정에서 모델은 특정 작업에 최적화되지 않은 일반적인 언어 이해 능력을 습득합니다. (GPT에서 P)
  • 사전 학습(Pretraining)은 대량의 텍스트 데이터에서 언어 모델을 훈련하는 과정
  • 이후 특정 태스크에 맞게 미세 조정(Fine-Tuning)하여 활용
  • 대표적인 사전 학습 모델: BERT, GPT, T5, RoBERTa, DistilBERT

2. Pretraining의 필요성

  • 대량의 데이터 활용 가능: 사람이 직접 레이블링하지 않아도 모델을 훈련 가능
  • 전이 학습(Transfer Learning) 적용: 적은 양의 데이터만으로도 높은 성능 달성 가능
  • 언어의 일반적 패턴 학습: 특정 태스크(Fine-Tuning) 전에 기본적인 언어 구조 이해

3. Pretraining 방식

사전 학습 모델은 크게 Language UnderstandingLanguage Generation 으로 나뉨.

1) Masked Language Model (MLM)

  • 일부 단어를 [MASK]로 가린 후 이를 예측하는 방식

  • BERT가 대표적인 모델

    from transformers import pipeline
    
    fill_mask = pipeline("fill-mask", model="bert-base-uncased")
    print(fill_mask("Hugging Face is a [MASK] platform."))
    

2) Causal Language Model (CLM)

  • 이전 단어들을 기반으로 다음 단어를 예측

  • GPT 시리즈가 대표적인 모델

    generator = pipeline("text-generation", model="gpt2")
    print(generator("Once upon a time", max_length=30))
    

3) Seq2Seq Pretraining

  • 입력과 출력이 있는 텍스트 변환 방식

  • T5, BART 등이 대표적

    translator = pipeline("translation_en_to_fr", model="t5-small")
    print(translator("Hello, how are you?"))
    

4. 주요 사전 학습 모델

모델 학습 방식 특징
BERT Masked Language Model (MLM) 문장 이해, 양방향 학습
GPT-2 Causal Language Model (CLM) 텍스트 생성에 특화
T5 Text-to-Text Model 모든 NLP 태스크를 텍스트 변환 방식으로 통합
RoBERTa MLM (BERT 변형) 더 많은 데이터를 활용하여 BERT 개선
DistilBERT 경량화된 BERT 연산량 감소, 속도 향상

5. Pretraining 데이터셋

  • 사전 학습 모델들은 대량의 공개 데이터셋을 활용하여 학습됨
  • 대표적인 데이터셋:
    • BooksCorpus: 11,000여 개의 책에서 추출한 텍스트 데이터
    • Wikipedia: 다양한 분야의 문서를 포함하는 백과사전 데이터
    • Common Crawl: 인터넷에서 수집한 대규모 텍스트 데이터
    • OpenWebText: Reddit에서 고품질 문서만 필터링한 데이터

6. Pretraining 구현 (Keras)

import tensorflow as tf
from transformers import TFAutoModelForMaskedLM, AutoTokenizer

model_name = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = TFAutoModelForMaskedLM.from_pretrained(model_name)

text = "Hugging Face is a [MASK] platform for NLP."
tokens = tokenizer(text, return_tensors="tf")

output = model(**tokens)
print(output.logits.shape)  # (batch_size, sequence_length, vocab_size)

7. Pretraining의 한계

  1. 막대한 계산량 필요 → TPU, GPU 등 고성능 연산 장비 요구
  2. 일반성 문제 → 특정 도메인에 대한 Fine-Tuning 필요
  3. 문맥 한계 → 긴 문맥을 처리하는 데 제약 있음

8. 결론

  • Pretraining은 NLP 모델 성능을 극대화하는 핵심 기술
  • 다양한 Pretrained 모델을 활용하여 특정 태스크에 Fine-Tuning 가능
  • BERT, GPT, T5 등 모델에 따라 다양한 Pretraining 방식 존재

실습 노트북

zerg96

Recent Posts

노트북(윈도우)에서 아이폰 유선 테더링 하기

윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…

3일 ago

오라클 래치(Latch)

오라클 데이터베이스의 성능을 논할 때, 내부적으로 발생하는 경합(Contention)은 피할 수 없는 주제다. 특히 다수의 프로세스가…

6일 ago

사장님도 3표, 나도 3표? ‘3%룰’ 완전 정복!

안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…

2주 ago

Vector Store(벡터 스토어)

'벡터 스토어' 완벽 가이드: AI 시대, 데이터의 새로운 심장을 만나다 IT 업계는 인공지능(AI)이라는 거대한 패러다임의…

3주 ago

Gemini CLI (재미나이 CLI)

1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…

3주 ago

과적합 (overfitting)

과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…

1개월 ago