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