Back to Blog
BERTMLMNSPEncoderNLU

0x03. BERT - 양방향으로 읽는 AI

Transformer Encoder를 활용해 양방향 문맥을 이해하는 BERT의 구조와 학습 방법을 정리한다.

사람은 문장을 읽을 때 앞뒤 맥락을 동시에 파악한다. "나는 ___ 에서 커피를 마셨다"라는 문장이 있으면, 빈칸 앞의 "나는"과 뒤의 "커피를 마셨다"를 함께 보고 "카페"라는 단어를 자연스럽게 떠올린다. 그런데 기존의 언어 모델은 이렇게 하지 못했다. 왼쪽에서 오른쪽으로, 혹은 오른쪽에서 왼쪽으로 한 방향으로만 텍스트를 읽었기 때문이다.

BERT는 이 한계를 정면으로 돌파한 모델이다. 양방향으로 동시에 문맥을 이해하는 방법을 제시하며, 자연어 이해(NLU) 분야의 판도를 바꿔놓았다.


BERT란?

BERT는 Bidirectional Encoder Representations from Transformers의 약자다. 이름에 핵심이 모두 담겨 있다.

  • Bidirectional: 양방향으로 문맥을 읽는다
  • Encoder: Transformer의 Encoder 부분만 사용한다
  • Representations: 텍스트의 의미를 벡터로 표현한다

한 마디로 정리하면, Transformer의 Encoder를 쌓아올려 텍스트의 양방향 문맥을 학습하는 사전 훈련 언어 모델이다. Google AI가 2018년에 발표했으며, 발표 당시 11개의 NLP 태스크에서 동시에 최고 성능을 기록하며 큰 반향을 일으켰다.


왜 양방향이 중요한가?

이전 모델들의 한계를 이해하면 BERT의 가치가 더 명확해진다.

단방향 모델의 한계

GPT 같은 모델은 왼쪽에서 오른쪽으로만 텍스트를 읽는다. "나는 은행에 갔다"라는 문장에서 "은행"이라는 단어를 처리할 때, 왼쪽의 "나는"만 참고할 수 있고 오른쪽의 "갔다"는 보지 못한다.

ELMo는 양방향을 시도했지만, 왼쪽에서 오른쪽 모델과 오른쪽에서 왼쪽 모델을 따로 학습한 뒤 결합하는 방식이었다. 진정한 의미의 양방향은 아니었던 셈이다.

BERT의 접근

BERT는 한 단어를 처리할 때 그 앞과 뒤의 모든 단어를 동시에 참고한다. "나는 [은행]에 갔다"에서 "은행"을 이해할 때 "나는"과 "에 갔다"를 모두 본다. 이것이 진정한 양방향 문맥 이해(Bidirectional Context Understanding) 다.

이 차이는 실제 성능에서 극적으로 드러난다. 예를 들어 "그는 은행에서 낚시를 했다"에서 "은행"은 금융기관이 아니라 강가를 의미한다. 뒤의 "낚시"라는 단어를 함께 봐야 이 구분이 가능하다. 단방향 모델로는 이런 맥락 파악이 어렵다.


BERT의 아키텍처

BERT의 구조는 의외로 단순하다. Transformer의 Encoder 블록을 여러 층으로 쌓은 것이 전부다.

Encoder Only 구조

Transformer 원래 논문은 Encoder-Decoder 구조를 제안했다. 이 중에서 BERT는 Encoder만 사용한다.

  • Encoder: 입력 텍스트를 이해하고 의미를 추출하는 데 특화
  • Decoder: 텍스트를 생성하는 데 특화 (GPT가 이 방식)

BERT가 Encoder만 선택한 이유는 명확하다. BERT의 목적은 텍스트를 생성하는 것이 아니라 이해하는 것이기 때문이다. 질문에 답하고, 문장을 분류하고, 감정을 파악하는 등 "이해" 중심의 태스크에 집중한다.

Self-Attention의 역할

각 Encoder 레이어 내부에는 셀프 어텐션(Self-Attention) 메커니즘이 있다. 이 메커니즘이 바로 양방향 이해를 가능하게 하는 핵심이다.

셀프 어텐션은 문장 내 모든 단어 쌍 사이의 관계를 계산한다. "고양이가 매트 위에 앉았다"라는 문장에서 "앉았다"가 "고양이"와 높은 관련성을 가진다는 것을 학습한다. 이 과정이 각 레이어에서 반복되면서, 단어들의 표현(Representation)은 점점 더 풍부한 문맥 정보를 담게 된다.

모델 크기

BERT는 두 가지 버전으로 발표되었다.

모델Encoder 레이어 수Hidden SizeAttention Heads파라미터 수
BERT-Base1276812110M
BERT-Large24102416340M

BERT-Base도 1억 1천만 개의 파라미터를 가진다. 이 규모의 모델을 처음부터 특정 태스크에 맞춰 학습시키는 것은 비효율적이다. 그래서 BERT는 사전 훈련(Pre-training)과 미세 조정(Fine-tuning) 이라는 2단계 전략을 채택했다.


사전 훈련: BERT는 어떻게 학습하는가?

BERT의 핵심 혁신은 사전 훈련 방법에 있다. 레이블이 없는 대규모 텍스트 데이터에서 두 가지 과제를 동시에 학습한다.

1. MLM (Masked Language Model)

MLM은 BERT의 가장 핵심적인 학습 방법이다. 원리는 간단하다.

입력 문장에서 일부 단어를 [MASK] 토큰으로 가리고, 모델이 가려진 단어를 예측하게 한다.

영어 시험의 빈칸 채우기 문제와 같다.

