[논문리뷰]RoBERTa

Alice·2021년 10월 22일
0

서론

NLP 분야에서는 Word2Vec과 같은 Word embedding으로 Transfer learning을 수행해왔다.

그러나 Word2Vec, Fastext 같은 Word embedding은 얕은 뉴럴넷을 기반으로 하기 때문에, 단어들의 결합형태나 문맥(다의어, 동형이의어 e.g. 사과의 apple vs 기업의 apple)을 고려하지 못한다는 한계가 있었다.

따라서 ELMo 등과 같이 딥러닝을 이용해 pretraining을 한 후, downstream task에 Transfer learning을 적용하는 Word embedding이 등장하였다.

Left to right으로 학습하는 방식(unidirectional)은 순차적으로 문장을 생성하는 task 외에 다른 task에서 효과적이지 못하였다. 따라서 ELMo는 Bi-LSTM을 사용하였다. 그러나 동시에 양방향을 고려하지 못한다는 한계가 존재하였다.

BERT

BERT는 Transformer라는 구조를 사용하고 Masked LM이라는 방법을 도입하였다. 그러나 Masked LM은 MASK token일 때만 예측을 수행하여 최종 hidden state가 의미 있는 정보를 갖고 있지 않게 된다. 따라서 어떠한 token이 있든 간에 학습이 이루어지도록 하기 위해, 특정 확률(15%)에 따라 선택된 token의 80%는 MASK를 씌우고, 10%는 임의의 다른 token으로, 10%는 기존 token을 사용하였다. 또한 문장 간의 관계 또한 파악하는 Next sentence prediction도 수행하였다. 50%는 진짜 다음 문장을, 50%는 그렇지 않는 문장으로 구성하였다.

Sentence는 마침표로 끝나는 일반적인 언어학적 문장이 아니라, arbitrary span of contiguous text이다. BERT는 크게 3개의 embedding input(Token embedding, Segment embedding, Positional embedding)이 존재한다. BERT는 playing을 play + ~ing과 같이 sub-word 기반으로 하는 Wordpiece 방식으로 Token embedding을 진행하였다.

이후 Transformer encoder 구조를 지나게 된다. Base는 encoder를 12개, Large는 encoder를 24개 얹음으로써, input sequence를 반복적으로 구축하고 단어 간 복잡한 관계를 포착하였다. Multi-headed self attention은 여러 개의 head가 scaled dot-product attention를 h번 학습하여 concatenate하였다. Feed forward layer는 2개의 linear transformation으로 구성되어 있고, 그 사이를 Gelu activation function으로 연결되어 있다.

RoBERTa(Robustly optimized BERT approach)

BERT의 data, hyperparameter 부분에서 undertrained임을 밝혔다.

  1. BERT MASK 개선 - Dynamic masking
    딱 한번만 random MASK를 적용하여, 모든 epoch에서 동일한 MASK가 반복되었다. 따라서 RoBERTa는 epoch마다 다른 Masking을 수행하는 Dynamic masking를 적용하였다. 이때, 더 많은 step, 더 큰 dataset을 pretraining할수록 Dynamic masking이 중요해졌다.

위의 실험 결과와 같이 Static masking에 비해 비슷하거나 조금 향상된 결과를 보였다.

  1. NSP
    NSP task의 필요성을 확인하기 위해 다양한 input setting을 적용하여 비교하였다.

1) Segment pair + NSP : BERT와 동일한 설정하였다.
2) Sentence pair + NSP : 각 segment가 하나의 문장으로 구성하였다. -> batch size를 늘려 한번에 optimize되는 token 수를 비슷하게 설정하였다.
3) Full sentence: 각 input을 하나 이상의 문서들로부터 연속적으로 샘플링하였다. = 하나의 문서가 끝나면 다음 문서를 그대로 연결하여 총 token 수가 최대 길이를 채우도록 구성하였다.
4) Doc sentence: 각 input을 하나의 문서로만 샘플링하였다. = 총 token 수가 최대 길이보다 작게 구성하였다. -> batch size를 조정하여 한번에 optimize되는 token 수를 비슷하게 설정하였다.

실험 결과는 위와 같다.

1) 개별 문장만 사용하는 Sentence pair에서는 성능이 감소하였다. 모델이 long range 의존성을 학습할 수 없기 때문이다.
2) NSP를 제거하였을 때, 기존 방법 대비 성능이 향상하였다.
3) Full sentence보다 Doc sentence가 약간 더 성능이 좋았으나, batch size를 다양하게 조절해야하므로 이후 실험들에서는 Full sentence의 입력 구성을 이용하였다.

Batch size를 늘렸을 때 이에 따른 적절한 learning rate를 이용하면, optimization 속도 뿐만 아니라 최종 테스크의 성능도 향상되었다.

  1. Byte-pair Encoding
    Byte-pair Encoding(BPE)는 word 단위와 character 단위의 중간에 있는 text encoding이며, 학습 코퍼스의 통계치에 의해 결정되는 sub-word unit이다.
    BERT는 30k 사이즈의 사전을 이용하여 Character-level의 BPE를 학습하고 학습 코퍼스의 휴리스틱한 토크나이징을 진행한 반면, RoBERTa는 50K 사이즈의 사전을 이용하여 GPT에서 소개한 Byte 단위의 BPE를 학습하였다. 선행 연구에서 Byte 단위가 Character 단위보다 조금 안 좋은 성능을 보이나, universal encoding 이점으로 Byte 단위를 이용하였다.

  2. Pretraining data
    BERT는 16GB를 pretraining한 반면, RoBERTa는 160GB를 pretraining하였다.

더 많은 데이터로 더 많이 학습할수록 좋은 결과를 보였다. Data를 늘려감에 따라, 가장 오래 학습한 모델조차도 overfitting하지 않았다.

RoBERTa 실험 결과

1) Single model 설정: GLUE의 모든 태스크들에 대해 각각 single training을 진행했고, 다른 논문들과 유사하게 hyperparameter는 적절한 범위 내에서 선택했다. BERT가 3만큼의 epoch만 학습하는 반면, 10epoch의 학습과 early stopping을 진행했다.

2) Ensemble model 설정: 넓은 hyperparameter 범위에서 5~7개의 모델들을 학습하여 앙상블하였다. 또한 RTE(Recognizing Textual Entailment), STS(Semantic Textual Similarity), MRPC(Microsoft Research Paraphrase Corpus)는 pretraining 모델에서 시작하기보다 , MNLI(Multi-Genre Natural Language Inference)로 fine tuning된 모델을 다시 fine tuning하는 방법이 더 성능이 좋았다.

Single model 설정은 9개의 태스크에서 모두 가장 좋은 성능을 보인 반면, Ensemble model 설정은 4개 테스크의 성능과 평균 성능에서 가장 좋은 성능을 보였다. RoBERTa는 BERT와 동일한 모델 구조와 Masked LM를 이용하면서 다른 모델 구조를 사용한 접근법들을 능가했다. 따라서 모델 구조보다 데이터 양, 학습 시간 등이 더 중요할 수 있다고 판단하였다.

참고

https://baekyeongmin.github.io/paper-review/roberta-review/
https://www.youtube.com/watch?v=GiotNYiTiMw&t=6s

profile
NLP Researcher

0개의 댓글