본문 바로가기
IT 와 Social 이야기/NLP 자연어처리

[딥러닝을이용한 자연어 처리 입문] 1802 버트(Bidirectional Encoder Representations from Transformers, BERT)

by manga0713 2021. 6. 4.

[ 이미지 출처 : slideshare - BERT introduction ]

 

1. BERT의 개요

 

- 트랜스포머를 이용하여 구현되었으며, 위키피디아(25억 단어)와 BooksCorpus(8억 단어)와 같은 레이블이 없는 텍스트 데이터로 사전 훈련 및 파인 튜닝(Fine-tuning)된 언어 모델

 

2. BERT의 크기

 

- 기본 구조는 트랜스포머의 인코더를 쌓아올린 구조

 

 

3. BERT의 문맥을 반영한 임베딩(Contextual Embedding)

 

- 문맥을 반영한 임베딩(Contextual Embedding)을 사용

 

- 하나의 단어가 모든 단어를 참고하는 연산은 BERT의 12개의 층에서 전부 이루어짐

 

 

 

4. BERT의 서브워드 토크나이저 : WordPiece

 

- 단어보다 더 작은 단위로 쪼개는 서브워드 토크나이저를 사용(WordPiece 토크나이저)

 

- 자주 등장하지 않는 단어의 경우 더 작은 단위인 서브워드로 분리되어 서브워드들이 단어 집합에 추가

 

 

5. 포지션 임베딩(Position Embedding)

 

- 위치 정보를 위한 임베딩 층(Embedding layer)을 하나 더 사용하여 학습을 통해서 얻은 위치 정보를 표현

 

 

6. BERT의 사전 훈련(Pre-training)

 

 

- 두 가지 방식

  • 마스크드 언어 모델(Masked Language Model, MLM)
  • 다음 문장 예측(Next Sentence Prediction, NSP)

1) 마스크드 언어 모델(Masked Language Model, MLM)

 

[ "My dog is cute. he likes playing"

 

- 입력 텍스트의 15%의 단어를 랜덤으로 마스킹(Masking)하여 이 가려진 단어들을(Masked words) 예측하도록 함

 

  • 80%의 단어들은 [MASK]로 변경한다.
    Ex) The man went to the store → The man went to the [MASK]
  • 10%의 단어들은 랜덤으로 단어가 변경된다.
    Ex) The man went to the store → The man went to the dog
  • 10%의 단어들은 동일하게 둔다.
    Ex) The man went to the store → The man went to the store

 

2) 다음 문장 예측(Next Sentence Prediction, NSP)

 

- 두 개의 문장(두 종류의 텍스트, 두 개의 문서 등의 의미도 포함)을 준 후에 이 문장이 이어지는 문장인지 아닌지를 맞추는 방식으로 훈련함

 

  • 이어지는 문장의 경우
    Sentence A : The man went to the store.
    Sentence B : He bought a gallon of milk.
    Label = IsNextSentence
  • 이어지는 문장이 아닌 경우 경우
    Sentence A : The man went to the store.
    Sentence B : dogs are so cute.
    Label = NotNextSentence

 

7. 세그먼트 임베딩(Segment Embedding)

 

- 문장 구분을 위해서 세그먼트 임베딩이라는 또 다른 임베딩 층(Embedding layer)을 사용

 

*** 결론적으로 BERT는 총 3개의 임베딩 층이 사용됨

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

 

8. BERT를 파인 튜닝(Fine-tuning) : 적용 유형

 

- BERT에 우리가 풀고자 하는 태스크의 데이터를 추가로 학습 시켜서 테스트하는 단계

 

1) 하나의 텍스트에 대한 텍스트 분류 유형(Single Text Classification)

 

- 영화 리뷰 감성 분류, 로이터 뉴스 분류 등과 같이 입력된 문서에 대해서 분류를 하는 유형

 

2) 하나의 텍스트에 대한 태깅 작업(Tagging)

 

- 문장의 각 단어에 품사를 태깅하는 품사 태깅 작업과 개체를 태깅하는 개체명 인식 작업 등의 유형

 

3) 텍스트의 쌍에 대한 분류 또는 회귀 문제(Text Pair Classification or Regression)

 

- 자연어 추론(Natural language inference) 등의 유형

 

4) 질의 응답(Question Answering)

 

- 텍스트의 쌍을 입력으로 받는 또 다른 태스크 유형 등

 

 

10. 어텐션 마스크(Attention Mask)

 

- BERT가 어텐션 연산을 할 때, 불필요하게 패딩 토큰에 대해서 어텐션을 하지 않도록 실제 단어와 패딩 토큰을 구분할 수 있도록 알려주는 입력(0, 1)

 

 

nlp_1802_bert.ipynb
0.00MB

 

 

- 출처 : [딥러닝을이용한 자연어 처리 입문] 1802 버트(Bidirectional Encoder Representations from Transformers, BERT)