카테고리 없음

NLP - ELECTRA 논문 톺아보기

코코로코코 2023. 10. 20. 16:33
반응형

오늘은 ELECTRA 논문에 대해서 살펴보겠습니다.

 

ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately)를 줄여서 일렉트라라고 이야기합니다.

 

 

ABSTRACT

초록에서는 주로 BERT의 MLM에 대한 한계점을 지적하고 이를 보완한 모델이 ELECTRA라고 이야기하고 있습니다. BERT와 훈련을 동일한 환경에서 진행했을때 상당히 좋은 성능을 보였다고 이야기하고 있고 작은 모델에서도 좋은 성능을 보였다고 이야기하고있습니다. 또한, 강조하는 점은 적은 훈련 자원을 사용했다는데 있습니다. RoBERTa나 XMLNet과 비교해 1/4 만큼의 컴퓨팅 자원을 사용했을때 성능이 비슷하고 비슷한 자원을 사용하면 성능이 더 좋다는 장점들을이야기하면서 논문을 시작합니다.

 

INTRODUCTION

'replaced token detection'이라는 방법이 기존 BERT를 기반으로 사용되던 MLM의 방식의 대안이라는 내용으로 이야기를 시작합니다. 'replaced token detection'을 요약하면 실제 데이터를 가상의 그럴듯한 데이터로 변경하고 이게 원본인지 대체된 데이터인지 맞추는 작업이라고 생각하시면 됩니다. 이게 ELECTRA의 핵심 로직입니다. 여기서 등장하는게 'Generator(생성자)'와 'Discriminator(판별자)'의 개념이 등장합니다. Generator와 Discriminator를 통한 학습 방법은 GAN(Generative Adversarial Networks)의 학습 방식과 유사합니다. 그런데 다른점이 있다고 논문에서 언급합니다. (METHOD 섹션에서 생성자와 판별자에 대해서 알아보면서 GAN과 다른점에 대해서도 이야기해보겠습니다.) 이후 ELECTRA라는 단어로 부르게 된 이유와 BERT에 비해 우수한 점들에 대해서 언급합니다. 내용을 일일히 언급하기에는 길지만 요약하자면 ELECTRA는 기존에 있던 모델들보다 빠르게 훈련되고 비용적 이점이 존재한다는 것을 언급하고 있습니다.

 

METHOD

Generator(이하 생성자)는 기존에 BERT에서 MLM이 동작하는 과정중 [MASK] 토큰이 아니라 해당 위치의 단어를 랜덤한 단어로 변경하는 과정이 있는 것을 기억하실 겁니다. 이 작업과 동일한 작업을 하게 됩니다. BERT모델에서 이 과정을 하는 이유에 대해서 해당 논문에서는 MLM작업이 pre-traine과정에서만 작업이 되는데 이게 Fine-tune과정에서 불일치가 발생하는 것을 방지하고자 이 방법을 사용한다고 이야기하였습니다. 해당의 과정을 담당하는게 생성자의 역할이 됩니다. 그런데 BERT와 다른점은 랜덤하게 생성하는 것이 아닌 '그럴싸한 대체 단어'로 변경한다는 점이 핵심입니다. 그런데 이 과정이 BERT와 동일한 점은 pre-train과정에서 생성자가 사용됩니다. 사전훈련이 완료되면 생성자로는 파인튜닝을 진행하지 않고 오로지 판별자로만 파인튜닝을 진행하게 됩니다.

 

Discriminator(이하 판별자)는 생성자가 변경시킨 문장을 받아 예측을 진행하게 되는데 토큰들이 진짜토큰인자 아니면 변형된 토큰인지 판단하는 작업을 하게 됩니다. 자, 여기서 생각해보면 기존 BERT의 작업과 다른점은 무엇일까요? 바로 다루는 데이터입니다. BERT의 MLM작업에 대해서 다시 상기해봅시다. 훈련 데이터 중 15%를 [MASK] 토큰을 부여하거나, 랜덤한 단어로 변경하거나, 그대로 방치 3가지 방법으로  마스킹을 진행하고 해당 15%의 데이터에 대해서만 훈련작업을 진행했습니다. 그런데 ELECTRA에서는 입력으로 들어온 모든 데이터에 대해서 진짜인지 대체토큰인지 구별하는 작업을 진행하게 됩니다.

ELETRA에서는 생성자와 판별자 두 개의 신경망을 훈련하는 과정을 진행합니다. 생성자는 앞서 이야기했지만 핵심은 '그럴싸한 대체 단어'를 만들어 내는 것이기 떄문입니다. 그렇기 때문에 만들어내는 단어에 대한 확률 분포를 갖는 모델로도 대체가 가능합니다. ELECTRA에서 사용하는 생성자의 확률 분포는 소프트맥스 함수를 활용하여 다음과 같은 식입니다.

