위클리페이퍼(11) BERT, GPT, Hugging Face Transformers

윤승호·2025년 6월 29일

◆ Q & A 요약

Q1. BERT와 GPT의 주요 차이점은 무엇인가요? 각각의 기본 구조와 작동 방식, 적합한 NLP 응용 분야를 위주로 설명해주세요.
A1. BERT는 트랜스포머 인코더의 쌓은 구조다. 마스크 토큰을 기반으로 양방향 자기지도 학습을 하여 문맥 관계 이해에 뛰어나다. 분류, 인식, 질의응답에 주로 쓰인다. GPT는 트랜스포머 디코더를 쌓은 구조다. 마스크 셀프 어텐션을 기반으로 단방향 자기회귀 학습을 하여 순차적인 텍스트 생성에 뛰어나다. 콘텐츠 생성, 챗봇, 텍스트 요약에 주로 쓰인다.

Q2. Hugging Face Transformers 라이브러리는 무엇이며, 어떤 기능을 제공하나요?
A2. 사전 학습된 모델, 데이터셋 등을 공유하는 플랫폼으로, NLP 작업을 코드 몇 줄로 실행할 수 있게 해주는 모듈을 제공한다. 대표 모듈로는 AutoTokenizer가 있다.

Q3. BERT와 GPT 이후 등장한 주요 사전학습 모델에는 어떤 것들이 있으며, 특징은 무엇인가요? 구글링 등을 통해 자유롭게 리서치해서 정리해보세요.
A3. 대표적으로는 T5가 있다. 모든 NLP 테스크를 텍스트로 입출력을 처리해 유연성과 확장성이 좋다. 그 외에도 RoBERTa(BERT 업그레이드 버전), ALBERT(BERT 경량화 버전), ELECTRA(GAN 구조를 적용한 버전) 등이 있다.


1. BERT와 GPT의 주요 차이점은 무엇인가요? 각각의 기본 구조와 작동 방식, 적합한 NLP 응용 분야를 위주로 설명해주세요.

(1) BERT

Bidirectional Encoder Representations from Transformers

항목상세 설명
구조트랜스포머 인코더 (Transformer Encoder)
방향성양방향 (Bidirectional)
핵심 학습MLM (Masked Language Model), NSP (Next Sentence Prediction)
주요 강점문맥 이해 (Context Understanding)

A. 아키텍처: 양방향 인코더 (Bidirectional Encoder)

  • 트랜스포머의 인코더 블록을 여러 층으로 쌓은 구조임.
  • 핵심 특징은 양방향성(Bidirectionality)으로, 문장 내 특정 단어의 의미를 파악하기 위해 해당 단어의 왼쪽과 오른쪽 모든 단어의 문맥을 동시에 고려함.
  • 문장 전체를 한 번에 조망하며 깊은 문맥적 관계를 학습하므로, 의미를 '이해'하는 과제에 매우 강력한 성능을 보임.

B. 학습 방식: 자기 지도 학습 (Self-Supervised Learning)

  • MLM (Masked Language Model): 문장의 약 15% 단어를 [MASK] 토큰으로 무작위로 가린 후, 주변 문맥을 이용해 원래 단어가 무엇이었는지 맞추는 훈련을 함. 이를 통해 단어의 문맥적 의미를 학습함.
  • NSP (Next Sentence Prediction): 두 개의 문장을 주고, 두 번째 문장이 실제로 첫 번째 문장 바로 다음에 이어지는 문장인지 여부를 맞추는 이진 분류 훈련을 함. 문장 간의 논리적 관계를 학습하는 것을 목표로 함.

C. 주요 활용 분야

  • 문서 분류 (Document Classification): 뉴스 기사 카테고리 분류, 스팸 메일 필터링 등 텍스트의 주제를 파악하는 작업.
  • 개체명 인식 (Named Entity Recognition): 문장에서 인명, 지명, 기관명 등 고유한 개체를 식별하는 작업.
  • 질의응답 (Question Answering): 주어진 지문(context)을 이해하고, 관련된 질문에 대한 답을 지문 내에서 찾아내는 작업.

(코드예시)

# [BERT] 'fill-mask' 파이프라인으로 문맥에 맞는 단어 추론
from transformers import pipeline

fill_masker = pipeline('fill-mask', model='bert-base-large-uncased')
# BERT는 문장 전체의 의미를 파악하여 'paris'가 가장 적합함을 앎
result = fill_masker("The capital of France, a city known for its art and culture, is [MASK].")
print(result[0]['token_str'])