예시:

  • 원본: "The cat sat on the mat"
  • 입력: "The cat sat on the [MASK]"
  • 정답: "mat"

이때 모델은 [MASK] 위치에서 "mat"을 예측하기 위해 앞뒤 모든 단어를 참고해야 한다. "The cat sat on the"만으로도 추론 가능하지만, 양방향 맥락이 있으면 정확도가 훨씬 올라간다. 이것이 BERT가 양방향 학습을 자연스럽게 달성하는 방법이다.

학습 세부 사항:

  • 전체 토큰의 약 15% 를 무작위로 선택하여 마스킹한다
  • 선택된 토큰 중 80%는 [MASK]로 대체, 10%는 랜덤한 단어로 대체, 10%는 그대로 유지한다
  • 이렇게 섞는 이유는 모델이 [MASK] 토큰에만 의존하지 않고, 모든 위치에서 올바른 표현을 학습하도록 유도하기 위함이다

2. NSP (Next Sentence Prediction)

NSP는 두 문장 사이의 관계를 학습하는 과제다.

두 문장 A, B가 주어졌을 때, B가 원래 문서에서 A 바로 다음에 오는 문장인지 예측한다.

예시:

  • 문장 A: "오늘 날씨가 좋다."
  • 문장 B: "산책을 나갔다." -> IsNext (실제 다음 문장)
  • 문장 B': "주가가 폭락했다." -> NotNext (무관한 문장)

학습 데이터는 50%를 실제 연속 문장 쌍으로, 나머지 50%를 무작위로 조합한 문장 쌍으로 구성한다.

왜 NSP가 필요한가?

단어 수준의 이해(MLM)만으로는 부족한 태스크가 있다. 질의응답(Question Answering)이나 자연어 추론(Natural Language Inference)처럼 두 문장 사이의 관계를 파악해야 하는 태스크가 대표적이다. NSP는 이런 문장 간 관계를 학습하는 역할을 한다.


사전 훈련과 미세 조정

BERT의 학습은 두 단계로 나뉜다. 이 전략이 BERT의 실용적 가치를 극대화한다.

Pre-training (사전 훈련)

대규모 비지도 텍스트 데이터로 MLM과 NSP를 학습한다. 위키피디아, BookCorpus 등 방대한 텍스트에서 언어의 일반적인 패턴과 구조를 익힌다. 이 과정에는 막대한 컴퓨팅 자원이 필요하지만, 한 번만 수행하면 된다.

Fine-tuning (미세 조정)

사전 훈련된 BERT를 특정 태스크에 맞게 추가 학습한다. 이미 언어를 "이해"하는 모델에 소량의 레이블된 데이터만 추가해도 높은 성능을 달성할 수 있다.

이것은 마치 어학 능력 시험을 준비하는 것과 비슷하다. 먼저 수년간 영어를 폭넓게 공부하고(사전 훈련), 시험 직전에 기출문제를 풀며 실전 감각을 익힌다(미세 조정). 기초가 탄탄하면 적은 기출문제만으로도 높은 점수를 받을 수 있다.

이 접근법 덕분에, 데이터가 부족한 태스크에서도 BERT는 높은 성능을 보여준다.


BERT의 활용 분야

BERT는 텍스트 이해(NLU, Natural Language Understanding) 가 필요한 거의 모든 태스크에서 활용된다.

텍스트 분류 (Text Classification)

문장이나 문서를 카테고리로 분류한다. 스팸 메일 필터링, 뉴스 기사 분류, 감정 분석(긍정/부정) 등이 대표적인 예다.

개체명 인식 (Named Entity Recognition, NER)

텍스트에서 인명, 지명, 기관명 같은 고유 명사를 식별한다. "삼성전자서울에서 신제품을 발표했다"에서 "삼성전자"를 기관으로, "서울"을 장소로 인식하는 것이다.

질의응답 (Question Answering)

주어진 문맥(Context)에서 질문에 대한 답을 찾는다. SQuAD 벤치마크에서 BERT는 사람의 성능을 처음으로 넘어서며 화제가 되었다.

임베딩 생성 (Embedding Generation)

텍스트를 고차원 벡터로 변환한다. 이 벡터는 의미적 유사도 계산, 검색, 클러스터링 등에 활용된다. BERT의 문맥을 반영한 임베딩은 Word2Vec 같은 정적 임베딩보다 훨씬 풍부한 의미를 담는다.

BERT가 못하는 것

한 가지 주의할 점이 있다. BERT는 텍스트 생성에는 적합하지 않다. 챗봇처럼 긴 문장을 만들어내는 것은 GPT 같은 Decoder 기반 모델의 영역이다. BERT는 "이해"에 특화된 모델이고, "생성"은 설계 목적에 포함되지 않는다.


정리

BERT의 핵심을 요약하면 다음과 같다.

항목내용
구조Transformer Encoder를 다층으로 쌓은 구조
핵심 특징양방향 문맥 이해 (Bidirectional)
학습 방법MLM (빈칸 채우기) + NSP (다음 문장 예측)
활용 전략Pre-training + Fine-tuning
강점텍스트 분류, NER, QA 등 이해 태스크
한계텍스트 생성에는 부적합

BERT는 "언어를 이해한다"는 것이 무엇인지를 보여준 모델이다. 왼쪽에서 오른쪽으로만 읽던 기존 방식에서 벗어나, 양방향 문맥을 동시에 파악함으로써 NLU 태스크의 성능을 비약적으로 끌어올렸다. 이후 RoBERTa, ALBERT, DeBERTa 등 수많은 후속 모델이 BERT를 기반으로 발전했으며, BERT의 사전 훈련-미세 조정 패러다임은 현대 NLP의 표준이 되었다.