판별자는 생성자가 생성해낸 토큰들의 임베딩에 대해서 각 토큰들의 진짜인지 대체토큰인지 분류하는 작업을 진행하게 됩니다. 그래서 시그모이드 함수를 사용한 다음과 같은 식을 사용한다고 합니다.

 

ELETRA의 훈련과정을 짧게 이야기하자면 '생성자는 MLM모델의 형식과 동일한 방식으로 훈련이 되고 판별자는 생성자로부터 나온 샘플에 대해서 진짜와 대체 토큰에 대한 식별을 바탕으로 훈련'을 진행하게 됩니다. 이 훈련과정 중의 손실함수는 당연히 각각의 신경망이기에 다른 손실함수를 사용하고 다음과 같이 훈련하게 됩니다.

 

ELECTRA와 GAN의 차이점은 구조적인 부분인데 GAN의 학습 방식은 생성자와 판별자가 서로 대립되는 구조의 학습 과정으로 경쟁학습이라고 합니다. 그런데 ELECTRA에서는 생성자와 판별자가 공통된 가중치를 사용함으로서 협력구조가 됩니다. 또한, 생성자에 Maximum Likelihood를 통한 학습을 진행하는데 그 이유는 GAN의 방식에는 Text데이터를 적용하기 어려움이 있기 때문이라고 합니다.(Text 데이터는 이산적 데이터임이라고 언급하고 있습니다.) 논문에서 언급 내용을 가져와 요약하면 차이점은 다음과 같습니다.

  1. GAN에서는 생성자가 만들어낸 대체 토큰의 값이 실제 토큰과 같을 경우에도 가짜로 설정하지만 ELECTRA에서는 대체토큰이 진짜 토큰의 값과 같다면 진짜로 설정합니다.
    (이렇게 설정한 이유는 구조적인 이유인 적대적 훈련이 아닌 공동훈련 구조로 인해서 가장 큰 이유이고 이 결과 downstream작업에서 해당 설정이 더 좋은 성능을 보였기 때문이라고 합니다.)
  2. 생성자는 판별자를 속이기 위해서 훈련되는 것이 아니라는 것. 
  3. 생성자에 입력으로 노이즈 벡터를 넣지 않는다는 것

 

최종적으로 ELECTRA는 대용량 코퍼스에 대해서 generator loss와 discriminator loss의 합을 최소화하도록 학습합니다

 

EXPERIMENTS

EXPERIMENTAL SETUP

실험 설정에 대한 설명으로는 실험에서 사용된 데이터셋은 GLUE와 SQuAD 데이터인데 해당 데이터들이 어떤 종류의 텍스트 문제들을 담고 있는지에 대한 설명하고 있으니 직접 데이터를 확인해보시거나 논문에서 확인해보세요. 그리고 평가를 위한 데이터를 영어 데이터만을 사용했지만 미래에는 이 방법으로 다국적 데이터도 적용될 수 있을 것이라 생각한다고 합니다. 실제로도 한국어에 적용한 KoELECTRA, KcELECTRA등이 있기에 맞는 말인것 같습니다. GLUE 평가에서는 분류를 위한 선형층을 하나 올렸고 SQuAD의 경우 XNLet의 질의응답 모듈을 올렸다고 합니다. 이유는 BERT보다 더 정교하기 때문이라고 합니다. 또한 데이터 셋중에 크기가 작은 경우가 있는데 이는 시드에 따라 달라져서 결과가 크게 달라지는 경우가 생길 수 있다고 합니다. 그래서 논문에서는 10번의 파인튜닝 결과의 중앙값을 결과로 사용했다고 언급하고 있습니다. 

실험 설정 내용중 일부

MODEL EXTENSIONS

이 부분이 앞서 이야기한 GAN과의 차이점으로 이야기한 부분이 어떻게 다르게 적용되었는지 ELECTRA의 핵심 로직에 대해서 설명하는 부분입니다. 핵심은 3가지로 '가중치 공유', '작은 생성자(Generator)', '훈련 알고리즘' 3가지입니다.

 

Weight Sharing