(2) GPT

Generative Pre-trained Transformer

항목상세 설명
구조트랜스포머 디코더 (Transformer Decoder)
방향성단방향 (Unidirectional / Autoregressive)
핵심 학습다음 단어 예측 (Next Token Prediction)
주요 강점텍스트 생성 (Text Generation)

A. 아키텍처: 자기회귀 디코더 (Autoregressive Decoder)

  • 트랜스포머의 디코더 블록을 여러 층으로 쌓은 구조임.
  • 자기회귀(Autoregressive) 방식, 즉 단방향성을 가짐. 이는 '마스크된 셀프 어텐션'을 통해 구현됨.
  • 특정 위치의 단어는 오직 자신보다 왼쪽에 있는(이전에 등장한) 단어들의 정보만 참고할 수 있어, 순차적인 텍스트 '생성'에 최적화된 구조임.

B. 학습 방식: 다음 단어 예측 (Next Token Prediction)

  • 오직 하나의 명확한 목표를 가짐: 주어진 텍스트 시퀀스를 바탕으로, 바로 다음에 올 확률이 가장 높은 단어를 예측하는 것임.
  • 이 과정을 수많은 텍스트 데이터에 대해 반복하며, 문법적으로 자연스럽고 논리적으로 일관된 문장을 만드는 능력을 학습함.

C. 주요 활용 분야

  • 콘텐츠 생성 (Content Generation): 기사, 소설, 시, 이메일 초안 등 다양한 종류의 글을 창작하는 작업.
  • 대화형 AI (Conversational AI): 사용자의 말에 이어 자연스러운 답변을 생성하는 챗봇 또는 가상 비서.
  • 텍스트 요약 (Text Summarization): 긴 글의 핵심 내용을 담은 짧은 요약문을 생성하는 작업.

(코드예시)

# [GPT] 'text-generation' 파이프라인으로 다음 문장 생성
from transformers import pipeline

generator = pipeline('text-generation', model='gpt2-large')
# GPT는 주어진 문맥을 바탕으로 가장 자연스럽게 이어질 이야기를 창작함
result = generator("In a shocking finding, scientist discovered a new species of deep-sea fish that can", max_length=50)
print(result[0]['generated_text'])

2. Hugging Face Transformers 라이브러리는 무엇이며, 어떤 기능을 제공하나요?

기능설명
파이프라인특정 NLP 작업을 위한 고수준 추상화 API
AutoClass모델 이름만으로 관련 컴포넌트 자동 로딩
모델 허브모델, 데이터셋, 데모를 공유하는 중앙 플랫폼
상호 운용성PyTorch, TensorFlow, JAX 프레임워크 완벽 지원

(1) 핵심 기능과 역할

A. 역할: NLP 개발 생태계의 허브

  • 단순한 라이브러리를 넘어, 사전 학습된 모델, 데이터셋, 학습 및 평가 도구를 공유하는 거대한 커뮤니티이자 플랫폼임.
  • 최신 NLP 연구 결과를 누구나 쉽게 접근하고 활용할 수 있도록 하여 기술의 민주화에 크게 기여함.

B. 주요 기능

  • 파이프라인 (Pipelines): text-generation, sentiment-analysis, summarization 등 특정 NLP 작업을 단 몇 줄의 코드로 즉시 실행할 수 있게 해주는 고수준 API.
  • AutoClasses (AutoTokenizer, AutoModel 등): 사용하려는 모델의 이름만 지정하면, 해당 모델에 맞는 토크나이저와 아키텍처를 자동으로 로딩해주는 클래스. 모델 교체 및 실험 과정을 매우 편리하게 만들어 줌.
  • 모델 허브 (Model Hub): 구글, 메타 등 기업과 전 세계 연구자들이 공개한 수십만 개의 사전 학습 모델, 데이터셋, 데모(Spaces)가 공유되는 공간.

(코드예시)

# AutoClass를 이용해 특정 과제용 모델(BERT)과 토크나이저를 손쉽게 로딩
from transformers import AutoTokenizer, AutoModel

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

print(f"'{model_name}' 모델과 토크나이저 로딩 완료!")

3. BERT와 GPT 이후 등장한 주요 사전학습 모델에는 어떤 것들이 있으며, 특징은 무엇인가요? 구글링 등을 통해 자유롭게 리서치해서 정리해보세요.

(1) T5

Text-to-Text Transfer Transformer

