Transfer learning 이란 이미 pretrained 된 모델을 가지고 fine-tune 하는 일련의 과정을 의미한다. 모델을 다시 훈련하는 이유는 복잡한, specific 한 그 downstream task 문제를 잘 풀기 위해서였다.
Transformer + Transfer Learning
기본 구조는 Transformer 로 하되, Transfer Learning 을 적용할 수 있다. (학습 방법)
Pre-training
구조를 가지고 언어 모델링을 잘 하자가 목표이다. 같은 Transformer 라 하더라도, Encoder only, Encoder-Decoder, Decoder only 등 다양함을 알아두자.
Fine-tuning
Pretrained LM 을 가지고 원하는 문제를 풀고싶을 때 진행하는 추가적인 학습이다. 여전히 같은 Transformer 구조를 가지고 학습한다. - 사전 학습된 PLM 까지 학습
vs. Fine-tuning 이 아니라 특성 추출기만으로 사용할 수도 있다. PLM은 벡터 표현을 뽑아내는 역할만 하고, output-layer 만 학습시킨다. (이걸 transfer learning 으로 봐야할지?)
Transformer 는 "Attention is All you need" 논문에서 제안된, Encoder-Decoder 모델이다. 기계번역이라면, Encoder 는 소스 언어, Decoder 는 타깃언어의 시퀀스를 각각 처리한다. (인코더가 생성한 문맥 정보를 받아 디코더가 동작한다.)
트랜스포머 인코더만 (구조를) 가져왔다고 가정하자. 이를 가지고 언어 모델링을 목표로 pretraining, fine-tune 할 수 있다. - Encoder Only PLM 이다.
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2018) 논문의 Encoder-Only 모델을 보자.
왼쪽은 Pre-training, 오른쪽은 Fine-tuning. 하나씩 알아보자.
따라서 BERT 가 제시한, LM을 학습시키기 위한 방법은 다음과 같다.
✅ Masked LM
Encoder 를 가지고 Bidirectional으로 LM 을 학습시키기 위한 방법이다. (self-attention의 개념과 유사)
그러나, 이렇게 mask 를 사용하여 pre-train 을 하면 fine-tune 시에 환경이 달라진다는 문제가 생긴다 - fine-tuning 은 마스킹을 하지않는다 - 따라서 마스크의 이용이 fine-tuning 에서 문제가 생길 수 있음을 알아두자. 빈칸맞히기는 잘하는데, 그것만 잘하면 되나..? 하는 느낌.
위의 문제를 해결하기 위해, 마스킹되는 입력 토큰을 다른 토큰으로 변환한다. 15% 의 마스크 내에서
(Mask) 그 중 80% 는 마스크 처리를 그대로 한다.
(Same) 10%는 그대로 둔다
(RND) 10%는 랜덤한 단어를 넣는다.
이 비율은 실험적으로 결정된 것이며, fine-tuning 성능까지 고려했을 때 가장 높은 성능을 내는 비율이다.
✅ NSP
단어 수준이 아닌 문장 관계를 이해하는 모델을 훈련하기 위한 방법이다. 문장의 시작과 끝을 표시하는 [CLS], [SEP] 토큰을 사용한다.
하지만 이후 연구에서 NSP 학습이 필수가 아닐 수도 있다는 실험 결과가 존재하긴 한다...
✅ Pre-training Details
✅ 1. Sentence Pair Classification Task
두 문장의 관계를 파악하는 Task 이다. 두 문장을 SEP 토큰으로 연결한 토큰들을 입력으로 받고, CLS 토큰에 output layer 를 적용하여 예측한다.
✅ 2. Single Sentence Classification Tasks
한 문장 내에서 내용을 파악하는 task로, 입력으로는 단일 문장의 입력 토큰을 받고 CLS 토큰에 output layer 를 적용하여 레이블을 예측한다.
이것들을 다같이 모아둔 걸 GLUE benchmark dataset 으로 평가할 수 있다.
RoBERTa: A Robustly Optimized BERT Pretraining Approach (2019)
SpanBERT: Improving Pre-training by Representing and Predicting Spans (2020)
ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators (2020)