논문의 저자들은 성능 향상을 위해 생성자와 판별자의 가중치를 공유하는 방법으로 진행하였습니다. 이유는 생성자와 판별자 모두 Transformer의 Encoder 구조를 갖고 있기 때문입니다. 가중치를 공유하는 방법으로 모든 가중치를 공유하는 방법과 임베딩만을 공유하는 방법 2가지로 실험을 진행하였는데 임베딩만을 공유하는 이유는 밑에서 이야기할 생성자가 작을때 좋은 성능을 보였기 때문입니다. 이에 대한 내용은 아래서 자세히 다루고 가중치고 공유에 대한 이야기를 좀 더 자세히 해보겠습니다. 실험 데이터는GLUE 데이터를 사용하였고 500k 스텝만큼 훈련을 시켰다고 합니다.

  • 가중지 공유 하지 않음 : 83.6
  • 임베딩만을 공유 : 84.3
  • 모든 가중치 공유 : 84.4

모든 가중치를 공유하는것이 가장 좋은 결과를 얻었지만 임베딩만 공유하는 것도 좋은 결과를 얻었는데 이에 대한 해석을 논문에서는 다음과 같이 하고 있습니다.

'판별자는 오직 Sample의 입력을 통한 업데이트가 이뤄질 뿐이지만 생성자는 softmax를 통한 사전의 단어의 밀도를 업데이트한 임베딩을 갖기 때문에 생성자의 임베딩 공유는 판별자의 성능을 향상시킨다.'

가중치 공유중 임베딩 공유가 효과적인 방법인 이유에 대한 설명 중 일부

Smaller Generators

생성자와 식별자의 크기를 동일한 크기로 ELECTRA를 훈련시킬 경우 MLM모델과 비교해서 step마다 2배의 자원이 들어가게 됩니다. 그래서 저자들은 생성자를 작게 만드는 것을 제안했는데 그 방법은 레이어 사이즈를 줄이고 다른 하이퍼파라미터는 고정하는 것입니다. 여기서 레이어의 사이즈를 줄인다는 것은 hidden_size, num_heads, FFN의 크기를 이야기합니다. 생성자의 크기를 줄이는 것 뿐 아니라 unigram을 사용한 생성자로도 실험을 같이 진행하였다고 언급하고 있습니다. 실험은 모두 동일하게 500K 스텝 동안 학습시켰으며 결과는 아래 사진과 같습니다. 모두 동일한 스텝만큼을 학습했기 때문에 작은 모델은 똑같은 계산량, 시간만큼 학습하면 더 많은 스텝을 돌 것이고, 결과적으로 작은 모델 입장에서는 계산량 대비 성능에 손실이 있게됩니다. 그럼에도 불구하고 판별자의 1/4 ~ 1/2 크기의 작은 생성자일때 가장 좋은 결과를 얻었다고 합니다.

이에 대한 결과를 논문에서는 '생성자가 너무 강력하면 판별자의 성능을 저해할 것으로 추측된다. 판별자의 파라미터는 실제 데이터 분포가 아닌 생성자의 모델링에 사용할 수 있다'라고 해석하고 있습니다. 제 생각을 조금 더 덧붙이자면 아마도 생성자의 근본적인 역할은 그럴싸한 토큰을 잘 만들어내는 것에 있다보니 생성자의 비중이 판별자와 비슷한 수준일때 판별자가 어려움을 겪는게 아닌가라고 생각합니다.

작은 생성자가 더 좋은 결과에 대한 논문의 내용 중 일부

Training Algorithms

이 부분에서는 앞서 이야기한 생성자와 판별자를 공동학습하는 과정이 아닌 다른 방식의 훈련 방법 2가지를 실험도 진행했다는 내용에 대해 다루고 있습니다 2가지 방법은 ' two-stage'와 GAN의 학습과 유사한 'adversarial' 방법입니다. GAN의 학습 방법은 해당 논문으로 자세히 알아보고시거나 ELECTRA논문에 추가된 내용이 있으니 찾아보시면 좋을 것 같습니다. 'two-stage' 방법은 생성자와 판별자의 훈련을 따로 진행하는 것입니다. 대신 생성자가 선 학습을 진행하고 나온 결과를 판별자에게 초기화 시키고 이를 바탕으로 판별자의 훈련이 진행됩니다. 그래서 'two-stage'학습입니다. 3가지 학습 방법의 결과는 위 사진(Figure 3)의 오른쪽과 같으며, 생성자와 판별자를 공동학시키는 방식이 가장 좋았습니다. 좀 더 자세히 결과를 살펴보면 위의 two-stage 학습에서 판별자 객체로 바꿨을 때, 성능이 쭉 오른 것을 볼 수 있습니다. 또한 adversarial 학습이 maximum likelihood 기반의 학습보다 성능이 낮다는 것도 알 수 있는데요, 이런 현상의 원인은 다음과 같습니다.

  1. MLM 성능이 좋지 못함 : MLM 성능은 58%. Maximum likelihood로 학습한 generator는 65%였로 MLE가 더 좋았다.
  2. adversarial을 통해 학습된 생성자는 결과의 분포가 낮은 엔트로피를 갖는데 Softmax 분포에서 하나의 토큰에 확률이 쏠려있어 다양한 샘플링이 어렵다.

 

