다시 이음

NLP model - GPT, ALBERT, RoBERTa 본문

Pre_Onboarding by Wanted(자연어 처리)

NLP model - GPT, ALBERT, RoBERTa

Taeho(Damon) 2022. 3. 11. 18:31

안녕하세요.

 

오늘은 NLP 모델에서 Transformer와 BERT 모델을 기반으로 하는 모델을 알아보려고 합니다.

 

Auto regressive

 

오리지날 트랜스포머 모델의 decoder를 사용하며, 이전 모든 토큰들을에 대해 다음 토큰을 예측하는 방식으로 대해 사전 학습 됩니다.

간단히 설명하면 input값으로 이전 단어를 model에 넣어 나온 output값을 사용함으로 계속하여 다음 단어를 예측합니다.

 

1. GPT ( Generative Pre-trained Transformer )

 

- unsupervised pre-training + supervised Fine-tuning을 사용합니다.

 

- Transformer Decoder로만 구성되었습니다.

 

BERT와 다르게 attention이 bidirectional 하게 고려하여 attention을 계산하지 않고, 왼쪽에서 오른쪽 어텐션으로만 정보를 주어 attention을 계산합니다.

 

이유 : 이전 단어의 output을 받아 다음 단어 예측을 하기 때문에 다른 단어들의 어텐션을 가져오면 모델을 통한 예측이 아닌 답을 훔쳐보는 치팅이기 때문에 사용하지 않습니다.

 

2. GPT 2

 

차이점 :  대용량 데이터셋 WebText에 학습, task를 조건화한 unsupervised multitask learning 관점 제시

 

Initializing을 다르게 합니다.

Output 임베딩을 BPE 알고리즘을 통해서 합니다.

 

- Few-shot Learning

기존과 다르게 더 적은 데이터로도 Fine-tuning을 하는 것.

 

- Zero-shot / 파라미터 업데이트 없이 문제를 풀게 하는것

 

 

BERT based model

 

1. ALBERT( A Lite BERT for Self-supervised Learning of Language Representations )

 

이전 모델에서는 모델 규모가 커서 상용화가 어려운점 ,파라미터 수의 증가가 성능과 완전 비례하지 않다는 점이 문제점이었다.

 

파라미터 Reduction

 

- Factorized embedding parameterization

 

BERT에서는 input embedding dimention과 키,쿼리,밸류에 있는 hidden size 개수가 동일했습니다.(768개)

그러나 input embedding의 크기를 matrix 연산을 통해 차원을 줄여서  input embedding dimention< hidden size 이렇게 구성해서 경량화합니다.

 

- Cross layer parameter sharing

 

12개 층에 들어가는 attention 파라미터를 모두 공유하기로 합니다. (원래는 각각 독립적인 파라미터를 사용했습니다.)

 

- Next Sentence Prediction -> Sentence Order Prediction

 

원래 BERT에는 최대 2개의 문장이 들어갈 수 있습니다.

한개의 문장을 정하고 두번째 문장은 랜덤으로 선택하여 다음에 올 문장이 맞는지를 구분하는 task가 NSP였는데 그 task가 너무 쉽기 때문에 task를 변경하였습니다.

Sentence Order Prediction : 원래 순서대로 이루어진 2개의 문장을 스위칭하여 순서가 맞는지 구분하는 task

 

이점 : 메모리 사용량 down, 훈련 시간 down

 

2. RoBERTa (A Robustly Optimized BERT Pretraining Approach)

 

BERT의 학습 최적화를 통해 성능을 올렸습니다.

 

- 기존 BERT는 Undertrained 되었다는 것이 문제라고 지적하였고 이를 해결하기 위해 배치사이즈, 학습시간,학습데이터,데이터길이를 확대하였습니다.

 

- NSP task 제거

 

- Masking patten 변화

 

문장 내 토큰 중 15% 중에서 80%는 [MASK]로 대체, 10%는 유지, 10%는 임의 토큰으로 변경하던 BERT는 학습하면서 계속 바뀌는 것이 아닌 훈련 들어가기 전에 바꿔서 들어가기 때문에 epoch마다 같은 패턴으로 학습이 됩니다.

그렇기 때문에 훈련에 부족함이 있다고 판단하여 dynamic masking 방법을 사용합니다.(훈련마다 바뀌는 패턴)

 

이점 : NLU 강점