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 작업을 단 몇 줄 코드로 실행 가능.
- 주요 기능:
- Text Classification → 감정분석, 고객 피드백 분류
- NER (Named Entity Recognition) → 인물, 장소 등 개체 추출
- Question Answering (QA) → 주어진 컨텍스트에서 정답 추출
- Summarization → 긴 문서 요약
- Translation → 다국어 번역 (예: 영어 → 독일어)
- 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 학습 방식
- 사전 학습된 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를 기반으로 한 대규모 파인튜닝 모델.
✅ 핵심 정리
- Hugging Face = 복잡한 Transformer 활용을 쉽게 만들어주는 생태계.
- Pipeline API로 다양한 NLP 작업을 단 몇 줄로 처리 가능.
- Text Classification 실습에서 Dataset 탐색 → Tokenization → 모델 학습(Feature Extraction/Fine-tuning) 과정을 다룸.
- Fine-tuning > Feature Extraction (성능 면에서).
- GPT = Decoder 기반 생성 모델, Hugging Face Hub에서 바로 활용 가능.
📑 섹션 12 기반 시험 문제 (예시)
① 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”]와 같이 희귀 단어를 분리해 희귀성 문제를 완화한다.
① 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을 통해 다양한 다운스트림 태스크에 적용 가능하다.