huginn muninn

BERT : Pre-training of Deep Bidirectional Transformers for Language Understanding (2018) 간단정리 본문

자연어 처리

BERT : Pre-training of Deep Bidirectional Transformers for Language Understanding (2018) 간단정리

_maddy 2025. 1. 19. 20:29

 

- 한 줄 요약

BERT는 Transformer의 인코더만 사용함.

 

Abstract

왼쪽과 오른쪽 문맥을 모두 활용해 양방향으로 학습된 언어 모델, 기존의 많은 NLP작업에서 뛰어난 성능을 보여주며 사전 훈련된 BERT 모델은 간단한 출력층 추가만으로도 다양한 작업에 적응할 수 있다.

 

Introduction

이전의 단방향 모델들의 한계를 극복하기 위해 "Masked Language Model"과 "Next Sentence Prediction"을 사용하여 사전 학습을 수행. BERT는 여러 NLP 작업에서 뛰어난 성능을 발휘하며, 기존의 많은 task-specific 모델을 능가하는 성과를 보임.

 

Related Work

Unsupervised Feature-based Approaches

주로 word embedding의 발전 과정과 이를 문장 및 문단 임베딩으로 확장하는 방법에 대해 정리했다. 특히, ELMo와 같은 모델이 어떻게 context-sensitive feature를 추출하고 다양한 NLP 작업에서 성능을 향상 시키는지 설명한다.

Unsupervised Fine-Tuning Approaches

문장 및 문서 인코더를 사전학습해 지도 학습이 필요한 작업에 활용하는 방법을 설명한다.

Fine-tuning Approaches가 레이블이 없는 데이터에서 사전 학습된 모델을 기반으로 새로운 작업을 학습하는 방법을 설명합니다. 이를 통해 많은 매개변수를 처음부터 학습하지 않아도 높은 성능을 달성할 수 있는 장점을 강조하고 있으며, 특히 OpenAI GPT와 같은 모델이 이를 성공적으로 활용하여 뛰어난 성과를 달성했음을 보여준다.

Transfer Learning from Supervised Data

대규모 데이터 셋을 사용한 작업에서 효과적인 Transfer learning 사례들을 제시.

transfer learning : 한 작업에 대해 훈련된 모델을 사용해 유사한 작업을 수행하는 모델의 기초로 활용하는 딥러닝 접근법.

 

BERT

  • pre-training: BERT는 대량의 레이블이 없는 데이터로 사전 훈련을 진행. 이 단계에서는 데이터의 다양한 패턴을 학습하여 일반적인 언어 표현을 익힘.
  • fine-tuning: 사전 훈련된 모델을 기반으로, 특정 다운스트림 작업에 맞춰 파라미터를 조정. 여기서 ‘다운스트림 작업’은 질문-답변, 감정 분석 등과 같은 구체적인 NLP 작업을 의미.
  • 통일된 아키텍처: BERT는 사전 훈련 단계와 다운스트림 작업 단계 간의 아키텍처가 거의 동일하다는 점이 특징. 이는 모델이 다양한 작업에 대해 일관된 방식으로 동작하도록 함.

model architecture

BERT는 다층 Bidirectional Transformer encoder를 기반으로 하며, BERT는 BERTBase와 BERTLarge로 구분됨.

  • BERTBase (L=12, H=768, A=12, 총 파라미터 수=110M)
  • BERTLarge (L=24, H=1024, A=16, 총 파라미터 수=340M)

BERT는 bidirectional self-attention을 사용하는 반면, GPT는 Constrained self-attention을 사용한다. 그래서 GPT는 모든 토큰이 왼쪽의 문맥만 참고할 수 있다.

Input/output Representations

  • WordPiece Embeddings: BERT는 WordPiece 임베딩을 사용하여 텍스트를 작은 단위로 분해하여 표현. 이 방식은 어휘 크기를 줄이고 희귀한 단어 문제를 완화하는 데 도움이 됨.
  • [CLS] Token: 입력 시퀀스의 첫 번째 토큰인 [CLS]는 문서의 전체 표현을 요약하는 역할을 하며, 주로 분류 작업에 사용됨.
  • [SEP] Token: 문장 쌍을 구분하기 위해 사용하는 특수 토큰으로, 두 문장 사이의 경계를 명시.
  • Input Representation: 각 토큰의 입력 표현은 해당 토큰의 임베딩, 세그먼트 임베딩(문장 A 또는 B에 속하는지 여부), 위치 임베딩(토큰의 위치 정보) 을 합산하여 생성.

 

BERT는 QA 등과 같은 두 개의 문장 입력이 필요한 태스크를 풀기도 함. 문장 구분을 위해 BERT는 세그먼트 임베딩이라는 또다른 임베딩 층을 사용하기도 한다. 첫번째 문장에는 Sentence 0 임베딩, 두번째 문장에는 Sentence 1 임베딩을 더해주는 방식이며, 0과 1 뿐!

즉, BERT는 총 3개의 임베딩 층이 사용됨.

  • WordPiece Embedding : 실질적인 입력이 되는 워드 임베딩. 임베딩 벡터의 종류는 단어 집합의 크기로 30522개
  • position embedding : 위치 정보를 학습하기 위한 임베딩. 임베딩 벡터의 종류는 문장의 최대 길이인 512개
  • segment embedding : 두개의 문장을 구분하기 위한 임베딩. 임베딩 벡터의 종류는 문장의 최대 개수인 2개

