논문 링크 : https://arxiv.org/abs/1906.08237
AR(AutoRegressive) language model
AE(AutoEncoding) based LM = BERT
망가진 입력값으로부터 원본을 재구성하는데에 목표로 함 (input sequence의 특정 부분에 MASK
적용)
bidirectional context 사용하기 때문에 성능 향상
하지만 MASK
가 pretrain에서는 사용되는데 finetuning에서는 사용되지 않음 = 불일치 문제 발생
예측 token이 MASK
처리 되어 있어서 AR language modeling에서처럼 joint probability 계산 불가
= predicted token과 unmasked token이 서로 독립적이다
= high-order & 장거리 의존성 있는 자연어를 너무 단순화 시켰다는 것
: AR과 AE를 최대한 활용할 수 있는 generalized AR method
: permutation-based (AR) language modeling
인수분해 순서에 따른 모든 가능한 순열에 대해 sequence의 log likelihood를 최대화
→ 각 위치에 대한 문맥은 양방향 모두 학습 "capturing bidirectional context"
데이터 손상에 의지하지 않음 = pretrain-fintune 일치
→ joint probability 계산 가능(token의 독립적 추정 ㄴㄴ)
pretraining 설계 개선
segment recurrence mechanism & Transformer-XL의 relative encoding scheme을 pretraining에 적용 → 긴 text sequence를 갖는 task 성능 향상
Transformer(-XL)을 reparameterize하여 target의 모호성 제거
→ Transformer? 인수분해(factorization) 순서 무작위 & target 모호함 = XLNet에 적용하기 어려움
AR language modeling과 BERT의 language model pre-training을 비교
두 가지 pre-train의 장단점을 비교
text sequence x에 대해 인수분해 순서 z를 sampling하고 인수분해 순서에 따라 likelihood pθ(x)를 decompose 한다. 동일한 parameter θ가 공유되어 학습되는 동안, xt‘는 xi != xt인 모든 element를 보기 때문에 bi-directional context를 capture할 수 있다.
permutation language modeling을 기존 transofrmer에 적용하기는 어려움이 있다. 그래서 softmax를 사용하여 next token의 distribution p를 parameter화 함. h는 masking 후 transformer로부터 생성된 x의 hidden representation을 의미하는데, zt가 식에 없음(의존성이 없음). 결과적으로 유용한 representation을 배울 수 없는 위치에 상관없이 동일한 distribution 예측. 그래서 아래와 같이 next-token의 distirubtion이 target postion을 인식할 수 있게 재구성
제안하는 수식을 transformer architecture에 사용할 수 없는 두 가지 이유가 있다. 첫 번째는 toekn xzt, g세타 를 예측하기 위해 postion zt만 사용해야 한다. context xzt를 사용하면 objective는 너무 간단해짐. 두 번째는 j > t일 때 다른 token xzj를 예측하기 위해 xzt는 완전한 context information을 제공하기 위해 content를 encoding 해줘야 함.
(a) : content stream attention : 예측하고자 하는 토큰의 실제 값 정보를 같이 사용하여 예측 / z는 원래 문장 순서를 random shuffle한 index list, zt는 z의 t번째 요소
(b) : query stream attention : 토근, position 정보를 활용한 self attetnion 기법. 예측하고자 하는 target토큰 이전 정보들의 값(postion embedding, random initialization)을 가지고 예측
Parital Prediction
permutation languagemodeling은 순열로 인해, 최적화가 어렵고 수렴이 오래걸린다. 최적화의 어려움을 해결하기 위해 인수분해 순서에서 마지막 token만 예측하고 z를 non target subsequence(z≤c)와 target subsequence(z>c)로 분할한다. 목적은 non target에서 targe의 log-likelihood를 maximize하는 것이다.
usselected token들을 query representation이 계산되지 않기 때문에 메모리를 아끼고 속도를 향상시킬 수 있다.
transformer-XL에서 사용되는 두가지 중요한 기술 relative positional encoding scheme
과 segment recurrence mechasnism
을 pre-training framework에 포함시켰다.
긴 sequence에서 x˜ = s1:T 와 x = sT +1:2T 두개의 segment를 입력으로 받으며, z˜ 와 z의 [1 · · · T] 와 [T + 1 · · · 2T]의 permutation이라고 가정한다.
z˜를 통해 첫번째 segment를 계산하고, 각 layer m에 대해 얻어진 content representation h˜(m) 를 캐싱한다. next segment x에서 memory를 포함하는 attention update는 다음과 같다.
[.,.]은 sequence dimension사이에 concatenation 의미한다. positional encoding은 original sequence의 실제 position에만 의존하기 때문에 이 계산되면 와는 독립적이다. 이롤 통해 previous segment의 인수분해 순서에 대한 정보 없이 memory 를 caching하여 다시 사용할 수 있다. model은 last segment의 모든 인수분해 순서에대해 메모리를 활용하는 방법을 train한다고 추측한다. (자세한 그림은 부록 A.7 참고) query stream도 동일한 방법으로 계산할 수 있다.
XLNet이 autoregressive framework에서 multiple segment를 어떻게 pre-train하는지 설명한다. BERT와 마찬가지로 random하게 선택된 segment를 concatenation하여 하나의 sequence로 permutation language modeling을 진행한다. XLNet의 input은 [CLS, A, SEP, B, SEP]이다. ablation study(Section 3.7참고)에 따라 XLNet-Large는 next sentence prediction을 수행하지 않았다.
Relative Segment Encoding
[New, York, is, a, city]라는 문장(sequence of words)이 주어졌을 때, BERT와 XLNet 모두 예측할 token으로 [New, York] 2개를 선택하여 log p(New York | is a city)를 maximize 해야 하는 상황을 가정하면,
XLNet은 BERT에서 누락되는 (New, York) pair의 dependency를 capture할 수 있다. 예시를 통해 BERT는 (New, city)와 (York, city)와 같은 일부 dependency를 학습하지만 XLNet은 항상 동일한 대상에서 항상 더 많은 dependenct pair를 학습하고 “denser”한 효과적인 train을 하게 된다.
BERT와 XLNet을 공정한 환경에서 비교 (3가지의 가장 좋은 성능을 낸 BERT와 같은 데이터와 하이퍼파라미터로 학습된 XLNet을 비교)
-> 모든 데이터셋에서 BERT를 능가함!
RACE Dataset
GPT, BERT 앙상블 모델들보다 성능이 좋음!
SQuAD Dataset
Single model들 중에서도 최고 성능을 보임
Text Classification
오분류율도 모두 SOTA 달성!
GLUE Dataset = 9개의 NLU task를 모은 데이터셋
9개 중 7개가 SOTA, 9개 모두 기존의 BERT보다 더 좋은 성능을 보임!
Line1,2 : 기존 BERT에 Transformer-XL을 반영하면 성능이 좋아짐.
Line 3,4 : BERT + Transformer-XL + Permutation LM 에서 성능이 더 좋아짐.
Line 8 : RACE에서는 next-sent pred를 추가하는게 성능이 더 좋아짐.