| --- |
| 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에 공개한 라이선스를 따릅니다. |
|
|