본문 바로가기
ML 관련/자연어 처리 관련

[논문 리뷰] Bidrectional Transformers for Language Understanding(BERT)

by 탶선 2019. 12. 4.
반응형

논문 제목 : BERT : Pre training of Deep Bidirectional
Transformers for Language Understanding

 

2번째로 게시할 글 역시 구글에서 발표한 논문이다.

논문제목에서 나와있는 Transformer는 첫 번째 게시글인 attention is all you need의 모델 이름이다.

 

즉 attention is all you need의 논문을 참조한 논문이며

Bidrectional(양방향)으로 language를 학습한 논문이다.

 

또한 당시 language 모델에서 가장 좋은 성능을 보였던 ELMo, OpenAI GPT를 겨냥한 논문으로 보인다.

 

 

 

1. 배경

 

BERT : Bidirectional Encoder Representations from Transformers

- "Attention is all you nee" - Transformer 구조 사용

 

- Transformer의 장점

   - 병렬 처리를 통한 학습 속도의 향상

   - pre-training과 fine-tuning시 아키텍처를 다르게 하여 Transfer Learning을 용이하게 구성 

 

- language model을 pre-training 시키는 방법은 크게 2가지 

 

1. Feature-based

   - 특정 task를 수행하는 network에 pre-trained language representation을 추가적인 feature로 제공

   - 두 개의 network를 붙여 사용

2. Fine-tuning

   - task-specific 한 parameter를 최소화하여 pre-trained 된 parameter들을 downstream task 학습을 통해 조금씩 바꿔주는 방식

   - 대표적 모델 : Generative Pre-trained Transformer(OpenAI GPT)

 

위 그림은 각각 BERT, OpenAI GPT, ELMo의 모델 구조.

 

ELMo(Feature-based) - 단방향의 LSTM으로 구성된 두 개의 모델을 붙여 양방향으로 학습되도록 하는 모델

BERT (본 논문의 모델) - 양방향으로 문자열을 학습되도록 하는 모델

 

 

2. BERT

 

Transformer 기반( 인코더만 사용)

"Attention is all you need"의 Transformer모델 구조

Transformer는 왼쪽의 Encoder와 오른쪽의 Decoder로 구성

BERT에서는 왼쪽의 Encoder 부분만을 사용한다.

#Attention is all you need 참고 바람 taepseon.tistory.com/3?category=814260 #

  • cls 토큰  - 문장의 시작을 알린다.
  • sep 토큰 - 문장의 나뉨을 알린다.
  • Token Embeddings     - 단어들의 토큰을 이용한 Embedding
  • Segment Embeddings - A라는 문장과 B라는 문장을 구별하기 위한 Embedding
  • Position Embeddings  - 단어들의 위치정보를 이용한 Embedding

 

 

 

Pre-training Tasks - Language model을 학습시키기 위해 필요

  • MLM (Masked Language Model)
    • 문장 내 랜덤 한 단어를 masking, 예측하도록 하는 방식
      • input에서 랜덤 하게 몇 개의 token을 mask
      • Transformer 구조에 넣어 주변 단어의 context만을 보고 mask 된 단어 예측
      • Input 전체와 mask된 token을 한 번에 Transformer encoder에 넣고 원래 token값을 예 

  • 단어중 일부(15%)를 [mask] token으로 변경
    • 15% 중 80% token을 [mask]로 변경
    • 15% 중 10% token을 random word로 변경
    • 15% 중 10% token을 원래의 단어 그대로(실제 관측된 단어에 대한 표상을 bias 해주기 위해)
  • NSP (Next Sentence Prediction)
    • 두 문장을 pre-training시 같이 넣어 두 문장이 이어지는 문장인지 아닌지를 맞추는 작업
    • pre-training시 50:50 비율로 실제 이어지는 두 문장과 랜덤 하게 추출된 두 문장을 넣고 BERT가 맞추도록 하는 작업

  • 50% - sentence A,B가 실제 next sentence
  • 50% - sentence A,B가 corpus에서 random으로 뽑힌(관계없는) 두 문장
    • 97~98%의 accuracy 달성

 

  • Fine-tuning Procedure
    • Input pre-processing
    • Pre-training 시의 Hyper Parameters
      • Batch size: 16,32
      • Learning rate(Adam): 5e-5, 3e-5, 2e-5
      • Number of epochs : 2,3,4

 

3. Experiment

The General Language Understanding Evaluation(GLUE) Test results

  • 모든 task에 대해 sota (state-of-art) 달성
  • 데이터 크기가 작아도 fine-tuning에서 좋은 성능 기대

SQuAD v1.1 Test results

  • 질문과 지문이 주어지고 그 중 substring인 정답을 맞추는 task
  • 질문을 A embedding, 지문을 B embedding으로 처리
  • 지문에서 정답이 되는 substring의 처음과 끝을 찾는 task로 문제 치환하여 해결

 

4. Conclusion

  • 대용량 unlabeled data로 모델을 pre-training
  • 특정 task를 가지고 있는 labeled data로 transfer learning을 하는 모델
  • 특정 task를 처리하기 위해 새로운 network를 붙일 필요 X
  • Bert모델 자체의 fine-tuning을 통해 해당 task의 state-of-the art 달성
  • 양방향 구조를 통한 pre-train 모델 구축
  • 번역 task나 language modeling과 같은 large-scale task는 모델 사이즈가 클수록 성능이 계속 상승하기 때문에 앞으로도 기대가치가 있다.
반응형

댓글