티스토리 뷰
준지도 학습 (SSL; Self-supervised Learning)
비지도(Unsupervised), 지도(supervised) 학습은 많이 들어봤어도, 준지도(self-supervised) 학습은 입문자에게 낯설다. 단어 뜻을 토대로 유추해보면, 자기가 스스로 label을 생성하는 것이라고 유추해 볼 수 있겠다. 사람이 레이블링을 하는 것은 많은 리소스가 들어간다(그래서 따로 외주를 주는 것). 준지도 학습에서 레이블들은 입력으로 넣지 않은 나머지 데이터들이 y 삼아서 예측하도록 학습한다.
"I love ___ go to school."
위 문장의 예시에서 빈 칸을 예측하는 태스크를 준지도 학습으로 해결하고자 한다면, 빈 칸을 제외한 나머지 단어들을(토큰) 다른 단어(토큰)들로 예측하도록 학습시키는 것이고, 이게 일종의 pre-trained이 되는 과정이다.
PLM(Pre-trained Language Model)의 최종 목표는 이렇게 pre-trained된 weights를 활용해서 다른 태스크들에 적용(fine tuning)하는 transfer learning이다.
Why PLM?
PLM을 만드는 것은 워낙 리소스가 많이 들어가기 때문에 일반인이나 작은 기업들은 상상도 할 수 없다. 왜 PLM은 특히 자연어처리 분야에서 인기를 끌고 있고 대세가 되었을까? 그 첫 시작은 아래의 질문에서 시작되었다.
대규모 general representation을 전이 학습에 활용할 수 없을까?
PLM을 통해서는 아래의 세 가지 성능 향상을 기대할 수 있다.
- 더 좋은 입력 representation
- 더 좋은 weight parameter seed
- 큰 모델을 다시 학습할 필요 없이 추론
위 그래프를 보면, PLM 모델들의 사이즈를 나타내는 데, y축이 log-scale이다. 따라서 사실은 지수증가를 보이며, GPT-3의 경우 175 billion의 weights를 학습했다.
GPT(Generative Pre-Training)
OpenAI에서 Transformer의 디코더를 활용해서 언어 모델을 사전학습을 하여 각 task에 맞게 tranfer learning을 한다. input으로는 특수 토큰(e.g. BOS, EOS, Dilimeter)이 포함된 문장을 넣고, GPT를 통과시켜서 학습시킨다. 이 단순한 모델이 엄청난 성능을 보이면서, 이 PLM이 자연어처리에서는 말그대로 대세가 되었다.
BERT(Bidirectional Encoder Representations form Transformer)
이전에 다뤘던 PLM 이전의 자연어처리 모델은 feature-based 였다. 즉 좋은 사전학습 embedding을 넣기 위한 모델이었다. 하지만 PLM의 목표는 random seed에서 학습을 하지 않기 위해 좋은 weight seed를 만들어 놓는 것이 목표다. GPT는 uni-directional을 통한 사전학습이었다면, 즉 앞에서 오는 단어들의 구성으로 뒤에 오게 될 단어를 예측하는 단방향 모델이었다. 하지만 BERT는 이름에서 알 수 있듯이 양방향 모델이다.
- Transformer의 encoder만을 활용한다.
- MLM(Masked Language Model)
: 다음 토큰을 예측하는 것이 아니라 문장의 중간의 특정 단어를 masked하여 예측하게 학습한다. 이는 현재 time-step기준으로 앞, 뒤를 학습하게 만들어 문장 전체의 context를 정보로 활용할 수 있게 된다.
MLM은 학습과 추론의 괴리를 없애기 위해서 15%의 토큰만 추론으로 선정하고, 그 중 80%는 masked로 바꾸고 10%는 랜덤 토큰, 10%는 원래 토큰으로 만들어서 노이즈를 섞는다. - NSP(Next Sentence Prediction)
: Question Answering이나 Text Entailment같이 단어가 아닌 문장과 문장의 관계를 이해하도록 하는 objective 설정이 가능하다. 두 문서를 임의로 선택하여 50%는 연결된 문서, 50%는 연결되지 않은 문서로 학습시킨다. 또한 seperator라는 토큰을 넣어서 문서와 문서 사이를 구분짓는다.
- MLM(Masked Language Model)
- Positional 인코딩 대신 다양한 embedding을 결합할 수 있다.
: Transformer에서 positional encoding을 하듯 BERT에서는 Position Embedding(위치)과, Segment Embedding(문장)을 같이 넣어준다. - Task-specific layer를 추가해서 fine-tuning한다.
'Study > NLP' 카테고리의 다른 글
NLP with DeepLearning (8) - Text Classification (0) | 2021.12.06 |
---|---|
NLP with DeepLearning (7) - Word Embedding(Word2Vec) (0) | 2021.11.30 |
NLP with DeepLearning (6) - Word Embedding(prev) (0) | 2021.11.25 |
NLP with DeepLearning (5) - Minibatch (0) | 2021.11.24 |
NLP with DeepLearning (4) - Subword Segmentation (0) | 2021.11.23 |
- Total
- Today
- Yesterday
- productmanager
- ML
- torch
- docker
- mlpipeline
- 쿠버네티스
- 도커
- 딥러닝
- PM
- 스타트업
- Bert
- productresearch
- Tennis
- 인공지능
- PO
- DDUX
- dl
- Oreilly
- pmpo
- productowner
- Kubernetes
- 파이프라인
- 머신러닝파이프라인
- MLOps
- 전처리
- deeplearning
- container
- 머신러닝
- nlp
- 자연어처리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |