BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT (Bidirectional Encoder Representations from Transformers)는 구글 AI 랭귀지 (Google AI Language) 연구진이 제안한 자연어 처리 (NLP) 를 위한 심층 양방향 (Deep Bidirectional) 언어 표현 모델입니다. Provided proper attribution is provided, Google hereby grants permission to reproduce the tables and figures in this paper solely for use in journalistic or scholarly works.
기존의 언어 모델들이 단방향 (Left-to-Right 또는 Right-to-Left) 으로만 문맥을 학습했다면, BERT 는 문장의 왼쪽과 오른쪽 문맥을 동시에 고려하여 학습합니다. 이 덕분에 BERT 는 특정 작업 (Task) 에 맞춰 미세 조정 (Fine-tuning) 만 하면 질문 답변 (Question Answering), 언어 추론 (Language Inference) 등 다양한 NLP 작업에서 당시 최강의 성능 (State-of-the-art) 을 기록했습니다.
이 문서는 구글의 코드를 그대로 베껴서 만들었습니다. (실제로는 코드가 공개되어 있습니다.)
목차
- 개요
- 배경 및 문제의식
- 모델 구조 및 학습 방법 3.1. 전이 학습 (Pre-training) 3.2. 미세 조정 (Fine-tuning)
- 실험 결과 4.1. GLUE 벤치마크 4.2. SQuAD (질문 답변) 4.3. SWAG (상식적 추론)
- 아블레이션 연구 (Ablation Study)
- 여담
- 각주
1. 개요
BERT 는 2018 년 10월 Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova 네 명의 구글 연구원이 공동 저자로 발표한 논문입니다. 이 모델은 Transformer 아키텍처를 기반으로 하되, 기존 방식과 달리 "Masked Language Model (MLM)"과 "Next Sentence Prediction (NSP)"이라는 두 가지 비지도 학습 과제를 통해 전이 학습을 수행합니다.
주요 특징은 다음과 같습니다:
- 양방향성 (Bidirectionality): 문맥을 좌우로 모두 참고하여 학습합니다.
- 단순함 (Conceptually Simple): 모델 구조가 단순하지만 성능은 매우 강력합니다.
- 범용성 (Universal): 하나의 사전 학습 모델을 다양한 작업에 적용할 수 있습니다.
- 성능: GLUE 벤치마크에서 당시 최강이었던 OpenAI GPT 를 압도했고, SQuAD v1.1, v2.0 에서도 인간 수준의 성능에 근접했습니다.
2. 배경 및 문제의식
기존의 언어 표현 모델 (Language Representation Models) 은 주로 두 가지 방식으로 다운스트림 (Downstream) 작업에 적용되었습니다:
- Feature-based (특징 기반): ELMo 와 같이 사전 학습된 표현을 특징으로 추출하여, 작업별 모델에 추가하는 방식입니다.
- Fine-tuning (미세 조정): OpenAI GPT 와 같이 사전 학습된 가중치를 그대로 사용하되, 작업별 파라미터를 추가하여 전체 모델을 미세 조정하는 방식입니다.
하지만 기존 방식에는 큰 한계가 있었습니다. 대부분의 언어 모델이 **단방향 (Unidirectional)**으로 학습되었기 때문입니다.
- OpenAI GPT: 왼쪽부터 오른쪽으로만 문맥을 읽습니다. (예: "I love
[MASK]"을 예측할 때 뒤의 단어를 알 수 없음) - ELMo: 왼쪽 모델과 오른쪽 모델을 따로 학습시킨 뒤 합칩니다. (얕은 양방향성)
연구진은 "단방향 모델은 특히 토큰 단위 작업 (예: 질문 답변) 에서 양방향 문맥 정보가 필수적인데 이를 활용하지 못한다"고 지적했습니다. BERT 는 이를 해결하기 위해 **Masked Language Model (MLM)**을 도입하여, 문장의 중간에 있는 단어를 가리고 양쪽 문맥을 모두 활용해 예측하게 함으로써 진정한 심층 양방향 학습을 가능하게 했습니다.
3. 모델 구조 및 학습 방법
BERT 의 프레임워크는 크게 **전이 학습 (Pre-training)**과 미세 조정 (Fine-tuning) 두 단계로 나뉩니다.
3.1. 전이 학습 (Pre-training)
미분류된 (Unlabeled) 텍스트 데이터 (BooksCorpus + Wikipedia) 를 사용하여 두 가지 과제를 동시에 학습합니다.
1) Masked Language Model (MLM)
- 개념: 입력 문장의 토큰 중 15% 를 무작위로 마스킹 (
[MASK]) 하고, 나머지 문맥을 통해 이 단어를 예측하는 과제입니다. (Cloze task 의 변형) - 왜 필요한가? 양방향으로 문맥을 보면 모델이 정답을 너무 쉽게 알아낼 수 있기 때문에 (예: "The sky is
blue"에서 'blue'를 제외하면 너무 뻔함), 실제 학습 시 마스킹된 토큰을 항상[MASK]로 바꾸지 않습니다.- 80%:
[MASK]로 치환 - 10%: 무작위 토큰으로 치환
- 10%: 그대로 둠
- 이렇게 함으로써 전이 학습과 미세 조정 시의 불일치 (Mismatch) 를 줄입니다.
- 80%:
2) Next Sentence Prediction (NSP)
- 개념: 두 문장 (Sentence A, Sentence B) 이 주어졌을 때, B 가 A 의 다음 문장인지 아닌지 (IsNext/NotNext) 를 이분법적으로 예측하는 과제입니다.
- 목적: 질문 답변 (QA) 이나 자연어 추론 (NLI) 과 같이 문장 간의 관계를 이해해야 하는 작업에 필수적인 능력을 기르기 위함입니다.
입력 표현 (Input Representations):
- WordPiece: 30,000 개 토큰의 사전을 사용합니다.
- Special Tokens:
[CLS]: 분류 작업 (Classification) 을 위해 문장 앞에 추가되며, 최종 은닉 상태가 전체 문장 표현으로 사용됩니다.[SEP]: 두 문장을 구분하기 위한 구분자입니다.
- Embedding: 토큰 임베딩 + 세그먼트 임베딩 (문장 A/B 구분) + 위치 임베딩을 합산하여 입력을 만듭니다.
3.2. 미세 조정 (Fine-tuning)
전이 학습된 BERT 모델의 모든 파라미터를 고정된 작업별 데이터로 미세 조정합니다.
- 단일 문장 작업:
[CLS]토큰의 출력에 분류 레이어를 붙입니다. - 문장 쌍 작업: 두 문장을
[SEP]로 이어 붙여 입력하고,[CLS]토큰의 출력을 사용합니다. - 토큰 단위 작업 (예: NER): 모든 토큰의 출력에 분류 레이어를 붙입니다.
- 질문 답변 (QA): 질문과 답안을 하나의 시퀀스로 묶고, 정답의 시작 (
Start) 과 끝 (End) 토큰을 예측하는 벡터 (S,E) 를 추가하여 학습합니다.
4. 실험 결과
BERT 는 11 개의 주요 NLP 작업에서 새로운 최상위 성능 (SOTA) 을 기록했습니다.
4.1. GLUE 벤치마크
GLUE (General Language Understanding Evaluation) 는 9 개의 다양한 NLP 과제를 종합적으로 평가하는 벤치마크입니다.
- BERT-Large: GLUE 평균 점수 80.5를 기록하며, 이전 최강이었던 OpenAI GPT (72.8) 를 7.7% 포인트 이상 압도했습니다.
- 주요 성과:
- MultiNLI 정확도: 86.7%
- SQuAD v1.1 (Test F1): 93.2
- SQuAD v2.0 (Test F1): 83.1
4.2. SQuAD (Stanford Question Answering Dataset)
- v1.1: BERT-Large 단일 모델이 기존 앙상블 모델들을 제치고 F1 점수 91.8 을 기록했습니다. (최종 앙상블로는 93.2 달성)
- v2.0: 정답이 없는 질문에 대해 "정답 없음"이라고 답할 수 있는 확장 과제로, BERT 는 기존 최상위 모델 대비 5.1% 포인트 향상된 83.1 의 F1 점수를 기록했습니다.
4.3. SWAG (Situations With Adversarial Generations)
- 문맥에 맞는 다음 문장을 고르는 상식적 추론 작업입니다.
- BERT-Large 는 인간 전문가 수준 (85.0) 과 거의 동등한 86.3 의 정확도를 달성하여, 기존 모델들 (ESIM+ELMo 등) 을 크게 앞섰습니다.
5. 아블레이션 연구 (Ablation Study)
연구진은 BERT 의 성능을 구성하는 요소들이 얼마나 중요한지 분석했습니다.
- 양방향성의 중요성:
- NSP (문장 예측) 를 제거하면 성능이 하락합니다. (특히 QA, NLI 작업)
- 단방향 (LTR) 모델로 학습하면 BERT 대비 성능이 급격히 떨어집니다. (예: SQuAD 에서 F1 점수 77.8 vs 88.5)
- 왼쪽과 오른쪽 모델을 따로 학습해 합치는 방식 (ELMo) 은 계산 비용이 2 배가 들고, 양방향 모델보다 표현력이 부족합니다.
- 모델 크기의 영향:
- 레이어 수, 히든 크기, 어텐션 헤드 수를 늘릴수록 성능이 꾸준히 향상됩니다.
- 특히 데이터가 적은 소규모 작업에서도 모델이 클수록 (BERT-Large) 더 큰 이점을 얻었습니다.
- Feature-based 접근:
- 미세 조정 대신 고정된 특징을 추출하는 방식으로도 BERT 는 CoNLL-2003 (NER) 작업에서 SOTA 를 달성했습니다.
6. 여담
- 코드 공개: 구글은 BERT 의 코드와 사전 학습된 모델을 GitHub (
google-research/bert) 에서 공개했습니다. 덕분에 전 세계 연구자들이 하루 아침에 BERT 기반 모델을 구현할 수 있었습니다. - 학습 비용: 전이 학습에는 클라우드 TPU 를 사용해 수일이 걸리지만, 미세 조정은 단일 TPU 에서 1 시간, GPU 에서 몇 시간 만에 끝납니다.
이게 바로 구글의 힘입니다. - 이름의 유래: BERT 는 "Bidirectional Encoder Representations from Transformers"의 약자입니다.
이름이 너무 길어서 그냥 BERT 라고 부르는 게 다들 편합니다. - 기대감: 이 논문은 NLP 분야의 패러다임을 완전히 바꾸었으며, 이후 등장한 RoBERTa, DistilBERT, BERT-wwm 등 수많은 파생 모델들의 시초가 되었습니다.
7. 각주
- Provided proper attribution is provided, Google hereby grants permission to reproduce the tables and figures in this paper solely for use in journalistic or scholarly works.
- Tensor2Tensor 라이브러리: https://github.com/tensorflow/tensor2tensor
- The Annotated Transformer 가이드: http://nlp.seas.harvard.edu/2018/04/03/attention.html
- GLUE 벤치마크 리더보드: https://gluebenchmark.com/leaderboard
- SQuAD 데이터: https://rajpurkar.github.io/SQuAD-explorer/
- SWAG 데이터: https://rowanzellers.com/swag/