섹션 12: Introducing Hugging Face Library

쌀과자AI·2025년 8월 26일

📚 섹션 12 요약: Hugging Face Library & Transformers


1. Hugging Face Library의 필요성과 역할

  • 문제 배경
    • 연구자들은 Transformer 기반 모델을 PyTorch, TensorFlow 등으로 구현 → 모델 구조/가중치 저장.
    • 실무자는 동일 모델을 쓰려면 아키텍처 재구현, 가중치 로드, 전처리, 커스텀 로스 함수/학습 알고리즘까지 모두 다시 구현해야 함.
    • 프레임워크 차이(MXNet ↔ TensorFlow 등) 때문에 가중치 호환성도 낮음.
  • Hugging Face의 등장
    • Transformers 라이브러리를 통해 표준화된 인터페이스 제공.
    • PyTorch, TensorFlow, JAX 등 주요 프레임워크 지원.
    • 사전 학습 모델 + Task-specific head 제공 → 쉽게 fine-tuning 가능.
    • 결과: NLP 프로젝트 개발 시간수개월 → 수주로 단축.
    • Hugging Face Hub = 모델(Model) + 데이터셋(Dataset) + 메트릭(Metrics) + 문서화 + 코드(Tokenizers, Transformers).

2. Hugging Face Pipeline

  • Pipeline API = 다양한 NLP 작업을 단 몇 줄 코드로 실행 가능.
  • 주요 기능:
    1. Text Classification → 감정분석, 고객 피드백 분류
    2. NER (Named Entity Recognition) → 인물, 장소 등 개체 추출
    3. Question Answering (QA) → 주어진 컨텍스트에서 정답 추출
    4. Summarization → 긴 문서 요약
    5. Translation → 다국어 번역 (예: 영어 → 독일어)
    6. Text Generation → 텍스트 이어쓰기, 챗봇 응답 생성
  • 동작 방식
    • pipeline() 초기화 시 → 모델과 토크나이저 자동 다운로드 + 캐싱
    • 입력: 문자열 또는 문자열 리스트
    • 출력: Python dict (예: {label: “positive”, score: 0.99})
    • Pandas DataFrame 변환 가능 → 분석 및 시각화 용이

3. Text Classification 실습 (Emotion Dataset)

  • 데이터셋: Emotion dataset (Tweet → 6가지 감정 라벨)
    • anger, disgust, fear, joy, sadness, surprise
  • 활용 사례: 고객 피드백 라우팅, 감정 분석, 지원 티켓 자동 분류
  • 데이터셋 탐색:
    • 총 16,000개 train 데이터 (validation/test 포함).
    • 불균형 존재 → joy, sadness 많음 / love, surprise 적음.
  • 전처리 & 분석:
    • 클래스 분포 확인 (imbalanced → oversampling/undersampling 필요).
    • 문장 길이 분포 분석 → 대부분 60 단어 이하.
    • Transformer context size(512)에 충분히 들어감 → truncation 위험 낮음.

4. Tokenization (토큰화)

  • 종류:
    • Character-level: 철자 단위 → 희귀 단어 처리 강점, 하지만 문맥·의미 손실 큼.
    • Word-level: 단어 단위 → 의미 구조 학습 가능, 하지만 희귀 단어 문제·어휘 폭발(vocab explosion).
    • Subword-level (WordPiece, BPE):
      • 자주 등장 단어는 그대로 유지, 희귀 단어는 분해.
      • 예: “masala” → [“mas”, “##ala”]
      • BERT/DistilBERT에서 기본 사용.
  • 실습:
    • AutoTokenizer.from_pretrained("distilbert-base-uncased")
    • 특수 토큰: [CLS], [SEP] 자동 추가.
    • 결과: input_ids, attention_mask 반환.
    • Vocab size = 30,522 / max length = 512.
  • 데이터셋 전체 토큰화:
    • map() 함수 이용 → 입력 텍스트 전체를 토큰화.
    • padding=True, truncation=True 적용.
    • input_ids, attention_mask 열이 추가됨.

5. Text Classification 학습 방식

(1) Feature Extraction Approach

  • 사전 학습된 DistilBERT 모델을 사용 → 은닉 상태(hidden states) 추출.
  • 이 벡터를 Logistic Regression 같은 ML 모델 입력으로 사용.
  • 장점: 빠르고 적은 리소스.
  • 단점: 성능 제한.
  • 예시 결과: Accuracy ≈ 63% (baseline dummy classifier: 35%).

(2) Fine-Tuning Approach

  • DistilBERT + Classification Head 추가.
  • 사전 학습 모델 전체를 몇 epoch (2~10)만 미세 조정.
  • Optimizer: Adam / Loss: SparseCategoricalCrossEntropy.
  • 결과: Accuracy ≈ 93%.
  • Fine-tuning이 feature extraction보다 훨씬 우수.

6. Generative AI 모델 (GPT) 개요

  • GPT = Transformer Decoder 기반 언어 모델.
  • Pre-training: 대규모 말뭉치에서 다음 단어 예측(next token prediction) 학습.
  • Fine-tuning: QA, 요약, 대화 등 특정 task 적응.
  • ChatGPT 같은 서비스 = GPT를 기반으로 한 대규모 파인튜닝 모델.

✅ 핵심 정리

  1. Hugging Face = 복잡한 Transformer 활용을 쉽게 만들어주는 생태계.
  2. Pipeline API로 다양한 NLP 작업을 단 몇 줄로 처리 가능.
  3. Text Classification 실습에서 Dataset 탐색 → Tokenization → 모델 학습(Feature Extraction/Fine-tuning) 과정을 다룸.
  4. Fine-tuning > Feature Extraction (성능 면에서).
  5. GPT = Decoder 기반 생성 모델, Hugging Face Hub에서 바로 활용 가능.

📑 섹션 12 기반 시험 문제 (예시)


문항 1) Hugging Face Transformers 라이브러리의 주요 장점으로 옳지 않은 것은? [3점] (난이도: 하)

