-
Bert
1. 참고링크
- 1) Illustrated Bert
2) Bert 톺아보기
2. 설명
- -핵심 아이디어
- Transformer 모델에서 Encoder부분만 사용하여 Input을 Embedding한다.
- Base 모델은 12개, Large 모델은 24개의 Encoder로 구성되는데, Encoder가 많을수록 관계를 잘 파악한다.
- 각 Encoder는 이전의 출력값을 입력값으로 사용하였는데, non-linear activations를 거치지 않아 Explode 또는 Vanishing Gradients 문제를 최소화 하고자 하였다. 대신 병렬처리가 안된다.
- Bert는 다이나믹 임베딩값을 갖는다.(같은 단어라도 문장에 따라, 위치에 따라 각기 다른 벡터 값을 갖는다.)
- -Input Embeddings
- Bert는 Transformer와 달리 Positional Encoding을 사용하지 않고 Position Embeddings를 사용한다.
- 여기에 Segment Embeddings를 추가해 각각의 임베딩, 즉 3개의 임베딩을 합산한 결과를 취한다.
- -FeedForward
- 음수에 대해서도 미분이 가능한 GELU를 사용하였다.
- -학습 방법
- Masked Language Model과 Next Sentence Prediction을 사용하여 Bi-Direction으로 학습한다.
- 이를 위해 Input Embeddings에 아래의 두 태그를 추가하였다.
- 1) [CLS] : 문장의 맨 앞에 클래스를 뜻하는 태그
- 2) [SEP] : 문장의 끝을 나타내는 태그, 구분자로 쓰이기도 함
- -Masked Language Model
- 보통과는 달리 다음 단어를 예측하지 않고, 문장의 랜덤한 단어를 마스킹하고 이를 예측한다.
- Word2Vec의 CBOW와 유사
- 마스킹은 전체 단어의 15%, 이 15% 중 80%는 <mask>로 치환, 10%는 랜덤한 단어로 치환, 나머지 10%는 그대로 둔다.
- <mask>로만 치환하면 Fine-tuning(파라미터 미세조정)시 이 태그를 무시할 것이고, 예측할 필요가 없다고 판단한다.
- <mask>가 아닌 것도 예측하도록 학습하여 모든 단어에 대한 문맥 표현이 학습되도록 한다.
- -Next Sentence Prediction
- 두 문장을 주고 두 번째 문장이 글에서 첫 번째 문장의 바로 다음에 오는지 예측하는 방법이다.
- QA나 NLI등에서는 Masked Language Model만으로는 부족하여 [CLS]를 맞추도록 한다.