BERT / README.md
JangTaeng's picture
Upload 7 files
05c8e16 verified
---
title: BERT 데모 - 사전학습 & 파인튜닝 태스크
emoji: 🤖
colorFrom: blue
colorTo: indigo
sdk: gradio
sdk_version: 4.44.0
python_version: "3.11"
app_file: app.py
pinned: false
license: apache-2.0
tags:
- bert
- nlp
- transformers
- masked-language-modeling
- question-answering
- text-classification
- named-entity-recognition
short_description: BERT 논문의 사전학습과 파인튜닝 태스크 실습 데모
---
# BERT — 사전학습된 양방향 트랜스포머 인터랙티브 데모
이 Space는 **Devlin et al. (2019), *BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding*** ([arXiv:1810.04805](https://arxiv.org/abs/1810.04805)) 논문에서 소개한 태스크들을 직접 체험해보는 데모입니다.
논문의 두 가지 **사전학습 목적함수(Section 3.1)** 와 네 가지 **파인튜닝 태스크 카테고리(Figure 4)** 를 모두 다룹니다.
---
## 데모에서 직접 해볼 수 있는 것
### 🎭 사전학습 태스크 (논문 §3.1)
| 탭 | 태스크 | 보여주는 것 |
|---|---|---|
| **Masked LM** | `[MASK]` 토큰 예측 | 핵심 MLM 목적함수 — 15%의 토큰을 가리고 양방향 문맥으로부터 예측 |
| **Next Sentence Prediction** | `IsNext` / `NotNext` | 문장 B가 실제로 문장 A 다음에 오는지 이진 분류 |
### 🎯 파인튜닝 태스크 (논문 §4)
| 탭 | 논문 태스크 | 사용 모델 | Figure 4 위치 |
|---|---|---|---|
| **문장 쌍 분류** | MNLI / RTE / MRPC | `textattack/bert-base-uncased-MNLI` | (a) |
| **단일 문장 분류** | SST-2 감성 분석 | `textattack/bert-base-uncased-SST-2` | (b) |
| **질의응답** | SQuAD v1.1 | `bert-large-uncased-whole-word-masking-finetuned-squad` | (c) |
| **개체명 인식** | CoNLL-2003 NER | `dslim/bert-base-NER` | (d) |
> 💡 사용된 사전학습 모델은 모두 **영어 BERT**입니다(원 논문이 영어 코퍼스로 사전학습됨). 한국어로 같은 실험을 하고 싶다면 `klue/bert-base`나 `kykim/bert-kor-base` 같은 한국어 BERT 체크포인트로 교체하시면 됩니다.
---
## 저장소 구조
```
.
├── README.md # 이 파일 (Hugging Face Space 카드)
├── app.py # Gradio 데모 (위 6개 태스크 모두 포함)
├── requirements.txt # Python 의존성
├── train_glue.py # GLUE 태스크 파인튜닝 스크립트 (논문 §4.1)
├── train_squad.py # SQuAD v1.1 파인튜닝 스크립트 (논문 §4.2)
└── inference_examples.py # 최소 추론 예제 스니펫
```
---
## 빠른 시작 (로컬 실행)
```bash
git clone https://huggingface.co/spaces/<your-username>/bert-demo-ko
cd bert-demo-ko
pip install -r requirements.txt
python app.py
```
Gradio 앱이 `http://127.0.0.1:7860`에서 실행됩니다.
## 논문 파인튜닝 재현하기
학습 스크립트의 하이퍼파라미터는 논문 **Appendix A.3**을 따릅니다:
> *"Batch size: 16, 32 — Learning rate (Adam): 5e-5, 3e-5, 2e-5 — Number of epochs: 2, 3, 4."*
`bert-base-uncased`를 SST-2에 파인튜닝하는 예:
```bash
python train_glue.py \
--task_name sst2 \
--model_name_or_path bert-base-uncased \
--learning_rate 2e-5 \
--num_train_epochs 3 \
--per_device_train_batch_size 32
```
SQuAD v1.1 파인튜닝 예:
```bash
python train_squad.py \
--model_name_or_path bert-base-uncased \
--learning_rate 5e-5 \
--num_train_epochs 3 \
--per_device_train_batch_size 32
```
---
## 인용
```bibtex
@inproceedings{devlin-etal-2019-bert,
title = "{BERT}: Pre-training of Deep Bidirectional Transformers for Language Understanding",
author = "Devlin, Jacob and Chang, Ming-Wei and Lee, Kenton and Toutanova, Kristina",
booktitle = "Proceedings of NAACL-HLT",
year = "2019",
pages = "4171--4186",
url = "https://aclanthology.org/N19-1423/"
}
```
## 라이선스
Apache 2.0. 이 Space에서 로드하는 사전학습 체크포인트들은 각 원저자가 Hugging Face Hub에 공개한 라이선스를 따릅니다.