*본 템플릿은 DSBA 연구실 이유경 박사과정의 템플릿을 토대로 하고 있습니다.
기존의 모델들은 사전학습된 language representation을 활용하여 다운스트림 Task에 적용한다. 현재 BERT는 GPT와 마찬가지로 큰 대규모 데이터셋에 학습된 Pretrained BERT 모델을 각기 다른 Task Dataset에 마지막 레이어를 추가해 fine-tuning 하여 각종 GLUE에 있는 task에서 압도적인 SOTA 성능을 달성하였다.
💡 상세 설명 :
기존의 pre-trained 모델을 down-stream 할때 and 방식으로 진행하였다.
방식의 대표적인 모델로는 ELMo가 있다. ELMo는 양방향인 Bi-LSTM을 사용하여 양방향 정보를 모아서 문맥의 정보를 추출하여 임베딩 벡터를 생성하게 된다. ELMo의 장점으로 임베딩 벡터를 학습하는데 중점을 두었다고 볼 수 있는데
Str1 : 나 배가 고파
Str2 : 저기 배가 지나간다.
위와 같이 다른 배의 표현일지라도 Word2Vec과 같은 모델은 같은 의미라고 해석하지만 문맥을 파악하기 때문에 ELMo모델은 서로 다른 벡터로 구분하여 의미가 다른것을 표현하게 된다.
Fine-tuning의 대표적인 방식으로는 GPT-1 모델이 존재한다. 최소한의 파라미터의 도입으로 모든 매개 변수를 미세조정하여 다운스트림 작업에 훈련된다. GPT는 Transformer의 Decoder Block만 활용하여 모델을 구성하였으며 초기 GPT-1과 같은 모델은 현재 논문에서 소개하는 BERT와 같이 다운스트림때 마지막 레이어만을 수정하여 Task를 진행하게된다.
BERT가 나온 논문 당시에는 GPT-1은 Transformer의 디코더만 사용하게 되었는데 현재 논문에서 주장하는 바에 따르면 GPT는 디코더만을 사용했음으로 단방향으로만 학습을 진행하게 되는데 이때 단방향은 양방향에 비해 fine-tuning 방식에서 pre-trained 모델의 성능을 제한한다고 주장한다. 특히 디코더의 Attention은 이전 토큰에 대해서만 주의를 줌으로써 정보를 통합하는데 중요한 Sentence-level tasks, Question Answering task에서 매우 안좋은 영향을 준다고 주장한다. 또한 일종의 양방향 모델인 ELMo 또한 Bi-LSTM을 사용하지만 진정한 양방향의 학습이 아니라고 주장한다.
BERT는 Transformer의 Encoder Block만 사용하며 이는 Transformer의 Encoder Block과 동일하게 일치한다.
위의 그림 예시로는 각 의 벡터가 나오게 되는데 의 벡터는 일종의 [CLS] token으로써 모든 문장의 문맥을 가지고 있다고 해석된다. 이때 사용자는 각 Task에 맞게 자신이 사용할 BERT의 output Token과 Classifcation Layer을 정의하여 사용한다.
BERT의 임베딩은 3가지의 임베딩으로 구성되며 각기 하는 역할은 아래와 같으며 이때 사용되는 3가지의 Special Token이 존재한다.
1. Special Token
1.Masked LM
Masked LM은 입력 문장에서 랜덤하게 일부 단어를 마스크하고, 해당 단어를 예측하는 것으로 학습하며 이때 3가지 유형의 마스크를 사용하게 된다. Masked LM 방식으로 문장의 문맥을 이해하며 단어의 의미를 파악하는 능력을 학습하게 된다. 마스킹 방식은 아래와 같다.
전체 토큰 중 15%를 랜덤하게 고른다. 이때 15% 중에서도 3가지 유형으로 마스킹을 진행한다.
2.Next sentence prediction
Next sentence prediction는 두 문장이 주어졌을 때, 두 번째 문장이 첫 번째 문장의 다음 문장인지 아닌지를 예측하는 것으로 학습한다. 이를 통해 모델은 문장과 문맥의 의미를 파악하는 능력을 배우게 된다. 이때 문장의 유형은 2가지이며 50%의 확률로 결정된다. 유형은 아래와 같다
BERT의 Fine-Tuning은 사용되는 text pair을 이루어지더라도 매우 간편하게 학습을 진행하게 된다. 기존의 텍스트가 pair을 이루고 있는 경우 텍스트를 독립적으로 인코딩 한 후 이를 cross attention으로 처리하지만 BERT는 이미 pretraining 과정에서 두 문장을 입력받아 self-attention을 bidirectional하게 진행하여 적용이 매우 간단하게 된다. text pair의 목록은 아래와 같다.
pair가 존재하는 task에서 output으로 사용되는 token은 output layer의 최종 토큰들에서 각 토큰들의 위치에 맞는 토큰 표현이 토큰 단위 테스크 Layer에 그대로 입력 된다. 이러한 태스크는 태깅, Question Answering 작업이 표현된다. [CLS] 토큰들을 사용하는 Task는 주제 분류, 감성분석등 문장 단위의 테스크에서 사용된다.
BERT의 Model Size로는 2개의 모델이 존재한다 각 모델의 파라미터는 아래와 같다.
GLUE 데이터셋을 사용하여 평가를 진행하였으며 각 테스크 마다의 다른 learning rate를 사용하였다 모델의 같은 경우 데이터셋이 작을경우 학습이 불안정하여 학습을 무작위로 종료시키고 재시작하여 동일 체크포인터에서 데이터 셔플링을 다르게 진행하여 학습을 진행하였다고 한다.
score를 보게될경우 만으로도 모든 Task에서 SOTA를 달성하였으며 는 더욱 높은 성능으로 SOTA를 기록하여 기존 SOTA에 비해 말도 안되는 성능 향상을 이루어 내었다.
질의 응답 데이터셋으로 위키피디아의에서 답변 텍스트 범위를 예측하는 task이다. 출력으로 답변의 범위의 시작점과 종료점을 찾게 설계하였다. 이때 start vector()과 end vector()는 차원으로 구성되며 이다. 단어 가 시작일 확률은 와 을 내적하여 softmax를 통과하여 구하게 된다.
으로 구성되며 목적 함수는 가 최대화 되도록 수행된다.
SQuAD v1.1에서도 SOTA를 달성하였으며 SQuAD v2.0에서 답변이 없는 본문에 대해서는 시작 종료 모두 [CLS]토큰을 선택하였다.
SWAG는 주어진 문장과 이어지는 문장을 객관식으로 선택하는 상식 추론 데이터셋인데 이때 [CLS]토큰과 라는 벡터를 추가하여 이 둘을 내적하여 softmax에서 최댓값을 뽑아내는 방식으로 훈련되었다. 이 또한 SOTA를 달성하였으며 1명의 전문가 사람보다 높은 점수를 기록하였다.
(1) GLUE
(2) SquAD
(3) SWAG
역시 BERT는 미친 성능을 보여주며 모든 각종 Task에서 SOTA를 찍은 모델이다. 대단하다고 생각되며 심지어 사용하기도 매우 간편해서 더욱 잘만들었다고 생각한다. 무조건 읽어야할 NLP 필수 논문답다고 생각이 든다.
드디어 미루고 미루던 BERT논문 리뷰를 진행하여 뿌듯하고 하루 빨리 GPT를 읽고 작성해야겠다. 모델 리서치가 꿈으로써 하루 빨리 다양한 논문리뷰를 진행해야겠다. 그리고 멀티모달도 얼른 하고싶다 ^,^
Pizza Tower Enjoy hours of fun with us.