[논문 리뷰] ELECTRA: PRE-TRAINING TEXT ENCODERS AS DISCRIMINATORS RATHER THAN GENERATORS

장우솔·2022년 4월 11일
0

NLP

목록 보기
5/17

논문 리뷰에 앞서, 이해를 돕기 위해 ELECTRA를 짧게 정리해놓는다.

language Model 발전 순서

"통계적 언어 모델"
고정된 확률을 할당하고, 각 단어를 모두 독립된 단어로 취급, 따로 훈련 필요없이 데이터셋이 주어지면 확률 확인한다.

"신경망기반 언어모델"
단어를 분산표현으로 전환–고차원벡터 : 임베딩 단어끼리 얼마나유사한지 판단할 수 있게 섬세하게 표현했다. RNN과 같은 모델

"masked 언어모델"
문장이 주어지면 문장일부분 마스킹하고 어떤 단어가 들어갈 것인가 주변단어를 살피게되고 모델이 학습, 문맥을 이해하게끔 학습이 된다.
nlu(u:understand)가 가능한 모델 : bert, GPT-3

masked 언어모델 한계
1. masked 언어모델은 데이터가 많이 필요하고 모델도 엄청 커서 규모(저장공간)= 비용이 많이 든다.
2. BERT 같은 Masked model은 학습하는데 15%정도 가려서 학습하니까 학습은 전체 데이터셋에서 15%만 사용. 그러니까 아주 많은 데이터가 필요하고 나머지 토큰들은 낭비하게 된다.

그래서 Electra로 훈련속도를 줄인다. 토큰들은 낭비하지 않게 replaced token detection을 제안한다.

  • replaced token detection
    mlm이 만들어낸 문장의 각 토큰이 원본데이터에 있는 토큰인지, 만들어낸 가짜 토큰인지 True, Flase로 판별한다. 모든 토큰을 다살펴야하고, 주변문맥을 다보게된다.
    그래서 mlm이 학습하듯 문맥을 학습하게 되고 모든 토큰의 이진분류를 해야하기에 모든 토큰에 대한 loss를 구해야하고 즉 이는, 모든 데이터를 학습하는 효과가 있다.
  • 기존의 GAN
    discriminator는 generator가 만든 가짜를 진짜로 인식하면 generator에게 loss를 조금주고 가짜를 가짜로 인식하면 더 잘 맞출 수 없게 generator에 loss를 많이 준다. 이러한 네트워크를 "적대적 네트워크" 라고한다.(adversarial network) : 서로의 실수를 유발하고 적대적으로 동작하며 학습한다.
    하지만 text는 GAN에 사용 못한다. 왜? 그림은 90% 이미지가 존재하는데 단어는 90%가 없다.

기존의 GAN과는 다르게 mlm은 Likelihood를 Maximize 하게 학습한다.
무조건적으로 문맥적으로 말이 되게 만든다.

  • Electra 과정
    input --> mlm --> fake sentence --> Electra(True, False)

  • masked model에서 기존 mlm은 학습시키는 모델론 transformer encoder 하나.

  • Electra에서 기존 mlm은 학습시키는 모델론 transformer encoder 두 개.

  • weight sharing은 파라미터 수를 줄이는 것 자체로 normalization되는 효과가 있고 global minimum에 수렴하는 속도도 빨라진다. 하지만 electra에 적합 하지 않다.

    	* 왜 모든 weight sharing하는 것이 적합하지 않은가?
    	mlm(like gener), electra(like discrim) 크기를 맞춰줘야만 모든 weight share이 가능했다. 하지만 이는 메모리에 부담이 돼서 임베딩에만 weight sharing 진행한다.
    	mlm에서 학습해서 나온 값이 어떤 단어가 마음에 안들어서 생성을 하나도 하지 않았다면 electra는 그 단어를 튜닝할 수 없다. 임베딩이 편향적으로 될 수있다. (= generator에 의존적으로 되는 것) 그래서 임베딩층을 sharing 해주는 것이 효율이 좋았다.














1. introduction

현재 state-of-the-art representation learning 기법은 일종의 denoising autoencoder 학습이다. 입력 시퀀스의 토큰 중 약 15% 정도를 마스킹하고 이를 복원하는 masked language modeling (MLM)이라는 태스크를 통해서 학습을 한다. MLM은 기존의 conventional language model의 학습에 비해 양방향 정보를 고려한다는 점에서 효과적인 학습을 할 수 있지만 전체 토큰 중 15%에 대해서만 loss가 발생하여 학습비용이 많이 든다는 문제가 있다. 따라서 논문에서는 이 문제를 해결하기 위해 Replaced Token Detection (RTD)이라는 새로운 pre-training 태스크를 제안한다. RTD는 generator를 이용해 실제 입력의 일부 토큰을 그럴싸한 가짜 토큰으로 바꾸고, 각 토큰이 실제 입력에 있는 진짜(original) 토큰인지 generator가 생성해낸 가짜(replaced) 토큰인지 discriminator가 맞히는 이진 분류 문제다.