① PyTorch, TensorFlow, JAX 등 다양한 프레임워크를 지원한다.

② 사전 학습된 모델을 쉽게 불러오고 task-specific head를 붙여 fine-tuning할 수 있다.

③ 모델마다 다른 토크나이저를 강제로 재구현해야 한다.

④ NLP 프로젝트 개발 시간을 크게 단축할 수 있다.

정답: ③

해설: Hugging Face의 AutoTokenizer는 모델과 맞는 토크나이저를 자동으로 로드해준다. 오히려 재구현을 피하기 위해 등장한 것이 Hugging Face의 강점이다.


문항 2) 다음 중 Hugging Face의

pipeline()

함수로 수행할 수 있는 NLP 태스크가 아닌 것은? [3점] (난이도: 하)

① Text Classification

② Named Entity Recognition

③ Image Segmentation

④ Summarization

⑤ Translation

정답: ③

해설: pipeline()은 주로 NLP 관련 태스크(Text Classification, NER, QA, Summarization, Translation, Text Generation 등)에 사용된다. Image Segmentation은 Computer Vision 태스크로 별도의 라이브러리가 필요하다.


문항 3) Subword Tokenization의 장점으로 가장 알맞은 설명을 고르시오. [3점] (난이도: 중)

① 희귀 단어 처리에는 유리하지만 문장의 의미를 잘 학습하지 못한다.

② 자주 등장하는 단어는 단어 단위로, 희귀 단어는 더 작은 단위로 분해하여 효율적 표현이 가능하다.

③ 각 철자를 모두 분리하여 문자 단위로 처리한다.

④ 사전에 없는 단어를 모두 로 대체하여 희귀 단어 문제를 해결한다.

정답: ②

해설: Subword Tokenization(WordPiece, BPE)은 Word-level과 Character-level의 장점을 결합한 방식이다. “masala” → [“mas”, “##ala”]와 같이 희귀 단어를 분리해 희귀성 문제를 완화한다.


문항 4) 다음 중 Feature Extraction Approach와 Fine-tuning Approach의 차이에 대한 설명으로 옳은 것은? [4점] (난이도: 중)

① Feature Extraction은 모델 파라미터를 모두 학습시켜 더 높은 성능을 얻을 수 있다.

② Fine-tuning은 사전 학습 모델을 그대로 사용하고 ML 분류기를 따로 학습시킨다.

③ Feature Extraction은 사전 학습 모델의 파라미터를 고정하고 추출된 벡터를 이용해 ML 모델을 학습한다.

④ Fine-tuning은 항상 Feature Extraction보다 빠르고 적은 리소스를 사용한다.

정답: ③

해설: Feature Extraction은 사전 학습된 모델을 freeze하고 feature만 추출하여 Logistic Regression 등 ML 모델로 학습한다. Fine-tuning은 전체 모델 파라미터를 조정하여 성능은 더 높지만 리소스가 더 많이 든다.


문항 5) Hugging Face의 Tokenizer를 사용할 때 주의해야 할 점으로 가장 적절한 것은? [4점] (난이도: 상)

① 어떤 모델을 쓰든 동일한 토크나이저를 쓰면 된다.

② 토큰화된 입력은 항상 길이가 같아야 하므로 padding 또는 truncation 처리가 필요하다.

③ 모델 학습 시 input_ids만 입력하면 충분하다.

④ Vocab size는 항상 10,000 이하로 제한된다.

정답: ②

해설: Transformer 모델은 batch 단위 입력의 길이가 동일해야 하므로 padding(짧은 문장은 0 채움)과 truncation(512 토큰 초과 시 잘라냄)이 필수적이다. input_ids와 attention_mask가 함께 모델에 전달된다.


문항 6) GPT 모델에 대한 설명으로 옳은 것을 모두 고르시오. [4점] (난이도: 상)

ㄱ. Transformer Encoder 기반 구조를 사용한다.

ㄴ. 사전 학습 시 다음 단어 예측(Next Token Prediction)으로 학습된다.

ㄷ. 여러 Decoder 층을 쌓아 구성된다.

ㄹ. Fine-tuning을 통해 QA, Summarization 등 다양한 태스크에 활용할 수 있다.

① ㄱ, ㄴ

② ㄴ, ㄷ

③ ㄴ, ㄹ

④ ㄴ, ㄷ, ㄹ

⑤ ㄱ, ㄷ, ㄹ

정답: ④

해설: GPT는 Transformer Decoder 기반 모델이다. Pre-training은 다음 단어 예측 방식으로 수행된다. Fine-tuning을 통해 다양한 다운스트림 태스크에 적용 가능하다.


profile
AI에 관심이 많은 23살 대학생입니다.

0개의 댓글