항목상세 설명
컨셉모든 과제를 Text-to-Text로 통일
작동방식과제별 접두사(Prefix) 사용
강점범용성, 유연성
  • 모든 NLP 과제를 '텍스트 입력 → 텍스트 출력' 이라는 단일한 프레임워크로 통일한 혁신적인 모델.
  • "translate English to German: ..."이나 "summarize: ..."처럼 과제에 맞는 '접두사(prefix)'를 입력 텍스트에 붙여, 모델이 해당 과제를 인지하고 수행하도록 함.
  • 하나의 모델로 매우 다양한 작업을 수행할 수 있어 유연성과 확장성이 뛰어남.

(코드예시)

# [T5] 'translate English to German:' 접두사를 이용한 번역 작업
from transformers import T5Tokenizer, T5ForConditionalGeneration

tokenizer = T5Tokenizer.from_pretrained("t5-base", legacy=False)
model = T5ForConditionalGeneration.from_pretrained("t5-base")

input_text = "translate English to German: Hugging Face is a community-based open-source platform for machine learning."
input_ids = tokenizer(input_text, return_tensors="pt").input_ids
outputs = model.generate(input_ids)

print(tokenizer.decode(outputs[0], skip_special_tokens=True))

(2) 그 외

모델핵심 특징 및 컨셉
RoBERTaBERT의 학습법을 최적화한 성능 강화 버전
ALBERT파라미터 공유 기술을 적용한 경량화 버전
ELECTRA생성기-판별기 구조를 이용한 학습 효율화 버전

A. RoBERTa

  • A Robustly Optimized BERT Pretraining Approach
  • BERT의 학습 방식을 대폭 개선한 모델. NSP 학습을 제거하고, 훨씬 더 많은 데이터와 큰 배치 사이즈로 훈련하며, 동적 마스킹을 도입하여 전반적인 성능을 크게 향상시킴.

B. ALBERT

  • A Lite BERT for Self-supervised Learning
  • BERT의 경량화 버전. 레이어 간 파라미터 공유 및 임베딩 행렬 인수분해 등의 기법을 통해 모델 파라미터 수를 획기적으로 줄여, 더 적은 메모리와 빠른 속도로 BERT와 유사한 성능을 내도록 설계됨.

C. ELECTRA

  • Efficiently Learning an Encoder that Classifies Token Replacements Accurately
  • 학습 효율을 극대화한 모델. 작은 생성기(Generator)가 일부 단어를 그럴듯한 가짜 단어로 바꾸면, 큰 판별기(Discriminator)가 모든 단어에 대해 진짜인지 가짜인지 구별하는 'Replaced Token Detection' 방식으로 학습함. MLM보다 훨씬 효율적인 학습이 가능함.


◆ 해설

1. BERT와 GPT의 주요 차이점은 무엇인가요? 각각의 기본 구조와 작동 방식, 적합한 NLP 응용 분야를 위주로 설명해주세요.

BERT와 GPT는 모두 Transformer 구조를 기반으로 한 사전학습(pre-trained) 언어 모델이지만, 구조와 작동 방식, 그리고 주로 사용되는 NLP 응용 분야에서 몇 가지 중요한 차이점이 있습니다.

[구조와 작동 방식]

BERT는 Transformer의 인코더(Encoder)만 사용하는 구조입니다. 입력 문장을 양방향으로 동시에 바라보며 문맥을 이해하는 양방향(Bidirectional) 구조가 특징입니다. 이 모델은 문장 내에서 일부 단어를 가린 뒤(Masked Language Modeling), 그 가려진 단어를 예측하는 방식으로 사전학습이 진행됩니다. 또한 두 문장이 연결되는지를 예측하는 Next Sentence Prediction(NSP) 작업도 함께 수행합니다.

반면 GPT는 Transformer의 디코더(Decoder)만 사용하는 구조로 구성되어 있습니다. GPT는 한 방향, 즉 왼쪽에서 오른쪽으로 순차적으로 단어를 예측하는 단방향(Unidirectional) 구조입니다. 이 모델은 다음에 올 단어를 예측하는 언어 모델링 방식(Autoregressive Language Modeling)으로 사전학습되며, 입력 문장의 앞부분만을 활용해 다음 단어를 생성합니다.

[적합한 NLP 응용 분야]

BERT는 언어 이해(understanding) 중심의 작업에 적합합니다. 예를 들어 문서 분류, 문장 유사도 판단, 개체명 인식, 질의응답처럼 문장을 해석하거나 의미를 파악해야 하는 작업에서 좋은 성능을 보입니다.