ELECTRA는 RTD 태스크로 입력의 15%가 아닌 모든 토큰에 대해서 학습하기 때문에 상당히 효율적이면서도 효과적이다. ELECTRA모델의 스케일을 키워도 성능은 여전히 좋았다. RoBERTa와 XLNet에 대해, 그 계산량의 1/4만 사용해도 비슷한 성능을 보였고, 같은 만큼 계산을 했을 때는 더 뛰어난 성능을 보였다. 논문에서 제안한 사전학습 태스크는 마스킹된 일부 토큰이 아닌 전체 인풋 토큰에 대해 정의되는 태스크이기 때문이다.











2. method

Replaced Token Detection의 기본 구조

그림을 보면 일반적으로 generator는 discriminator에 비해 작은 구조를 갖고 있음을 알 수 있다. GAN과 비슷한 구조를 띄지만 maximum likelihood를 이용해 generator를 학습한다는 점에서 다릅니다. 사전학습이 끝나면, 생성 모델은 더이상 사용하지 않고, 판별 모델을 다운스트림 태스크에 대해 fine-tuning 한다.


G, D 학습방법

Generator는 BERT의 MLM과 학습하는 방법이 똑같다.

Discriminator는 입력 토큰 시퀀스에 대해서 각 토큰이 original인지 replaced인지 이진 분류로 학습한다.

이는 GAN의 훈련 방식과 비슷해 보이지만, 몇 가지 중요한 차이점이 있다.


GAN과 차이점

  1. Generator가 원래 토큰과 동일한 토큰을 생성했을 때, GAN은 negetive sample (fake)로 간주하지만 ELECTRA는 positive sample(real)로 간주한다.

  2. Generator가 discriminator를 속이기 위해 adversarial하게 학습하는 게 아니고 maximum likelihood로 학습한다.
    Generator에서 샘플링하는 과정 때문에 역전파가 불가능하고, 따라서 adversarial하게 generator를 학습하는 게 어렵기 때문이다.

  3. GAN에서는 생성 모델에 noise 벡터를 인풋으로 주는 반면, 본 논문의 생성모델은 그렇지 않다.

최종적으로 ELECTRA는 대용량 코퍼스에 대해서 generator loss와 discriminator loss의 합을 최소화하도록 학습한다. 샘플링 과정이 있기 때문에 discriminator loss는 generator로 역전파(back-propagate) 되지 않으며, 위의 구조로 pre-training을 마친 뒤에 generator는 더 이상 사용하지 않고 discriminator만 취해서 downstream task으로 fine-tuning을 진행한다.










3. Experiments


3.1 Experimental Setup

ELECTRA의 성능 평가를 위해 General Langauage Understanding Evaluation (GLUE) 벤치마크와 Stanford Question Answering (SQuAD) 데이터셋을 사용한다. 모델의 구조와 대부분의 하이퍼 파라미터 역시 BERT와 동일하게 세팅한다.



3.2 Model Extensions

ELECTRA의 성능을 향상시키는 몇 가지 기법을 제안한다. 실험은 BERT-Base와 동일한 크기의 모델과 데이터를 사용한다.

Weight sharing

Generator와 discriminator는 모두 Transformer 인코더 구조이기 때문에 두 네트워크의 가중치를 공유하여 학습하는 weight sharing 기법을 써볼 수 있고, 이로써 pre-training의 효율 향상을 기대할 수 있다. 두 네트워크가 동일한 크기일 때 모든 가중치를 공유할 수 있다.
하지만 연구 결과 G는 더 작은 것을 사용하는 것이 효과적이었기 때문에, 임베딩(토큰 임베딩 & 위치 임베딩)은 weight sharing 했다. 임베딩 크기는 판별 모델의 히든 차원과 같은 것을 사용했고, BERT와 마찬가지로 G에서 인풋과 아웃풋의 토큰 임베딩은 tie 하여 학습하였다.

임베딩 부분을 셰어하는게 성능이 높은 이유: D는 인풋 토큰에 대해서만 update하고 G는 단어사전과 softmax에 대해 전반적으로 업데이트된다.

Smaller Generators (왼쪽 그림에 대한 설명)

Generator와 discriminator의 크기를 동일하게 가져간다면, ELECTRA를 학습하기 위해서는 BERT와 같은 일반 MLM 모델에 비해 단순 계산으로 거의 두 배의 계산량이 필요하다. 이 문제를 완화하기 위해서 generator의 크기를 줄여보는 실험을 진행한다.

다른 하이퍼 파라미터는 그대로 두고 레이어의 크기만을 줄인다. 여기서 레이어의 크기는 히든 레이어의 크기, FFN의 크기, 어텐션 헤드의 수를 의미한다.
그림을 통해 알 수 있듯이 discriminator의 크기 대비 1/4 - 1/2 크기의 generator를 사용했을 때 가장 좋은 성능을 보인다.

