Devlin et al. · Google AI Language · NAACL 2019 · arXiv:1810.04805

BERT Bidirectional Encoder Representations from Transformers

한 줄 요약: Transformer Encoder를 양방향으로 사전학습하면, 적은 파인튜닝만으로 거의 모든 NLP 태스크에서 최고 성능을 낸다.

왜 사전학습이 강력한가

언어 이해를 위한 모델을 태스크별로 처음부터 학습하는 것은 비효율적이다. 감성 분석을 하든 질의응답을 하든, 공통적으로 필요한 것은 "언어 자체를 이해하는 능력"이다. BERT의 핵심 통찰은 이 공통 능력을 대규모 비지도 학습으로 먼저 획득하고, 이후 각 태스크에 맞게 소량의 레이블 데이터로 파인튜닝한다는 것이다.

BERT는 BooksCorpus(800M 단어)와 Wikipedia(2.5B 단어)로 사전학습했다. 이 모든 텍스트는 레이블이 없어도 된다 — 자기 자신의 내용이 학습 신호가 된다.

단방향 vs 양방향

GPT — 단방향 (Left-to-Right) The cat [?] on mat 앞만 본다 → 오른쪽 "on mat" 무시 BERT — 양방향 (Bidirectional) The cat [MASK] on mat 양쪽 모두 참조 → "sat"으로 예측 → "sat"
왜 단방향이 NLU에 불충분한가?
GPT 같은 단방향 모델은 "The cat sat on the ___"처럼 왼쪽 문맥만 보고 다음 단어를 예측하는 데 탁월하다. 하지만 "The animal didn't cross the street because it was too tired"에서 it이 animal인지 street인지 판별하려면 오른쪽 문맥("was too tired")도 함께 봐야 한다. 이해(Understanding)에는 양방향 컨텍스트가 필수다.

두 가지 사전학습 태스크

1. Masked Language Model (MLM)

입력 토큰의 15%를 랜덤으로 선택해 마스킹한 후, BERT가 마스킹된 원래 토큰을 맞추도록 학습한다. 선택된 15% 중에서:

이 세 가지 전략을 섞는 이유: 파인튜닝 시에는 [MASK]가 등장하지 않기 때문에 항상 [MASK]로만 학습하면 사전학습-파인튜닝 불일치가 발생한다.

2. Next Sentence Prediction (NSP)

두 문장 A, B를 이어 붙여 BERT에 입력하고, B가 A 다음에 실제로 오는 문장인지(IsNext) 아닌지(NotNext)를 [CLS] 토큰으로 분류한다. 50%는 실제 연속 문장, 50%는 랜덤하게 뽑힌 문장을 사용. 이를 통해 질의응답, 자연어 추론 같은 문장 간 관계 이해 능력을 획득한다.

참고: 이후 연구인 RoBERTa(2019)에서 NSP가 실제로는 별 도움이 안 된다는 것이 밝혀졌고, 이를 제거해도 성능이 오른다는 것이 증명됐다.

Masked Language Model — 직접 해보기

토큰을 클릭해서 마스킹하면 BERT가 예측하는 결과를 확인할 수 있어요.

토큰을 클릭해서 마스킹해보세요.

입력 표현

BERT의 입력 임베딩은 세 가지 임베딩의 합으로 구성된다. 각각은 별도의 임베딩 테이블에서 가져와서 요소별로 더한다.

3가지 임베딩의 합 [CLS] Token A Token B [SEP] Token C Token D [SEP] Token Emb A Emb A Token Emb B Emb B Token Pos 0 Pos 1 Pos 2 Pos 3 Pos 4 Pos 5 Pos 6 ← Segment A (문장 1) → ← Segment B (문장 2) →
세 임베딩의 역할:

파인튜닝 방법 (태스크별)

사전학습된 BERT에 태스크별로 얇은 출력 레이어 하나만 추가하고, 전체 모델을 소량의 레이블 데이터로 파인튜닝한다. 대부분의 태스크에서 학습 시간은 수 시간 이내다.

BERT 12 layers [CLS]→분류 감성분석/NLI BERT 12 layers 각 토큰→라벨 NER/POS BERT 12 layers Start/End 위치 SQuAD QA BERT 12 layers [CLS]→IsNext 문장 관계
각 태스크의 파인튜닝 방식:

BERT-base vs BERT-large

BERT-base

  • 레이어: 12개
  • 히든 크기: 768
  • Attention 헤드: 12개
  • 파라미터: 110M
  • 학습: 16 TPU 4일

BERT-large

  • 레이어: 24개
  • 히든 크기: 1024
  • Attention 헤드: 16개
  • 파라미터: 340M
  • 학습: 64 TPU 4일
BERT 이후 NLP는 "사전학습 + 파인튜닝" 패러다임으로 완전히 전환. 11개 NLP 벤치마크에서 동시에 SOTA를 달성해 AI 커뮤니티에 충격을 줬다. RoBERTa(더 많은 데이터 + NSP 제거), ALBERT(파라미터 공유로 경량화), DistilBERT(지식 증류로 60% 소형화)가 뒤를 잇는다.