reniew's blog
cs and deep learning

ALBERT: A Lite BERT For Self-Supervised Learning of Language Representations

|

오늘은 2019년 google research에서 나온 논문인 ALBERT: A Lite BERT For Self-Supervised Learning of Language Representations에 대해서 알아보도록 한다. 기존의 다양한 BERT의 후속 논문들이 모델 사이즈를 늘리며 성능을 올리던 것을 지적하며, ALBERT는 GPU memory를 효율적으로 사용하면서 모델 성능을 향상시킨 모델이다. 2020년 2월 현재 SQuAD 2.0 Leaderboard를 보면 1등부터 8등까지 랭크하고 있는 모델들이 모두 ALBERT를 활용한 모델이다.

이렇게 BERT의 GPU-utilize를 효율적으로 개선했음에도 불구하고 향상된 성능을 보이는 ALBERT에 대해서 알아보도록 하자.


Introduction

Fully network pre-training(BERT, GPT, ULMFiT) 방법들은 계속해서 language representation learning 분야에서 breakthrough를 가져왔다. 데이터가 부족한 많은 NLP task에서 이러한 방법들은 pre-trained을 효과적으로 적용되어왔다.

다양한 pre-training 방법론들에서 Large size의 network를 사용하는 것이 성능을 향상시키는데 중요한 역할을 했다. 또한, pre-trained large network를 smaller한 network로 distilling시키는 방법들도 많이 제시되었다. 이러한 흐름을 바탕으로 우리는 “더 큰 모델을 가지는 것이 더 좋은 NLP 모델을 만드는 방법인가?” 라는 질문을 한다.

하지만 이러한 질문에 대한 대답에서 문제가 되는 부분은 더 큰 모델을 사용한다는 것은 GPU memory에 제약을 받는다는 점이다. 최근의 다양한 높은 성능을 보이는 모델들을 매우 많은 파라미터들을 가지고 있고, 실제로 이를 이용해보려 하면 memory 제약을 쉽게 경험 할 수 있다.

이러한 memory limitation을 다룬 여러 방법들(model parallelization, clever memory management)이 있었지만 이는 결국 communication overhead는 다루지 못헀다.

따라서 이 논문에서 앞서 언급한 문제점들을 해결하는 더 작은 파라미터를 가진 A Lite BERT(ALBERT) architecture를 소개한다.

ALBERT는 두 가지 parameter reduction 기법을 사용한다.

  1. Factorized embedding parameterization
  2. Cross-layer parameter sharing

첫 번째 Factorized embedding parameterization 방법은 기존의 큰 embedding matrix를 두개의 matrix로 나눠 파라미터 수를 줄였고. 두 번째 Croos-layer parameter sharing은 모델의 깊이가 깊어질 수록 파라미터 개수가 선형적으로 늘어나는 것을 방지한다.

이러한 방법들을 통해 ALBERT는 BERT-large모델에 비해 18배 적은 파라미터를 가지고 1.7배 빠르게 학습된다.

추가적인 성능향상을 위해 ALBERT는 self-supervised loss인 SOP(Sentence order prediction) loss를 사용한다. 이 loss는 기존의 NSP loss의 비효율성을 개선하기 위해 사용한다.

The Elements of ALBERT

Model Architecture choices

ALBERT의 기본 architecture는 BERT와 유사하다. Transformer의 Encoder 구조와 함께 GELU activation function을 사용했다. 여기서 notation은 기존의 BERT에서와 동일하게 사용한다. embedding size는 $E$, encoder layer의 수를 $L$, hidden size를 $H$로 표기한다. 기존 BERT와 동일하게 feed-forward의 size를 $4H$로 attention head 수를 $H/64$로 사용했다.

Factorized embedding parameterization BERT에서 WordPiece embedding size $E$와 모델의 hidden layer size $H$는 동일하게 설정되어 있다. 이러한 설정은 모델링 측면과, 실용적인 부분에 최적의 방법이 아니다.

그 이유에 대해서 얘기하자면 우선 모델링 관점에서 보면, WordPiece embedding 은 context-independent한 representation인 반면 hidden-layer embedding의 경우 context-dependent한 representation이다. RoBERTa: A robustly optimized BERT pretraining approach. 에서의 context length에 관한 실험에서 볼 수 있듯이 BERT-like representation의 효과는 context-dependent한 representation을 학습하는데 있다. 따라서 WordPiece embedding size인 $E$와 hidden layer size인 $H$를 다르게 설정하는 것이 더 효과적인 모델 파라미터들의 활용일 수 있다.