SMALL & LAGE MODEL

이 부분에 대해서는 자세히 언급하기보다 간단하게만 언급하겠습니다. 작은 모델은 GPU환경에서 학습시켜서 다른 모델과 성능을 비교한 것이고 LARGE는 BERT-LARGE와 동일한 조건에서 훈련시켜 나온 결과를 비교한 것입니다. 각 비교결과에 대한 내용이기에 자세히 쓰지는 않고 논문에 실린 테이블만 첨부해두겠습니다. 테이블에 대한 해석은 논문을 참고하시면 될 것 같습니다.

 

ELECTRA-SMALL
ELECTRA-LARGE

EFFICIENCY ANALYSIS

이 부분에서는 ELECTRA 방법의 이점에 대한 이해를 돕기위한 실험의 결과를 추가적으로 서술한 부분입니다. 실험의 설정과 결과는 다음과 같습니다.

  • ELECTRA 15% : 입력 토큰으로 들어온 데이터에 대해서 손실을 15%만 계산합니다.
  • Replace MLM : [MASK] 토큰으로 마스킹하는게 아닌 생성자가 만든 대체토큰으로 마스킹합니다.
  • All-Tokens MLM : Replace MLM과 동일하지만 마스킹 데이터를 15%가 아닌 100%로 합니다. BERT + ELECTRA 버전이라고 생각할 수 있습니다. 이 세팅의 성능을 좀 더 개선하기 위해 sigmoid 레이어를 통해 입력 토큰을 복사할지 결정하는 확률 

실험 결과

실험결과를 통해 얻은 내용은 다음과 같다고 합니다.

  • ELECTRA 15%의 결과를 확인해보면 ELECTRA의 성능이 더 좋음을 확인할 수 있습니다. 이는 모든결과에 대한 손실을 사용하는것이 성능이 더 좋다는 것을 확인할 수 있는 결과였습니다.
  • Replace MLM의 결과를 보면 BERT와 비교해 성능이 근소하게 높은것을 확인할 수 있는데 이는 BERT의 [MASK]토큰을 통한 훈련방법의 missmatch가 성능을 저해하고 있다는 것을 알 수 있었다.
  • All-Tokens MLM : ELECTRA와 굉장히 유사한 성능을 보여주었는데 이는 100%를 생성자의 대체 토큰으로 변경했을때의 결과로 BERT와 ELECTRA의 간격을 줄였다는 결과로 해석하였습니다.

이 실험 결과를 통해서 ELECTRA의 방법이 모든 토큰에대한 학습과 작은양의 사전훈련량으로 파인튜닝과의 미스매치를 개선할 수 있다는 것을 확인했다고 이야기합니다.

 

그리고 BERT와 ELECTRA의 hidden_state의 크기를 변화하여 비교한느 실험을 추가적으로 진행했는데 히든 레이어의 크기가 작아질수록 BERT와 ELECTRA의 성능 차이는 커진다는 사실을 알 수 있으며, BERT에 비해 ELECTRA는 모델이 작아도 매우 빠르게 수렴함을 알 수 있습니다. 이는 ELECTRA는 각 위치에서 가능한 토큰의 분포를 모두 모델링할 필요가 없기 때문에 파라미터 효율성이 더 높다고 추측하지만 이에대한 분석은 더 이뤄져야 한다고 이야기하고 있습니다. 이러한 실험을 바탕으로 ELECTRA가 BERT보다 효율적인 학습을 한다고 이야기합니다.

 

CONCLUSION

결론은 앞서의 과정을 요약하며 설명하고 있고 'replaced token detection'의 핵심은 작은 생성자가 고품질의 대체 토큰을 생성하고 이를 판별하는 인코더를 학습시키는 것이라고 합니다. MLM과 비교해 훨씬 효율적이고 downstream에서도 좋은 성능을 보여주었습니다. 또한 적은 컴퓨팅 자원을 사용하더라도 어느정도 좋은 성능을 보여주었다는 점도 언급하고 있습니다.

 

이상으로 ELECTRA논문에 대해서 살펴보았습니다. 다음에는 ELECTRA 방법을 기반으로 한글 데이터로 훈련된 모델인 KoELECTRA, KcELECTRA에 대해서 다뤄보겠습니다.

반응형