이러한 현상이 발생하는 이유
Generator가 너무 강력하면 discriminator의 태스크가 너무 어려워져서 이런 현상이 나타날 수 있다. (generator가 강력하면 softmax 분포가 몇몇 토큰에 치우쳐 있을 가능성이 높고 샘플링 결과가 다양하지 않기 때문에 discriminator가 효과적으로 학습할 수 없을 수 있다.)
또한, discriminator의 파라미터를 실제 데이터 분포가 아닌 generator를 모델링하는 데 사용할 수도 있다.

Training Algorithms (오른쪽 그림에 대한 설명)

네 개의 다른 모델로 성능을 살펴본 결과 G와 D를 공동으로 학습시키는 방식인 Electra가 가장 좋았다.

적대적인 학습이 maximum likelihood 기반의 학습보다 성능이 낮은 원인

  1. 적대 방법으로 학습할 때 sample efficiency가 떨어졌기 때문에 MLM 성능은 58%로 성능이 안좋다. Maximum likelihood로 학습한 generator는 65%였다.
  2. 학습된 generator가 만드는 분포의 엔트로피가 낮아서 Softmax 분포는 하나의 토큰에 확률이 쏠려있고, 이러면 샘플링할 때 다양성이 많이 떨어진다.







3.3 Small Models

GPU에서 빠르게 학습할 수 있는 작은 모델을 실험해본다. BERT-base에 해당하는 하이퍼 파라미터 수, 시퀀스 길이 (512->128), 배치 크기(256->128), 모델의 히든 차원(768->256), 토큰 임베딩 크기를 줄였다(768->128). 그 결과 ELECTRA-small은 같은 계산량의 BERT-small보다 성능이 좋았고, 훨씬 계산이 많이 필요했던 GPT보다도 좋았다.







3.4 Large Models

큰 모델을 학습시켜 보았을 때, ELECTRA는 XLNet이나 RoBERTa 사전학습에 필요한 계산량의 1/4만 사용해도 비슷한 성능이 나왔다.







3.5 Efficiency Analysis

인풋의 일부 토큰을 마스킹하고, 이 작은 부분집합에 대해서만 학습 목적함수를 적용하는 것은 효율성이 떨어진다고 주장하였다. 하지만, 이 주장이 사실인지 확실하지 않고, 모델은 일부 토큰만을 예측하더라도 수많은 인풋을 받아들이기 때문에, MLM이 정말 비효율적이라는 증거는 없다. 따라서 BERT와 ELECTRA 방법의 중간에 있는 방법들을 실험해 봄으로써 사전학습 과제의 효과를 검증해 보았다.
실험 세팅
ELECTRA 15% : ELECTRA의 구조를 유지하되, discriminator loss를 입력 토큰의 15%만으로 만들도록 세팅한다.
Replace MLM : Discriminator를 MLM 학습을 하되, [MASK]로 치환하는 게 아니고 generator가 만든 토큰으로 치환
All-Tokens MLM : Replace MLM처럼 하되, 일부(15%) 토큰만 치환하는 게 아니고 모든 토큰을 generator가 생성한 토큰으로 치환

Table5: ELECTRA는 ELECTRA 15%와 Replace MLM 보다 훨씬 좋은 성능을 보였고 All-Tokens MLM은 그나마 ELECTRA에 가까운 성능을 보이며 BERT와 ELELCTRA의 성능 차이를 많이 줄였습니다. 전반적으로 결과를 봤을 때, ELECTRA가 학습 효율도 굉장히 좋고 [MASK] 토큰에 대한 pre-training과 fine-tuning 간의 불일치 문제도 상당히 완화시킨 것을 알 수 있다.

figure 4: 추가적으로 히든 레이어 크기에 따른 BERT와 ELECTRA의 성능 변화 실험을 진행한다. Figure 4에서 볼 수 있듯이 히든 레이어의 크기가 작아질수록 BERT와 ELECTRA의 성능 차이는 커진다는 사실을 알 수 있으며, BERT에 비해 ELECTRA는 모델이 작아도 매우 빠르게 수렴함을 알 수 있다.








4. Conclusion

본 논문에서는 새로운 Self-supervised learning 사전 과제로 Replaced Token Detection을 제안했다.
핵심 아이디어는 작은 생성 네트워크가 만들어낸 고품질의 negative sample을 사용해 텍스트 인코더가 인풋 토큰과 가짜 토큰을 구분할 수 있도록 학습시키는 것이다.
MLM과 비교할 때, 본 논문에서 제안한 방법은 계산적으로 효율적이면서 다운스트림 태스크에서 성능도 좋았다.























































참고
Electra 논문
관련 유튜브

profile
공부한 것들을 정리하는 블로그

0개의 댓글