BERT 간단 개념 정리
(15일 업로드 한 줄 알았는데 안되어서 부랴부랴 16일 새벽에 올림...
육안으로보기에 15일 업로드가 비어있어서 너무 슬픔...)
BERT는 transformer를 활용한 google의 대용량 언어모델이다.
시기적으로 공개된지 5년도 안되었고 성능적으로도 뛰어나기 때문에
아주아주 핫한 모델이다.
BERT 모델은 기본적으로 Transformer Encoder을 12개 (Base) 혹은 24개 (Large) 쌓아 올린 구조로
여러 embedding 과정을 거치는데
1) Subword 토크나이저인 WordPiece 토크나이저로 임베딩을 하고
2) Positional이 아닌 Position Embedding을 진행한다.
Position embedding은 학습을 통해서 위치정보를 얻는 방법이다.
3) 또 두 개의 문장이 입력되었을 때 문장을 구분해주는 Segment Embedding이 존재한다.
3개의 임베딩 층은 각각 30522, 512, 2개의 임베딩 종류 개수를 가지고 있다.
또한 BERT는 위키피디아, BooksCorpus와 같은 데이터로 Pre-training 과정을
ELMO, GPT와 같이 추가 훈련과정인 Fine-tuning 과정을 거친다.
Pre-training 과정은 여러개가 있다.
그 중, Input 텍스트의 15%를 Mask로 치환시켜주는 MLM(Masked Language Model)이 있다.
Mask로 가린 후 그 공간에 들어갈 단어를 예측하여 학습시키는 것이다.
15%를 전부 Mask로 가리는 것이 아닌
그 중 80%는 Mask로, 10%는 랜덤으로 단어를 변경, 10%는 그대로 둔다.
그리고,
다음 문장을 예측하는 NSP(Next Sentence Prediction) 방법이 있다.
두 개의 문장을 제시하고 이 문장들이 이어지는지 아닌지를 학습하는 것이다.
절반은 이어지는 문장, 절반은 랜덤 문장이 주어지고 Label을 두개로 나눈다.
MLM과 NSP는 동시에 이루어진다.
또한 학습시 문장의 끝에 SEP토큰을 사용하여 문장을 구분하고,
두 문장이 이어지는 문장인지를 판단하기 위해 CLS토큰을 사용하다.
Fine-tuning은 사용자 목적에 맞게 학습된 모델을 출력층에 업데이트하는 추가훈련이다.
보통 BERT의 목적은 여러개가 있는데
1) 단일 텍스트에 대한 분류 (b)
제품 리뷰의 감성 분류 등의 문제에 사용되는 이 유형은 CLS 토큰 위치의 출력층에서
Fully-connected layer, Dense layer 을 추가하여 예측을 한다.
2) 단일 텍스트에 대한 태깅 (d)
Input 텍스트 토큰 위치에 Dense layer을 각각 추가하여 품사 태깅 및 개체명 태깅 작업을 도와준다.
3) 텍스트 Pair 분류 or 회귀 (a)
Segement embedding을 활용해 CLS 토큰 출력층에 Dense layer을 추가하여 진행한다.
두 문장이 어떤 관계에 놓여있는 NLI(자연어추론)에 사용된다.
4) 질의 응답 (c)
앞선 텍스트 쌍 분류, 회귀 문제랑 동일하게 텍스트 쌍을 입력받지만
다른 점은 중요 텍스트(본문)의 일부분을 Dense layer로 추출해 질문에 예측한다는 점이다.
마지막으로 GPT와 차이점은
Training data size 측면에서 BERT가 훨씬 많은 단어를 학습한다는 것과
SEP, CLS 토큰을 사용한다는 점
Batch size가 128000개로 GPT의 32000개 보다 더 크다는 점 등이 있다.