반면 GPT는 언어 생성(generation) 중심의 작업에 강합니다. 예를 들어 텍스트 자동 완성, 대화형 응답 생성, 요약, 창작형 글쓰기, 코드 생성 등 문장을 창의적으로 생성하는 작업에 잘 활용됩니다.

[정리]

BERT는 인코더 기반으로 '문장을 이해'하는 데 최적화된 모델이고, GPT는 디코더 기반으로 '문장을 생성'하는 데 강점을 가진 모델이라고 볼 수 있습니다.


2. Hugging Face Transformers 라이브러리는 무엇이며, 어떤 기능을 제공하나요?

Hugging Face Transformers 라이브러리는 사전학습된 자연어처리 모델을 손쉽게 불러오고 사용할 수 있도록 도와주는 오픈소스 라이브러리입니다. PyTorch와 TensorFlow를 모두 지원하며, NLP 작업에 필요한 대부분의 모델과 도구를 통합적으로 제공합니다.

이 라이브러리의 가장 큰 장점은, BERT, GPT, RoBERTa, T5, DistilBERT 같은 유명한 사전학습 모델들을 몇 줄의 코드만으로 불러와서 바로 사용할 수 있다는 점입니다. 복잡한 모델 구조를 처음부터 구현하지 않아도 되기 때문에, 모델 실험과 응용을 빠르게 진행할 수 있습니다.

Hugging Face Transformers는 다음과 같은 기능들을 제공합니다.

첫째, 사전학습된 모델 로딩 및 추론 기능입니다. AutoTokenizer와 AutoModel, 또는 pipeline 기능을 활용해 토크나이징부터 추론까지 쉽게 처리할 수 있습니다.

둘째, 다양한 NLP 작업에 대한 통합 지원입니다. 문서 분류, 감성 분석, 개체명 인식, 질문 응답, 텍스트 요약, 번역, 텍스트 생성 등 주요 자연어처리 작업에 대해 일관된 인터페이스로 모델을 적용할 수 있습니다.

셋째, 사용자 정의 데이터셋과의 통합 및 파인튜닝 기능입니다. Trainer 클래스를 활용하면 사용자 데이터에 맞춰 사전학습된 모델을 미세조정(Fine-Tuning)할 수 있고, 데이터셋 준비부터 학습, 평가, 저장까지의 과정도 간편하게 구성할 수 있습니다.

또한, Hugging Face의 datasets 라이브러리와도 잘 통합되어 있어, 공개 데이터셋을 빠르게 로딩하고 처리할 수 있으며, model hub를 통해 전 세계 사용자가 업로드한 수천 개의 사전학습 모델을 검색하고 활용할 수 있습니다.

결론적으로, Hugging Face Transformers는 자연어처리 실무에서 생산성과 접근성을 획기적으로 높여주는 필수 도구라고 할 수 있습니다.


3. BERT와 GPT 이후 등장한 주요 사전학습 모델에는 어떤 것들이 있으며, 특징은 무엇인가요? 구글링 등을 통해 자유롭게 리서치해서 정리해보세요.

RoBERTa (Robustly Optimized BERT Approach)**

  • RoBERTa는 BERT를 기반으로 하되, 학습 방법을 개선해 성능을 끌어올린 모델.
  • BERT보다 더 많은 데이터와 긴 학습 시간으로 훈련됨.
  • NSP(Next Sentence Prediction) 태스크를 제거하고, 순수한 Masked Language Modeling만 사용.
  • 큰 배치 사이즈와 학습률다양한 시퀀스 길이 사용.
  • BERT와 구조는 동일하지만, 더 정교한 학습 설정으로 대부분의 NLP 태스크에서 성능 향상.

GPT-2 / GPT-3**

  • GPT 시리즈는 OpenAI에서 발표한 초거대 언어 생성 모델.
  • GPT-2는 1.5B 파라미터, GPT-3는 175B 파라미터 규모.
  • 사전학습만으로도 few-shot / zero-shot 학습이 가능하다는 점을 보여줌.
  • 단일 모델로 다양한 언어 생성 작업을 수행할 수 있어 범용성이 매우 높음.
  • GPT-3는 API 형태로 제공되며, 텍스트 생성, 문서 작성, 요약, 대화 시스템 등에서 활용.
profile
나는 AI 엔지니어가 된다.

0개의 댓글