본문 바로가기

AI/[Paper]

[논문] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

반응형

BERT: 언어 이해를 위한 깊은 양방향 트랜스포머 사전 학습

Transformer의 Encoder만 사용한 모델 BERT. (https://arxiv.org/pdf/1810.04805)

Abstaract

BERT (Bidirectional Encoder Representations from Transformers)

BERT is designed to pre-train deep bidirectional representations from unlabeled text by jointly conditioning on both left and right context in all layers.
BERT는 모든 계층에서 좌우 문맥을 공동으로 고려함으로써, 비지도 텍스트로부터 깊은 양방향 표현을 사전 학습하도록 설계되었습니다.

1. Introduction

사전 학습된 언어 표현을 다운스트림 태스크에 적용하는 기존의 두 가지 주요 전략

  • Feature-based (특징 기반) 접근 방식
    - 사전 학습된 모델을 고정된 특징 추출기로 사용
    - ELMo : 특징 기반 접근 방식 중 하나.
                    문맥에 따라 동적으로 단어의 벡터 표현을 생성하고, 이를 다른 NLP 모델에 입력 특징으로 제공
  • Fine-tuning (미세 조정) 접근 방식
    - 사전 학습된 모델 전체를 특정 작업에 맞게 다시 학습시키는 방식

➡️ 두 가지 접근 방식은 사전 학습 중 동일한 목적 함수를 공유하며, 일반적인 언어 표현을 학습하기 위해 단방향 언어 모델을 사용한다.

BERT는 MLM을 통해 단방향성 제약을 완화하고 문맥 이해도를 높인다.

MLM(Masked Language Model)

입력에서 일부 토큰을 무작위로 마스킹하여, 문맥만을 기반으로 마스크된 단어의 원래 어휘 ID를 예측하는 것이 목표.
표현이 좌측 및 우측 문맥을 융합하도록 하여 깊은 양방향 트랜스포머를 사전학습할 수 있게 한다.

NSP (Next Sentence Prediction)

두 문장 간의 관계를 이해하도록 학습 시키는것이 목표.
입력으로 두 개의 문장을 받았을때, 이 두 문장이 실제 의미가 이어지는 관계인지? 다른 주제의 문장인지 예측하도록 학습한다.

3. BERT

BERT는 두 가지 모델 크기에 대한 결과를 보고한다.

모델
Layers (L)
Hidden Size (H)
Heads (A)
총 파라미터 수
BERT-BASE
12
768
12
110M
BERT-LARGE
24
1024
16
340M

BERT-BASE는 OpenAI GPT와 동일한 모델 크기를 같게 하여 비교 할 수 있게함.

BERT의 입력 표현: 3가지 임베딩의 조합

[CLS] token : 시작 토큰, 셀프 어텐션 메커니즘을 통해 문장 A와 B의 전체 정보를 종합하여 문장 전체를 대표하는 하나의 벡터

[SEP] token : 문장을 구분하는 토큰

BERT는 단순히 단어의 의미뿐만 아니라 문장의 구조적 정보까지 이해하기 위해, 다음 세 가지 종류의 임베딩을 합산하여 최종 입력값으로 사용한다.
  • Token Embeddings : 각 토큰(단어) 자체의 의미를 나타내는 임베딩입니다. BERT는 WordPiece라는 서브워드(subword) 분절 방식을 사용합니다.
  • Segment Embeddings : NSP 학습을 위해 입력된 두 문장, 즉 문장 A와 문장 B를 구분해주는 역할을 합니다.
  • Position Embeddings : Transformer는 RNN과 달리 순서 개념이 없기 때문에, 단어의 위치 정보를 알려주기 위한 임베딩이 별도로 필요합니다.
 

3.1 Pre-training BERT

Task #1: Masked LM (MLM, $\approx$ Cloze task) 

  • 1단계: 입력된 전체 토큰 중 15%를 예측할 대상으로 랜덤하게 선택합니다.
  • 2단계: 1단계에서 선택된 15%의 토큰들에대해 *80/10/10 규칙*에 따라 처리합니다.
    - 80%: [MASK] 토큰으로 변경합니다. (예: my dog is hairy → my dog is [MASK])
    - 10%: 다른 랜덤 단어로 변경합니다. (예: my dog is hairy → my dog is apple)
    - 10%: 원래 단어를 그대로 유지합니다. (예: my dog is hairy → my dog is hairy)
➡️ 모든 토큰이 문맥상 적절한지 판단하는 능력을 학습할 수 있고, 풍부한 문맥적 표현(representation)을 배우도록 강제하여 일반화 성능을 크게 향상시킨다.
🎖️ 예측 오류(loss)는 오직 마스킹 대상으로 선택된 1단계의 15% 토큰에 대해서만 계산된다는 것입니다. 나머지 85%의 토큰은 예측 대상이 아니므로, 학습이 훨씬 효율적으로 이루어집니다.

Task #2: Next Sentence Prediction (NSP)

문장과 문장 사이의 관계를 학습하기 위한 단계

 입력 구성: 두 개의 문장 A와 B를 [CLS] 문장 A [SEP] 문장 B [SEP] 형태로 구성합니다.
 학습 데이터: 전체 학습 데이터의 50%는 실제 이어지는 문장 쌍(IsNext 레이블)으로 구성하고, 나머지 50%는 서로 관계없는 두 문장을 랜덤하게 뽑아 만든 문장 쌍(NotNext 레이블)으로 구성합니다. 모델은 이 두 가지 경우를 분류하도록 학습됩니다.

3.2 Fine-Tuning BERT

🔥 MNLI / NER / SQuAD❓

MNLI (Multi-Genre Natural Language Inference)
- 자연어 추론(Natural Language Inference, NLI)의 한 종류
- 두 문장 간의 의미론적 관계를 파악하는 작업
- [CLS] 토큰의 표현(C)을 입력받아, (함의, 모순, 중립) 클래스 중 하나를 예측하는 출력 레이어(classification layer)를 추가하여 미세 조정한다.

NER (Named Entity Recognition)
- 텍스트에서 고유 명사(named entity)를 식별하고, 이를 미리 정의된 클래스로 분류하는 작업 (예 : 사람, 조직, 장소, 날짜, 시간 등)
- token-level(토큰 수준)의 작업

SQuAD (Stanford Question Answering Dataset)
- 기계 독해(Machine Reading Comprehension)를 위한 대표적인 데이터셋
- 주어진 문단(Paragraph)과 해당 문단에 대한 질문(Question)이 주어졌을 때, 문단 내에서 질문에 대한 답이 되는 텍스트 **구간(span, 연속된 부분)**을 정확히 찾아내는 것을 목표
- token-level(토큰 수준)의 작업, "Start/End Span" : 답변(Answer) 구문에대한 시작 위치와 종료 위치를 예측

1. Sentence pairs in paraphras-ing (페어플레이징)

두 개의 문장이 의미적으로 동일한지 판단
(예 : "나는 배가 고프다"와 "배고픔을 느낀다" 동일 문장으로 판단!)

2. Hypothesis-premise pairs in entailment (함의)

자연어 추론(Natural Language Inference, NLI) 또는 함의 작업은 주어진 '전제(premise)' 문장에 대해 '가설(hypothesis)' 문장이 어떤 관계에 있는지를 파악하는 것
함의(문장 요약, 함축된 표현), 모순, 중립 세가지로 나뉜다. ➡️ MNLI

3. Question-passage pairs in question answering

 '질문'과 '본문(passage)' 텍스트를 읽고, 본문 내에서 질문에 대한 답이 되는 텍스트 구간(span)을 찾아내는 것 ➡️ SQuAD

4. A degenerate text-∅ pair in text classification or sequence tagging

text classification : 문장 전체의 감성 분석(긍정/부정), 스팸 메일 분류 등 입력 텍스트 전체에 대해 하나의 레이블을 할당하는 작업
sequence tagging : 문장 내 각 단어(토큰)에 대해 특정 태그를 할당하는 작업 ➡️ NER

At the output, the token rep-resentations are fed(공급하다) into an output layer for token-level tasks, such as sequence tagging or question answering,
출력에서는 토큰 표현들이 시퀀스 태깅 또는 질의응답과 같은 토큰 수준 작업들을 위한 출력 레이어로 공급되고,
and the [CLS] representation is fed into an output layer for classification, such as en-tailment or sentiment analysis.
[CLS] 표현은 함의 또는 감성분석과 같은 분류를 위한 출력 레이어로 공급된다.

6. Conclusion (결론)

비지도 사전학습(unsupervised pre-training)이 많은 언어 이해 시스템의 필수적인 부분을 입증했다.
deep bidirectional(깊은 양방향) 아키텍처로 더욱 일반화 하여 동일한 사전학습 모델이 광범위한 NLP tasks를 성공할 수 있도록 한다.

반응형