Pre-trained 모델 사이즈의 증가는 대체적으로 downstream tasks에서 좋은 성능을 보이지만, 이 학습 방법에는 GPU/TPU의 한계라는 어려움이 존재한다. ALBERT는 이러한 문제점을 해결하기 위한 BERT의 경량화 모델이며, 논문은 parameter reduction을 위한 두 가지 method와 BERT의 모델링 기법인 NSP를 개선한 SOP를 제안한다.
Introduction
Pre-training 과정에서 large parameter를 가진 모델은 대체적으로 downsteam tasks에서 좋은 성능을 보인다. 따라서 최근 연구들은 큰 사이즈의 모델을 사용하여 SOTA (state-of-the-art)를 달성하는 방법을 보편적으로 사용하고 있다. 논문은 여기서 하나의 의문을 가지면서 시작된다: 과연 큰 NLP 모델이 반드시 좋은 성능으로 이어지는가?
앞서 설명한 큰 사이즈의 pre-trained 모델을 학습시키기 위해서는 메모리 한계라는 어려움에 부딪히게 된다. SOTA를 달성한 많은 논문들은 최소 100만 개 이상의 파라미터 수를 가지며, 이는 사실상 엄청난 메모리를 소비한다. 이는 통신 오버헤드(클라우스 GPU를 사용할 경우 데이터를 전송하는 과정에서 생기는 현상)로 인한 학습 속도 저하를 일으키기도 한다.
해당 논문은 문제들을 해결하기 위해 BERT에 parameter reduction 기법을 적용시킨 ALBERT를 제시한다. 모델이 사용한 두 가지 모델 축소 기술을 통해 안정성, 빠른 속도, 그리고 더 나은 성능이라는 이점을 가진 모델이 되었다. 모델의 실험과정에서 BERT-large를 기반으로 한 ALBERT-large 모델은 18배로 적은 파라미터 수를 가지며, 1.7배 더 빠르게 학습될 수 있었다.
Modeling choices
ALBERT는 위에서 언급했듯이 3 가지 modeling choice에 대해 언급한다. 두 가지의 parameter reduction skill인 factorized embedding parameterization, cross-layer parameter sharing과 새로운 loss인 inter-sentence coherence이다.
모델의 기본적인 틀은 BERT를 사용하며, GELU 활성화 함수를 사용한다. 임베딩 사이즈는 E, 레이어의 수는 L, 그리고 hidden size는 H로 나타낸다. Feed-forward/filter의 크기는 4H이고, attention head의 수는 H/64이다 (V = 30000).
Factorized embedding parameterization
BERT, XLnet, 그리고 RoBERTa는 WordPiece embedding 크기 E를 H와 동일한 사이즈 ($H \equiv E$)로 설정한다. 해당 요소는 모델링 및 실용적인 관점에서 최적이 아닌 것으로 보여진다.
실용적인 측면에서 NLP model의 vocabulary V는 대체로 큰 사이즈를 가진다. 기존의 연구의 설정처럼 $E \equiv H$일 경우, hidden layer size H가 증가함에 따라 embedding matrix인 (V * E)의 크기 또한 비약적으로 커질 것이다. 따라서 ALBERT는 embedding size E와 hidden layer size H를 독립적인 수로 설정하여 파라미터를 보다 효율적으로 사용할 수 있게 설계했다. One-hot vector를 직접적으로 hidden space에 투영하는 대신 H 보다 작은 차원을 가진 embedidng space E를 거쳐 hidden space로 갈 수 있도록 E를 H보다 작은 수로 설정하는 것이다.
- $O(V \times H)$ to $O(V \times E + E \times H)$
- ex) V = 30000, H = 500, E = 100
- $O(V \times H) = 30000 \times 500 = 1500$만
- $O(V \times E + E \times H) = 30000 \times 100 + 100 \times 500 = 305$만
이때, 모든 word piece에 대해 E는 같은 값을 사용한다.
Cross-layer parameter sharing
ALBERT는 cross-layer parameter sharing을 통해 파라미터 효율성을 높인다. Parameter sharing은 모델의 각 레이어의 파라미터를 공유하는 reduction technique이다. 파라미터 공유 기법은 feed-forward network sharing, attention parameter sharing와 같이 여러 방법을 사용할 수 있다. ALBERT는 전체 파라미터를 공유하는 것을 설정값으로 한다.
위의 그림은 BERT-large와 ALBERT-large 모델에 대한 L2 distance, cosine similarity의 측정 그래프이다. BERT-large 모델은 파라미터의 안정성이 떨어져 진동(oscillating)하지만 ALBERT-large 모델은 파라미터가 안정적으로 수렴한다.
Inter-sentence coherence loss
BERT는 NLI(Natural Language Inference), QA(Question Answering)와 같은 downstream tasks에서 모델이 좋은 성능을 보이기 위한 요소로 NSP(Next Sentence Prediction) loss를 제안한다. NSP는 연속된 segment가 원래 이어지는 문장인지 아니면 다른 문서에서 추출된 것인지를 예측하는 binary classification loss이다. NSP의 샘플 데이터 구성은 다음과 같다:
- Positive examples: 학습 구문에서 연속된 segment를 추출
- Negative examples: 서로 다른 문서에서 segment를 추출
- Pos example과 neg example은 50:50 비율로 추출된다.
RoBERTa와 같은 최근 이뤄지는 BERT 기반의 논문들은 대체로 NSP를 제거하거나 다른 개선 방안에 대해 언급한다. ALBERT는 NSP가 효율적이지 못한 이유가 task로써 너무 쉽기 때문이라고 추정하여 SOP라는 새로운 loss를 제시한다. SOP는 sentence-order prediction를 의미하며, 샘플 데이터의 구성은 다음과 같다:
- Positive examples: 학습 구문에서 연속된 segment를 추출
- Negative examples: positive example과 동일하게 추출된 segment의 순서를 바꿈
NSP와 비슷하다고 할 수 있지만, negative example이 바뀐 순서에 대한 정보를 예측하게끔 유도함으로써 모델이 discource-level에 대한 세분화된 차이를 학습하게 한다. NSP는 SOP 문제에 대해 전혀 예측할 수 없지만 SOP loss로 학습된 모델은 NSP loss에 대한 예측이 가능하다(이는 아마도 일치하지 않는 일관성 신호를 분석함으로써 가능한 것임).
Experiments
Model size에 대한 세부 정보는 아래 표에서 확인할 수 있다.
ALBERT-xxlarge 모델의 layer가 12인 이유는 24인 레이어 모델과 성능 차이가 별로 나지 않으면서 computational cost는 많이 차이나기 때문이다. 모델의 input size는 최대 512이며 모든 모델은 125,000 steps 만큼 학습되었다.
Factorized embedding parameter에 대한 실험표는 다음과 같다.
BERT-large 모델과 비교하여 ALBERT-large의 파라미터 수는 무려 18배가 차이나며, 속도도 ALBERT 모델이 1.7배 가량 빠르다. 또한, ALBERT-xxlarge 모델은 BERT-large에 비해 적은 파라미터 수를 가짐에도 모든 벤치마크에서 BERT-large보다 더 나은 성능을 보여준다.
위의 표는 cross-layer parameter sharing의 실험표이다. E=768, E=128인 환경에서 공유되는 파라미터 설정값에 대한 성능을 실험한 표이다. 대체적으로 아무 파라미터도 공유하지 않는 모델보다 shared-FFN 모델이 성능 저하가 가장 많이 일어났다. E=128인 모델에서는 신기하게도 shared-attention 모델이 파라미터를 공유하지 않는 모델보다 더 나은 평균 성능을 보였다.
하지만 결국 파라미터가 늘어나는 것에 비해 정확도가 엄청난 차이를 보이는 것이 아니기 때문에 all-shared 모델을 채택한다.
ALBERT-xxlarge는 BERT-large 모델의 확장된 버전인데, 그만큼 학습 시간이 3배 정도 느리다. 원래 오래 학습할수록 모델의 정확도가 높아지기 때문에, 두 개의 모델을 같은 시간동안 학습할 경우 얼만큼의 성능을 보이는지 실험한 결과가 위의 표이다. 학습 속도가 3배 느린 ALBERT-xxlarge가 같은 시간동안 학습되었는데도 불구하고 BERT-large보다 뛰어난 결과를 보여준다!
My Opinions
ALBERT는 BERT 기반의 모델 구조를 따라가지만, 훨씬 적은 파라미터 공간을 차지하며, ALBERT-large는 무려 학습 시간이 1.7배나 빠르다! Pre-training은 큰 사이즈의 모델을 사용하여 성능을 높이는 것이 당연하다고 생각했지만, 모델의 파라미터를 줄이면서도 성능을 높일 수도 있다는 새로운 관점에 대해서도 생각해 볼 수 있었다. 무엇보다 제한된 GPU/TPU로도 좋은 성능의 모델을 개발할 수 있다는 가능성을 증명한 논문이라고 할 수 있다.
논문에서 parameter-sharing 기법을 사용하는데, 파라미터의 값을 공유하는 것이 과연 의미가 있을까? 라는 생각을 했지만, 비슷하거나 오히려 좋은 성능을 보였던 부분이 가장 인상 깊은 논문이었다. 논문은 아래 링크를 참고해주세요