실용적인 관점에서 보면, NLP 모델들은 vocabulary size $V$를 가지는데, 대부분 매우 큰 값을 가진다. 이 떄 앞서 말했던 $E$와 $H$를 동일하게 설정한다면 자연스럽게 embedding matrix의 파라미터 수인 $V \times E$가 커지게 된다. 이 값은 보통 $E=H$ 로 설정한다면 쉽게 10억개 이상의 파라미터를 가지고 학습 속도를 매우 느리게 한다.

따라서 ALBERT에서는 factorization of embedding parameters를 사용한다. 이는 큰 embedding matrix를 작은 두개의 matrix로 나누는 방법으로 먼저 기존에 $E$ dimension으로 바로 mapping 했던 것을 보다 작은 dimension인 $E$로 mapping한 후 $E$ dimension의 vector를 다시 $H$ dimension으로 보낸다. 이렇게 되면 기존에 $V \times H$ 였던 파라미터 수는 $V \times E + E \times H$으로 줄어들게 된다.

Cross-layer parameter sharing ALBERT에서는 cross-layer paraeter sharing 기법을 사용한다. 이는 파라미터를 효율성을 향상시킨다. Parameter를 sharing하는 다양한 방법들이 존재한다. 예를들면 Transformer network에서 FFN(Feed-Forward Network)의 파라미터만 공유하거나, attention parameter만 공유한다던지. ALBERT에서는 모든 parameter들을 공유한다.

Universail Transformer(Dehghani et al., 2018)와 Deep Equilibrium Models, DQE(Bai et al., 2019)에서 이와 유사한 방법이 사용되었다. ALBERT와 다른점은 UT에서는 기존의 vanilla Transformer 보다 높은 성능을 보이고, DQE에서는 특정 layer에서의 embedding의 input과 output이 동일해지는 equilibrium point에 도달한다는 것을 확인 할 수 있다. 우리의 실험에서는 embedding의 L2 distance 및 cosine similarity가 converge 하지 않고 oscillating한 것을 확인 할 수 있다.

figure

위의 그림을 통해 layer를 통한 transition이 ALBERT에서가 BERT에 비해 더 smoother한 것을 확인 할 수 있다. 즉, 이러한 결과는 weight-sharing이 network parameter들을 stabilizing하는데 효과가 있다는 것을 보여준다.

Inter-sentence coherence loss Masked Language Modeling(MLM) loss와 더불어 BERT 는 Next-Sentence Prediction loss를 사용했다. NSP는 입력값으로 들어간 두 문장이 이어진 문장인지, 아니면 관계없는 문장인지를 예측하는 binary classification task이다. NSP는 기본적으로 sentence pair의 관계를 capture하는 downstream task의 성능 향상을 위해 설계되었다. 하지만 최근 RoBERTa(Liu et al., 2019), XLNet(Yang et al., 2019)등 다양한 연구에서 NSP의 효과에 대해서 의문을 제기하고, NSP loss를 제거하고 pre-train을 진행하고 있다. 그리고 이러한 결과는 여러 downstream task에서 성능의 향상을 가져 왔다.

우리는 이러한 NSP의 비효율성의 이유를 task가 MLM에 대비해서 매우 쉬운데에 있을거라 추측한다. NSP는 하나의 task로 topic predictioncoherence prediction 두 개의 예측을 진행한다. 이 때 topic prediction 은 상대적으로 coherence prediction에 비해 매우 쉽고, MLM과 겹치는 부분이 상당수이다.

우리는 sentence간의 관계를 보는 modeling이 natural language understanding에 매우 중요한 부분이라 생각하고, 이를 위해 coherence에 기반을 둔 loss를 제안한다. 즉 ALBERT에서는 sentence-order prediction(SOP) loss를 사용한다. 이는 해당 loss가 topic을 예측하지 않고 sentence간의 coherence를 예측하도록 한다.

SOP는 동일한 document에서 가져온 연속된 두개의 segment를 입력값으로 넣는다. 이 때 각각 50%의 확률로 순서를 그대로 넣거나, 순서를 반대로 섞어서 넣는다. 그리고 모델을 통해 순서가 제대로 된 순서인지, 반대로 되어있는지를 예측하도록 한다. SOP에 대한 실험을 보면 SOP를 사용함으로써 NSP를 사용한 성능보다 향상된 것을 확인 할 수 있다.

Model setup

ALBERT에서 BERT와 다르게 설정한 hyperparameter들은 아래와 같다.

table2

앞서 언급한 model design을 통해 ALBERT는 BERT 모델과 비교해서 상대적으로 매우 작은 파라미터 개수를 가진다. 예를들면, ALBERT-large 모델의 경우 BERT-large에 비해 18배 적은 파라미터를 자긴다.

Experiments

Overall Comparison between BERT and ALBERT

table3

Factorized Embedding Parameterization

table4

Cross-Layer Parameter Sharing

table5

Sentence Order Prediction(SOP)

table6

Comments