-
GPT & BERTNLP/2주차 2021. 9. 15. 12:05
최근 트렌드
- Transformer 모델과 self-attention block이 sequence encoder decoder로 주로 사용됨
- 깊게 쌓은 transformer를 이용하여 NLP task를 많이 발전시킴
- nlp뿐만 아니라 추천 시스템, 신약 개발, CV에도 사용되는 추세
- 다만, 여전히 NLG를 위해서는 <sos> 토큰 부터 시작해서 순차적으로 단어를 하나씩 생성해야함 (greedy decoding)
GPT-1
- Special token을 이용해 transfer learning시 효율적으로 학습
- 성능이 아주 좋은 디코더
- 적은 양의 데이터로도 높은 분류 성능
- Task specific한 구조가 필요하지 않다
- Classification: extract token을 linear transformation 하여 감정 분류를 할 수 있다.
- Entailment(논리 관계): 두 문장을 하나로 병합하고, 문장 사이에 delim token, 끝에 extract token 추가. Extract token을 이용하여 entailment 확인
- Transfer Learning: encoder 부분은 사전학습된 파라미터를 이용하고(작은 lr), 새로운 Linear를 추가해준다(큰 lr).
- 인간은 새로운 task 학습을 위해 수많은 데이터를 필요로 하지 않는다
- fine tuning 과정을 거치면서 모델이 하나의 task 만 수행 가능하게 되는 것은 비효율적이다 → Few-shot, One-shot, Zero-shot learning의 아이디어를 바탕으로 GPT-2 등장
GPT-2
- GPT-1과 구조가 다름
- Few-shot, One-shot, Zero-shot learning의 새 지평을 제시
GPT 계열 모델의 한계
- weight update가 없다는 것은 새로운 지식 학습이 없다 → 시기에 따라 달라지는 문제에 대응 불가능
- 인간은 여러 매체로 정보를 받아들이는 반면 GPT는 글로만 세상을 배운다 → 멀티모달 정보가 필요
- 모델 사이즈만 키우는 것과 다른 방향 필요
BERT
- 기존의 모델들은 한쪽의 context만을 이용하는데 양쪽의 context를 이용하면 더 낫지 않을까? → MLM(Masked Language Model)
- MLM은 input의 15%를 Mask 토큰으로 치환하고, 이를 예측하도록 함 → 실제 우리가 해결해야하는 task에서 mask token은 등장하지 않는다. Transfer Learning시 문제가 발생할 수 있다.
- 따라서 15%의 80%는 mask로, 10%는 random한 단어로, 10%는 원래 단어 그대로 유지
- NSM(Next Sentence Prediction) → 문장간의 관계를 학습하기 위해 주어진 두개의 문장이 연속되는 문장인지 학습한다. CLS 토큰을 분류
- 모델 구조
- Input Representation
- WordPiece embedding(30,000 WordPiece) → Subword 이용
- Learned Positional Embedding
- [CLS] - Classification Embedding
- Packed sentence embedding [SEP]
- Segment Embedding - 어떤 문장에 속하는지 나타내기 위한 임베딩 벡터
- Fine-Tuning
- Evaluation
- GLUE (General Language Understanding Evaluation)를 이용하여 평가했을때, BERT가 우수한 성능을 보임. https://gluebenchmark.com/
- SQuAD(Stanford Question Answering Dataset)에서도 BER가 우수한 성능
- MRC 기반 QA 학습은 어떻게 진행되는가?
- 정답 문구의 시작 위치와 끝 위치를 예측
- 각 word를 임베딩하고, 이를 스칼라값으로 바꿔주는 FC layer를 학습 (이 값으로 Starting position을 예측)
- 같은 방식으로 FC layer를 하나 더 학습하여 Ending position을 예측
- 답이 없는 경우 CLS token을 이용
- SWAG 데이터셋에서는 다음과 같은 방식으로 진행
- 첫 문장과 다음으로 나올 수 있는 문장들을 concat (예시에서는 총 4번의 concat).
- 각각의 concat된 문장들의 임베딩 벡터를 output layer를 통과시켜 스칼라 값으로 만들어주고, GT와 비교했을 때 정답의 스칼라값에 softmax를 취한 값이 최대가 되도록 softmax loss 이용.
- 크기를 키울수록 성능이 증가
GPT vs BERT
GPT BERT Training Data Size BookCorpus(800M words) BookCorpus + Wikipedia(2,500M words) Training Special Tokens [SEP], [CLS], sentence A/B embedding Batch Size 32,000 words 128,000 words Task-specific fine-tuning 5e-5 lr for all fine tuning experiements task specific fine-tuning lr Direction Uni-directional Bi-Directional ※ 일반적으로 큰 batch를 사용하면 학습이 안정화되고, 성능이 좋아진다.
'NLP > 2주차' 카테고리의 다른 글
Hugging Face Library (0) 2021.09.17 NLP 모델 정리 (0) 2021.09.16 Pre-Tokenization (0) 2021.09.15