Deep Learning/Natural Language Processing

[NLP] BERT의 종류

언킴 2022. 8. 15. 16:15
반응형

Contents

     

    BERT는 Transformer의 Encoder 부분을 사용한 모델이다. 현재까지도 BERT의 파생 모델이 많이 제안되고 있으며, 우수한 모델로써 인정받고 있다. BERT에는 가장 기본적인 BERT와 RoBERTa, ALBERT 등 다양한 파생 모델이 존재하는데, 각각의 모델들이 어떠한 차이점을 가지고 있는지 간략하게 알아보자. 

     

    BERT

    BERT는 2018년 구글에서 기계 번역을 위해 제안한 모델이며 "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding"에서 처음 발표하였다. 이는 Supervised Learning 뿐만 아니라 Self-Supervised Learning이 가능하다고 언급하고 있으며, pre-trained 모델이다. 

     

    BERT는 데이터를 입력 받아 Wordpiece tokenizer를 사용하고 있으며 인코더와 디코더의 구조를 가지고 있다. 인코더에서는 문장을 입력으로 사용한다. 입력으로 받은 문장을 input vector, token vector, position vector로 각각 학습하고 이를 합쳐서 최종 input vector를 생성한다. 

     

    그 후 MLM (Masked Language Model)을 통해 모델을 학습한다. MLM은 BERT에서 가장 핵심인 부분이다. 쉽게 말하자면, 빈칸 채우기와 같은 맥락이다. 문장 내에서 일부 토큰을 MASK를 진행하고 MASK된 토큰을 맞히는 형태로 진행된다. 이렇게 스스로 레이블을 만들어 학습하기 때문에 Self-Supervised Learning이 가능한 것이다. 

     

     

    RoBERTa

    RoBERTa는 2019년 "A Robustly Optimized BERT Pretraining Approach"에서 제안한 모델이다. 이는 BERT를 최적으로 학습하기 위한 방법론을 제안한다. RoBERTa에서는 BERT와는 달리 MLM를 통해 모델을 학습할 때 Static 혹은 Dynamic 방식을 통한 마스킹 전략을 제시하였다. 기존의 BERT에서는 데이터 하나에 대해서만 마스킹 처리를 시행하여 학습한다. 그러나 RoBERTa는 이를 10번 복제해 각각의 마스킹을 독립적으로 적용한다. 

     

    ALBERT

    ALBERT는 2019년 발표된 모델으로, BERT의 모델 사이즈가 크다는 단점을 극복한 모델이다. 실험 결과 모델 사이즈를 크게 줄일 수 있었으며, 성능도 동일하거나 보다 높은 수준으로 끌어올렸다. 본 논문에서는 Factorized Embedding Parameterization와 Cross-layer Parameter Sharing를 통해 모델 사이즈를 줄였다. Factorized Embedding은 임베딩 레이러를 만들 때 임베딩 사이즈와 히든 사이즈를 달리 하여 파라미터 수를 줄일 수 있었고, Cross-layer는 각 임베딩 레이어를 재귀적인 구조로 바꿈으로써 파라미터를 공유해 파라미터 수를 줄일 수 있었다. 

     

     

    ELECTRA

    ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately)는 구글과 스탠포드에서 2020년 발표한 모델이다. BERT와 같은 모델은 일반적으로 모델을 사전 학습하는 당시에 학습 시간이 오래 걸린다. ELECTRA는 이를 효율적으로 활용하여 학습 시간을 현저히 줄였다. RoBERTa, ALBERT, BERT와 같은 모델은 모두 MLM 방식을 사용하였으나 ELECTRA는 RTD(Replaced Token Detection)라는 방식을 사용한다. 

     

    ELECTRA는 구조적으로 GAN(Generative Adversrial Networks)와 유사하다. 이는 Generator와 Discriminator로 구성되어 있으며, 서로 속이는 방식으로 진행된다. ELECTRA를 학습할 때에도 Generator와 Discriminator가 필요하다. Generator는 MLM 모델과 같은 역할로  입력을 MLM을 통해 변환한다. Discriminator는 바뀐 단어가 어떤 단어인지 학습한다. 이때 학습이 완료된 Discriminator가 바로 ELECTRA다. 

     

    실제 MLM 모델에서는 전체 입력 토큰의 15%만 랜덤으로 정해서 그 부분에 대해서만 학습을 수행한다. 나머지 85%는 학습이 진행되지 않기 때문에 비효율적이다. ELECTRA는 모든 토큰을 학습하기 위해 RTD 방식을 제안하였다. 이를 통해 하나의 입력 데이터로 더 많은 학습을 할 수 있게 되었고, 이를 통해 성능이 개선되고 학습 시간이 감소되었다.

     

     

    DistllBERT

    BERT 기반 모델은 매우 우수한 성능을 발휘하였다. 그러나 모델의 크기가 기존 모델에 비해 월등히 커졌다. 최근에는 가벼운 모델을 만들어보기 위한 경량화 연구가 진행되고 있으며, DistillBERT 도 그 중 하나이다. DistillBERT는 지식 증류 기법(Knowledge Distillation)은 경량화 기법 중 하나이며 모델의 크기를 비약적으로 줄여 메모리 사용량과 모델의 실행 속도는 크게 개선하면서 정확도는 거의 같거나 조금 낮은 정도로 유지하는 기법이다. 

     

    BigBird

    BigBird는 Self-attention의 단점을 극복한 모델이다. Self-attention은 모든 단어들에 대해서 attention score를 구하기 때문에 시간 복잡도가 $O(n^2)$이 된다. 그렇기 때문에 모델의 입력으로 사용하는 토큰의 수가 제한적이다. BERT의 경우 입력 문장의 길이가 512가 넘는 경우 시간복잡도가 기하급수적으로 늘어나서 시간과 공간복잡도 등에 영향을 준다. BigBird는 Golbal Attention, Local Attention, Random Attention을 적용하여 전체 문장에 대한 Attention과 동일한 성능을 보일 뿐만 아니라 문장의 길이가 긴 Q&A 등과 같은 Task에서는 보다 우수한 성능을 발휘하였다. 

     

    Reformer

    Self-attention은 매우 우수한 성능을 발휘하고 있으나, 연산량이나 메모리 사용량 측면에서는 매우 비효율적이다. 따라서, 2020년 구글ㅇ서는 이를 해결하기 위해 Reformer Transformer라는 모델을 제안하였다. 본 논문에서는 Transformer의 문제를 아래와 같이 언급하였다. 

    1. N개의 레이어를 갖는 모델을 학습할 때 단일 레이어의 모델을 학습할 때보다 많은 메모리가 요구됨.
    2. Feed forward network에서 사용하는 히든 레이어의 차원 수는 보통 매우 크기 때문에 많은 메모리를 사용함.
    3. 길이가 L인 시쿼느에 대한 Attention을 수행할 때 시간 복잡도가 $O(L^2)$가 됨.

     

    첫 번째, Transformer에서는 각 레이어마다 활성화 함수의 출력 값을 저장해두어야 BERT를 역전파하면서 학습할 수 있다. 이는 메모리 사용 측면에서 매우 비효율적이다. 두 번째, Fedd forward network를 할 때 BERT는 3072 부터 4096까지의 hidden size를 사용한다. 또한, 레이어가 12개로 구성되어 있기 때문에 매우 많은 메모리르 사용한다. 세 번째, 시퀀스의 길이가 길어질수록 기하급수적으로 시간복잡도가 증가한다. 

     

    Reformer에서는 이를 극복하기 위해 LSH(Locality Sensitive Hashing) 어텐션을 사용한다. 이는 가까운 어텐션 끼리만 어텐션을 계산하도록 쿼리와 키 간의 유사도를 측정하는 방식이다. LSH의 핵심 아이디어는 하나의 벡터 $x$에 대해서 이와 유사한 벡터 $y$가 있으면 $x$의 해시 값과 $y$의 해시 값이 같을 확률이 높다는 것이다. 

     

     

    'Deep Learning > Natural Language Processing' 카테고리의 다른 글

    [NLP] Pointwise Mutual Information (PMI)  (0) 2023.04.03
    Sequence-to-Sequence (Seq2Seq)  (0) 2022.05.12
    [NLP] Stemming and Lemmatization  (0) 2022.01.18
    [NLP] Tokenization  (0) 2022.01.18
    [NLP] Transformer  (0) 2021.10.21