Subword Tokenization
•
Tokenizer: Input text를 모델에서 처리할 수 있는 데이터로 변환
•
Word 단위로 tokenize하면 문제 생김 (vocab 개수 유한성, 오탈자 등 인지 불가능 [OOV problem])
•
따라서 Subword 단위로 tokenize → BPE Algorithm
BPE (Byte-pair encoding) Algorithm
•
모든 단위를 문자 단위로 분할하여 자주 등장하는 문자 쌍을 병합
이 외
•
WordPiece
•
SentencePiece
Pretraining - Decoder-only model
Two-stage training
1.
Language modeling objective를 unlabeled data에 적용하여 init param 학습
2.
Supervised data와 objective로 fine-tune
How to do it? → AR (Auto-Regressive)
•
이전 단어들을 기반으로 다음 단어를 1개씩 예측하여 생성
1.
입력 토큰 input → 다음 토큰 예측
2.
예측된 토큰 다시 입력에 추가하고 다시 다음 토큰 예측
•
이전 Token들이 주어졌을 때 그 다음 단어 w가 올 확률을 최대화
How to fine-tune?
downstream task dataset에 맞게 을 최대화하게끔 훈련
•
Pretrained 모델이 예측하는 마지막 토큰 위에 head를 올린다
•
이 Head를 포함하여 downstream task에 맞게 학습시킨다
Example - GPT (Generative Pretrained Transformer)
•
Encoder가 없으므로 cross attention layer 제거됨
Pretraining - Encoder-only model
Decoder와 달리 bidirection context 얻을 수 있음 → 미래 단어 볼 수 있음 → Casual LM으로 학습 불가
Example: BERT
Pretrain 방법 1: MLM (Masked Language Modeling)
Token의 일부를 마스킹한 후 ([MASK] 토큰으로 치환), 마스킹된 부분을 예측
•
랜덤하게 전체 15%의 token 택해서 예측
•
선택된 token 중
◦
80% = [MASK]
◦
10% = 엉뚱한 다른 token
◦
10% = 그대로
•
왜 그대로 둔 token도 예측? → non-masked token에 대해서도 representation을 얻기 위해
문제점: pretraining과 finetuning 간의 불일치 (fine-tuning에는 masking 없음)
Pretrain 방법 2: NSP (Next Sentence Prediction)
•
두 문장 A,B를 [SEP] token으로 구분해서 넣음
◦
50% - A,B는 이어지는 문장 (label = IsNext)
◦
50% - A,B는 이어지지 않는 (label = NotNext)
•
[CLS] token에서 나온 representation을 classifier에 태워 prediction
•
[SEP] token 외에도 segment embedding을 추가하여 A,B가 확실히 분리되게끔 함
한계점
•
Encoder는 generation에 특화되지 않음 → Autoregressive Generation에서 좋은 성능 X
Pretraining: Encoder-Decoder models (Full Transformer)
T5 model
Denoising span corruption task
BART
•
Corrupted document = Encoded with bidirectional model
•
Predict original document in an Autoregressive Decoder
5 Pretraining tasks
NO fine-tuning
Text-to-text framework
•
모든 NLP task를 text 입력 → text 출력 형식으로 변환
◦
Task 상관 없이 동일한 training objective 적용 가능
◦
모든 task를 생성문제로 변환했기 때문에 처음보는 task에도 대처 가능
Scaling law
•
Language modeling performance improves smoothly as we increase the model size,
datasetset size, and amount of compute used for training