BERT에는 어텐션 마스크라는 시퀀스 입력이 추가로 필요하다.

 

어텐션 마스크는 BERT가 어텐션 연산을 할 때, 불팰요하게 패딩 토큰에 대해서 어텐션을 하지 않도록 실제 단어와 패딩 토큰을 구분할 수 있도록 알려주는 입력이다. 이 값은 0과 1 두가지 값을 가지는데 숫자 1은 단어이기에 마스킹을 하지 않고,, 0은 패딩 토큰이기 때문에 마스킹을 한다.

 

BERT는 2단계로 진행된다. Encoder가 입력문장을 임베딩해 언어를 모델링하는 pre-training 과정과 이를 fine-tuning하여 여러 자연어 처리 task를 수행하는 과정이다.

 

1. pre-training BERT

😉 BERT의 사전훈련 방식은 크게 두가지로 나뉜다. 첫번째는 Masked Language Model, 두번째는 Next Sentence Prediction 이를 통해 BERT가 양방향으로 학습되어 문맥을 더 잘 파악할 수 있게 한다.

BERT는 MLM과 NSP를 위해 Transformer를 기반으로 구성된다. 특히 BERT는 transformer의 인코더만 사용한다.

 

Task #1 : Masked Language Model

BERT는 사전훈련을 위해서 인공신경망의 입력으로 들어가는 입력 텍스트의 15%의 단어를 랜덤으로 마스킹한다. 그리고 이 마스킹된 토큰을 예측하게 한다. 이는 양방향 문맥을 활용할 수 있게 해준다.

  • 양방향 학습 방식은 각 단어가 간접적으로 자신을 참고할 수 있기 떄문에 모델이 쉽게 타겟 단어를 예측할 수 있기 때문이다.
  • 전부 [MASK]로 변경하지는 않고 랜덤으로 선택된 15%의 단어들을 다음과 같은 비율로 규칙이 적용된다.
    • 12%의 단어들을 [MASK]로 변경
      • The man went to the store → The man went to the [MASK]
    • 1.5%의 단어들은 랜덤으로 단어가 변경.
      • The man went to the store → The man went to the dog
    • 1.5%의 단어들은 동일하게 둔다.
      • The man went to the store → The man went to the store

이렇게 하는 이유는 [MASK]만 사용할 경우 [MASK] 토큰이 fine-tuning 단계에서는 나타나지 않기 때문에 pre-trained 단계외 fine-tuning 단계에서의 불일치가 발생하는 문제가 있다. 이를 완화하기 위해 랜덤으로 선택된 15% 단어들의 모든 토큰을 [MASK]로 사용하지 않는다.

MLM을 수행하며 BERT는 문맥을 파악하는 능력을 기를 수 있다.

Task #2 : Next Sentence Prediction, NSP

🌈 NSP는 문장 A 뒤에 오는 문장이 실제로 다음 문장인지, 아니면 랜덤한 문장인지를 예측하는 작업이다. BERT는 이 작업을 통해 문장 간의 관계를 이해하고, 이를 통해 QA와 NLI 같은 작업에서 성능을 향상시킬 수 있다.

  • 사전 훈련 예제에서 문장 A와 B를 선택할 떄, 50%는 실제로 B는 A 다음에 오는 문장(IsNext로 라벨링). 나머지 50%의 경우 B는 코퍼스에서 랜덤으로 선택된 문장(NotNext로 라벨링)B

 

  • BERT의 입력으로 넣을 떄에는 [SEP]라는 특별 토큰을 사용해 문장을 구분한다. 첫번재 문장 끝에 [SEP] 토큰을 넣고, 두번째 문장이 끝나면 역시 [SEP] 토큰을 붙여준다. 그리고 이 두문장이 실제 이어지는 문장인지 아닌지는 [CLS] 토큰의 위치의 출력층에서 이진 분류 문제를 풀도록 한다.

BERT는 손실함수를 최소화하기 위해 MLM과 NSP를 함께 학습한다.

 

Pre-training data

사전 훈련 데이터는 BooksCorpus영어 위키피디아에서 추출한 텍스트로 구성되며, 문서 수준의 긴 연속적인 시퀀스를 얻기 위해 문서 단위의 코퍼스를 사용하는 것이 중요하다고 강조한다.

 

2. Fine-tuning BERT

BERT 모델은 Transformer셀프-어텐션(self-attention) 메커니즘을 사용하기 때문에 단일 텍스트나 텍스트 쌍을 처리하는 다양한 다운스트림 작업에서 쉽게 사용할 수 있음.

두 텍스트를 서로 독립적으로 인코딩한 다음 bidirectional cross attention 을 적용하는 것이 일반적이지만 BERT는 텍스트 쌍을 self-attnetion으로 한번에 처리한다.

예를 들어 문장 A와 B는 여러 작업에 적용될 수 있는데,

  • 문장 유사성을 확인할 때는 문장 쌍.
  • 추론에서는 가설과 전제 쌍
  • 질문-답변 시스템에서는 질문과 지문 쌍.
  • 텍스트 분류에서는 문장과 공백쌍으로 볼 수 있다.

결론적으로, BERT는 미리 학습된 모델을 가져와 각 작업에 맞는 입력과 출력을 연결하고 전체 모델을 미세 조정(fine-tuning)함으로써 다양한 자연어 처리 작업에 적용할 수 있다. 이 과정이 상대적으로 빠르고 비용이 적게 드는 것이 특징.