https://mldlcvmjw.tistory.com/259
6. 훈련 평가
GAN이 어디에 위치하는지 알아보자. 다음 그림은 모델의 분류 체계를 보여준다. 이 그림에서 어떤 생성 모델이 있는지 알 수 있고 서로 비슷한 것과 비슷하지 않은 것을 확인할 수 있다. 이 그
mldlcvmjw.tistory.com
GAN 과의 차이점
GAN 과 다른 점
1. ELECTRA (Discriminative) : generator 로 부터 전달된 데이터를 가짜로 인식하도록 하는 것이 목표인 모델
GAN (생성 알고리즘) : 생성한 데이터를 discriminator 가 진짜로 인식하도록 하는것이 목표인 모델
GAN 은 최대한 진짜 같은 데이터를 생성하려는 생성 모델과 진짜와 가짜를 판별하려는 분류모델이 존재하여 서로 적대적으로 학습함. 이 둘을 경쟁시키면서 발전시키는 것
추가적으로 Generator 가 원래 토큰과 동일한 토큰을 생성했을 떄에 GAN 은 negative sample 로 간주하지만 ELECTRA 는 positive sample 로 간주
2. GAN 과 다르게 ELECTRA 는 Generator 가 discriminator 를 속이기 위해 적대적으로 학습하는 것이 아니라 maximum likelihood 로 학습함
Generator 에서 sampling 하는 과정 때문에 역전파가 불가능하고 적대적 학습이 어려움
각 토큰마다 확률이 존재하므로 discrete 하기 때문에 미분이 불가능
3. Generator 의 입력으로 noise vector 를 넣어주지 않음
ABSTRACT
BERT(MLM pretraining)
일부 토큰을 [MASK] 로 교체하여 원래 token 을 재구성할 수 있도록 model 훈련
down stream NLP 작업에는 많은 computing 자원을 필요로 함
ELECTRA
본 논문에서는 더 효율적인 pre-training 작업을 제안함
BERT 와 같이 원본을 예측하는 모델 대신
generator netowork 를 통해 해당 ID 가 손상된(생성된 generator sample) token 의 ID 인지 여부에 대해 학습함
BERT 와 동일한 모델 크기, 데이터, computing 자원을 가지고 실험을 하여 비교하였음
기존의 MLM 보다 효율적이며 동일한 model size, data, compute 에서 BERT, XLNet 보다 우수함을 보임
1. INTRODCTION
learning denoising autoencoders가 현재 최고 성능 (Vincent et al., 2008)
unlabled input seq 인 subset 을 선택 15% 정도의 토큰을 마스킹 (BERT) 하거나 해당 토큰을 attention 하여 사용 (XLNet) 하는 방법을 통해 원본을 복구하도록 학습함
이러한 MLM 접근 방식은 network 가 토큰의 15% 만 배우므로 일정 성능을 내려면 상당한 계산 비용이 발생하게 됨
본 논문에서는 replaced token detection 을 제안함 모델은 실제 입력 token 을 generated 된 sample 과 구별하는 방법을 학습함 (이진 분류 문제로 정의)
일부 token 을 작은 masked language modeling 의 확률분포로 부터 sampling된 결과물로 대체하여 입력을 손상시키는 방법을 사용
러한 corruption 절차는 network 가 [MASK] 를 볼 때 발생하는 불일치 문제 (pre-training 시에는 token 이 있지만 down stream 작업에서 미세조정되는 경우에는 [mask] 토큰이 없는 불일치 문제) 를 해결함 (XLNet 은 해당문제를 해결하고 있음)
다음 절차로 모든 token 에 대해 original token / replacement token 인지 예측하는 discriminator network 를 학습함
discriminator 의 주요 이점은 모델이 모든 input 에 대해 학습한다는 것 (masking 된 small subset 보다 계산 효율이 높음)
GAN 과 유사해 보이지만 GAN 을 텍스트에 적용하기 어렵기 때문에
손상된 토큰을 생성하는 generator 가 maximum-likelihood 로 훈련된다는 점
adversarial 하게 학습하지 않는다는 점에서 GAN 과는 다르다 (Text 는 Adversarial 이 쉽지 않음)
이전 작업과 마찬가지로 Transformer 텍스트 인코더를 pre-training 시에 적용하였고 down stream 작업에서 fine-tuning 이 가능함
ablation 에서 모든 input 에서 학습하면 BERT 보다 훨씬 빠르게 학습할 수 있음을 확인하였음. 또한 ELECTRA 가 완전히 훈련되었을 때에 downstream task 에서 더 높은 정확도를 보였음
현재 대부분의 사전 훈련 방법은 성능을 내기 위해 많은 computing 자원이 필요함 더 많은 컴퓨팅을 이용한 사전 훈련은 높은 down stream 정확도로 이어져 성능 측면에서 고려가 많이 이루어지지만 본 논문은 downstream task 의 성능 뿐만 아니라 computing 효율성도 중요하다 주장
다양한 크기의 ELECTRA 모델을 훈련하고 다운스트림 성능과 비교한 결과
GLUE 자연어 이해 벤치마크와 SQuAD 질문 답변 벤치마크 에서 BERT 및 XLNet 과 같은 MLM 기반 방법을 훨씬 능가함
ELECTRA-Small 의 경우 single gpu 에서 4일만에 학습되었으며 BERT-small 과 비교하여 score 가 5pt 정도 더 높음
더 큰 GPT model 을 능가하였으며 RoBERTa 의 1/4 의 compute 만 사용하였으나 성능은 일치하였음 (점선부분 확인)
ELECTRA-large 의 경우 RoBERTa 나 XLNet 보다 더 적은 parameter 로 (1/4) 학습하였지만 유사한 성능을 보임
GLUE 에서는 ALBERT를 능가하였고 SQuAD 는 state-of-the-art 성능을 기록하였음
실제 데이터를 까다로운 samples (생성된 sample) 과 비교하는 것이 더 계산측면에서 효율적이며 언어 표현 학습을 위한 기존 생성 접근 방식보다 매개변수 효율적임
2. METHOD
생성기는 토큰의 분포를 통해 output 을 얻을수 있는 모든 generator 로 대체 가능함
모델이 GAN 처럼 구성되었으나 ELECTRA 의 generator 는 maximum likelihood 로 학습되어 적대적 학습과는 다름
사전 학습 이후 discriminator를 통해 down stream 작업을 거침
생성모델 G, 판별모델 D 라는 2개의 신경망을 학습함
각 신경망은 최초의 입력 토큰 x = [x1, ..., xn] 에서 contextualized vector representations 인 h(x) = [h1, ..., hn] 으로 사상시키는 인코더로 구성됨 ( ex. transformer) 주어진 포지션 t 에서 생성 모델은 softmax layer 로 특정 토큰 xt 를 생성할 확률을 산출함
e 는 토큰 임베딩을 나타냄 주어진 포지션 t 에서 판별 모델은 xt 가 실제 데이터인지 예측함
토큰 xt 가 실제 데이터에서 왔는지 생성모델의 분포에서 왔는지 시그모이드 출력레이어로 판별함
각 기호들 정의
X = [x1, x2, ..., xn] : 최초의 입력 토큰
m = [m1, ..., mk] : 마스크를 적용할 랜덤한 포지션 값 (본 논문에서는 마스크 개수 k = [0.15n] 즉 시퀀스의 15% 를 마스크로 적용함
X masked = REPLACE(x, m, [MASK]) : 마스크가 씌워진 토큰 해당 값이 generator 의 입력이 됨
X corrupt = REPLACE(x, m, x^) : Generator 로 부터 변형된 출력. 이 값이 discriminator 의 입력이 됨
xi ^ ~ PG(Xi | Xmask) for i E m 즉 마스크 토큰에 대해 generator 에서 추론된 값
e() 는 임베딩을 의미함 위의 식은 LM 모델의 출력 레이어와 임베딩 레이어의 가중치를 공유하겠다는 의미
생성 모델은 MLM 을 수행하기 위해 학습됨
치환된 x corrupt 에 대해 discriminator 은 각 토큰이 원래 입력과 동일한지 치환된 것인지 예측함
Target classes
original : 이 위치에 해당하는 토큰은 원본 문장의 토큰과 같음
replaced : 이 위치에 해당하는 토큰은 generator G 에 의해서 변형됨
최종적으로는 다음과 같은 loss 로 학습을 진행
GAN 과 비슷해보이지만 몇가지 다른점이 존재함
1.
2. generator 를 학습하는 것은 어려움 generator 으로 부터 sampling 하는 과정때문에 back propagation 이 불가능
위의 문제를 해결하기 위해 강화 학습을 통해 학습시켜보았지만 maximum likeli hood 를 사용하는 것 보다 성능이 좋지는 않았음
위의 loss 를 최소화 시키는 것이 목표가 됨
pre-training 이후 generator 를 버리고 discriminator 를 downstream task 에서 fine-tune 한다
G, D 학습 방법
Generator 는 BERT 의 MLM 과 학습하는 방법이 동일함
Discriminator 은 입력 토큰 시퀀스에 대해 각 토큰이 original 인지 generated 인지 이진 분류로 학습함
GAN 훈련 방식과 비슷해보이지만 몇가지 차이점이 존재함
1. Generator 가 원래 토큰과 동일한 토큰을 생성했을 때에 GAN 은 negetive sample 로 간주하지만 ELECTRA 는 positive sample로 간주함
2. Generator 가 discriminator 를 속이기 위해 adversarial 하게 학습하는 것이 아닌 maximum likeli hood 로 학습함
Generator 에서 sampling 하는 과정 때문에 역전파가 불가능하여 적대적 학습이 어려움
3. GAN 에서는 생성 모델에 noise 벡터를 input 으로 주는 반면 본 논문은 그렇지 않음
3.EXPERIMENTS
3.1 EXPERIMENTAL SETUP
성능 평가를 위해 GLUE 벤치마크와 SQuAD 데이터셋을 사용함
대부분의 실험은 BERT 와 동일하게 Wikipedia 와 BooksCorpus 를 사용하여 pre-training 시켰으며 Large 모델의 경우 XLNet 에서 사용한 ClueWeb, CommonCrawl, Gigaword 를 사용하였음
모델 구조와 대부분의 하이퍼 파라미터도 BERT 와 동일하게 세팅하였음
몇몇 평가 데이터셋은 크기가 작아 random seed 의 영향을 많이 받아 총 10번의 finetuning 결과의 중간값을 최종 성능으로 사용함
3.2 MODEL EXTENSIONS
ELECTRA 의 성능을 더 향상시킬 수 있는 몇가지 기법과 실험결과
실험은 BERT-base 와 동일한 크기의 모델과 데이터를 사용
weight sharing
Generator 과 discriminator 은 모두 Transformer 인코더 구조이기 때문에 두 네트워크의 가중치를 공유하여 학습하는 weight sharing 기법을 사용해볼 수 있음
이를 통해 pre-training 의 효율 향상을 기대할 수 있음
동일한 구조의 두 네트워크가 주어졌을 때에 임베딩 가중치만 공유하고 그 외의 가중치는 따로 학습
혹은 모든 가중치를 서로 공유하는 방법을 고려해볼 수 있음
논문에서는 각 weight sharing setting 에 대해 500K 스탭만 학습시키고 GLUE 로 성능을 평가함
이 실험에서 저자들은 generator 과 discriminator 의 크기를 동일하게 설정함
공유하지 않음 : 83.5
임베딩만 공유 : 84.3
모든 가중치 공유 : 84.4
결과적으로 모든 가중치를 공유하는 것이 가장 좋은 성능을 보였으며 임베딩만 공유하는 방법도 거의 비슷하게 좋은 성능을 기록함
Discriminator 은 입력으로 들어온 토큰만 학습하는 반면, generator 는 출력 레이어에서 softmax 를 통해 사전에 있는 모든 token 에 대해 밀도있게 학습함
ELECTRA 는 결국 discriminator 만을 사용하는데 이때 generator 과 임베딩을 공유해서 학습한 경우의 discriminator 은 훨씬 효과적으로 학습했을 것이고 좋은 성능을 기록한 것으로 보임
"""
성능 자체는 모든 가중치를 공유하는 방법이 좋지만 generator 와 discriminator 의 크기를 반드시 동일하게 맞춰야한다는 제약이 존재함 (?... 어떤식으로 동일하게 맞춰서 실험을 진행한것인가... generator 생성한 부분이랑 그 generator 에 대응되는 discriminator 을 거친 값 (generator 된 토큰들이 각각 real 인지 replaced 인지 에 대해 가진것들) 으로 실험을 한건가?...)
위의 문제때문에 discriminator 만 사용을 하게 되는데 generator를 동일한 크기로 가져가는 것이 학습 효율을 떨어뜨려 더 작은 generator 를 사용하는것이 효과적이어 논문에서 이후 실험은 모두 임베딩만 공유하는 세팅으로 진행하였음
"""
smaller Generator
Generator 과 discriminator 의 크기를 동일하게 가져간다면 ELECTRA 를 학습하기 위해 BERT 와 같은 일반 MLM 모델에 비해 단순 계산으로 두배의 계산량이 필요
이 문제를 완화하기 위해 generator 의 크기를 줄여봄
다른 하이퍼 파라미터는 그대로 두고 레이어의 크기만 줄임 ( 레이어 크기 : hidden layer 크기 , ffn 크기 , attention head 수)
본 논문에서는 크기가 작은 generator 뿐만아니라 unigram generator 로도 실험을 진행함
Unigram generator 는 간단한 baseline 으로 학습 corpus 에 등장하는 unigram 의 분포를 기반으로 sampling 하는 generator
왼쪽의 표를 확인해보면 모두 동일한 step 만큼 학습을 진행하여 작은 모델은 똑같은 계산량, 시간만큼 학습하면 더 많은 step 을 돌것이고 결과적으로 작은모델 입장에서는 계산량 대비 성능을 손해본 것 (실험에서 이부분을 고려하여 평가하여야할듯함)
그럼에도 불구하고 discriminator 의 크기 대비 1/4 - 1/2 크기의 generator 를 사용하였을 때에 가장 좋은 성능을 보였음
논문에서 해석한 바는 Generator 가 너무 강력하다면 discriminator 의 task 가 너무 어려워져 이러한 현상이 일어남
discriminator 의 파라미터를 실제 데이터 분포가 아닌 generator 를 모델링하는 것에 사용할 수 있음
(generator 의 비중이 너무 큰 상태보다 작은 상태에서 더 real data 를 찾아내기 쉬울것이라 생각함
generator 비중이 크면 그 generator 를 기반으로 모델링 되어 generate 관점에서 만들어질 것 같다고 생각하였음)
Training Algorithms
ELECTRA 를 효과적으로 학습시킬 수 있는 알고리즘
Method 챕터에서 소개한 training objective 는 generator 와 discriminator 를 jointly 하게 학습시킴 (두 개 이상일 때 여러 사건이 동시에 일어날 확률에 대해 보겠다)
다음 두가지 학습방식으로 실험을 진행
1. Two-stage 학습
1) generator 만 Lmlm 으로 n 스텝동안 학습시킴
2) discriminator 를 generator 의 학습된 가중치로 초기화하고 LDisc 로 discriminator 만 n 스텝 동안 학습시키는 방식
2. Adversarial 학습
1) GAN 처럼 adversarial training 을 모사하여 학습시키는 방식 (?...)
표롤 확인해보면 Two-stage 학습에서 discriminative object 로 바꾸었을 때에 성능이 쭉 오른것을 확인할 수 있었고
Adversarial 학습이 maximun likelihood 기반의 학습보다 성능이 낮다는 것도 확인이 가능하였음
그 이유는
1. MLM 성능이 좋지 않아서 : MLM 성능은 58% 밖에 되지 않음
Maximum likelihood 로 학습한 generator 는 65% 였음
2. 학습된 generator 가 만드는 분포의 엔트로피가 낮아서
Softmax 분포가 하나의 토큰에 확률이 쏠려있다면 sampling 할 때에 다양성이 떨어짐
ELECTRA 는 훈련 % 를 고려해도 성능이 잘 나오는 것을 확인할 수 있음 단일 GPU 에서 비교 가능한 BERT 모델보다 GLUE 에서 5 point 더 높은 점수를 얻음
그리고 더 큰 GPT 모델보다 훨씬 더 좋은 점수를 얻음
3.3 SMALL MODELS
저자들이 제시한 연구의 큰 향상점 중 하나는 pre-training 의 효율성 향상임
이를 검증하기 위해 저자들은 하나의 GPU 로 빠르게 학습할 수 있는 수준의 작은 모델을 만드는 실험을 진행
공정한 비교를 위해 하이퍼 파라미터를 사용하여서 BERT-small 도 훈련을 진행
Table 1 (위의) 을 보면 ELECTRA-Small 은 뛰어난 성능을 발휘함
BERT-Small 모델과 비교해보면 5점 더 높은 점수를 얻었고 훨씬 더 큰 GPT model 보다 성능이 뛰어남
ELECTRA-small 은 짧은 시간 (최소 6시간) 동안 훈련될 수 있었고 괜찮은 성능을 냈다고 함
더 큰 pre-training 모델에서 추출된 작은 모델에서도 좋은 GLUE 를 얻을 수 있었음
ELECTRA 모델을 BERT-Base 를 훨씬 능가하며 BERT-Large 를 능가함
ELECTRA pretraing 의 경우 컴퓨팅의 1/4 미만을 사용해도 XLNet 및 RoBERTa 와 비슷한 성능을 보임
비슷한 양의 pre-trianing computing 이 주어졌을 때 성능을 훨씬 능가함
3.4 LARGE MODELS
ELECTRA-400K 는 RoBERTa(500K) 나 XLNet 의 단 1/4 계산량 만으로 성능을 보임
더 많이 학습시킨 ELECTRA-1.75 는 이들을 뛰어넘는 성능을 보였고 계산량은 두 모델보다 작음
GLUE 뿐만 아니라 SQuAD 에서도 마찬가지로 ELECTRA 는 좋은성능을 보임
3.5 EFFICIENCY ANALYSIS
ELECTRA 15% : ELECTRA 의 구조를 유지하되 discriminator loss 를 입력 토큰의 15% 으로 만들도록 setting
Replace MLM : Discriminator 를 MLM 학습을 진행함 [MASK] 로 치환하는 것이 아닌 generator 가 만든 토큰으로 치환
All-Tokens MLM : Replaced MLM 처럼 방법을 유지하되 일부 (15%) 토큰만 치환하는 것이 아닌 모든 토큰을 generator 가 생성한 토큰으로 치환
해당 실험결과를 보면 ELECTRA 는 ELECTRA 15% 와 Replace MLM 보다 훨씬 좋은 성능을 보였으며 All-Tokens MLM 은 그나마 ELECTRA 에 가까운 성능을 보이며 BERT 와 ELECTRA 의 성능 차이를 많이 줄임
추가적으로 히든 레이어 크기에 따른 BERT 와 ELECTRA 의 성능 변화 실험을 보면 히든 레이어의 크기가 작아질수록 BERT 와 ELECTRA 의 성능 차이가 커짐을 알 수 있었음 BERT 에 비해 ELECTRA 는 모델이 작아도 매우빠르게 수렴함
4 RELATED WORK
(정리 덜됨...)
1. Self-supervised Pre-training for NLP
self-supervised 는 word representation, LM 과 같은 objectives 지만 contextual representation 을 학습하기 위해 사용되어옴
BERT 는 대형 트랜스포머를 MLM task 에서 사전학습함
대형 트랜스포머를 MLM task 에서 사전학습하는 BERT 모델에 대한 확장이 많이 연구됨
예를 들면, MASS 와 UniLM 은 auto-regressive generative 학습 objective 를 더하여 BERT
5 CONCLUSION
본 논문은 새로은 Self-supervised task 로 RTD 를 제안하였으며
작은 generator network 가 만들어낸 negative sample 을 사용해 text encoder 가 input 토큰을 구분할 수 있도록 학습시키는 것
MLM 과 비교하였을 때 효율적으로 computing 하면서도 downstream task 에서 성능도 좋았음