Paper: XLNet: Generalized Autoregressive Pretraining for Language Understanding
자연어 처리(NLP, natural language processing)분야에서 unsupervised(비지도 학습 기반) representation learning은 매우 성공적으로 활용되고 있음.
일반적으로, 이러한 방법들은 먼저 large-scale의 unlabeled text corpus들을 활용해서 pre-training하고, 그 다음에 다양한 downstream tasks에 맞게 fine-tuning을 진행한다.
대표적인 pre-training 방식으로는 AR(autoregressive, 자기회귀) language 모델링과 AE(autoencoding, 오토인코딩) 기반 모델링이 있음.
AR language modeling은 autoregressive model(자기회귀 모델)을 이용하여, text corpus의 확률 분포를 추정하는 방법임.
특정 text sequence x= (x1, ..., xT)가 주어졌을 때, AR 모델링은 forward/backward 확률 분해를 활용해서 시퀀스의 likelihood를 factorize함.
↑forward 확률 분해
xt 이전의 단어들만을 기반으로 계산
↑backward 확률 분해
xt 이후의 단어들만을 기반으로 계산
AR language model의 경우 uni-directional(단방향) context만 encode하기 때문에, deep bidirectional context를 modeling하는 것은 어려움.
하지만, downstream language understanding tasks에서는 bidirectional context information이 대개 요구되기에,
AR language model과 효과적인 pre-training 간의 gap이 발생하게 됨.
반대로, AE(autoencoding) 기반 pre-training의 경우 density estimation(확률 분포 추정)을 하지 않고, corrupted(손상된) input으로부터 원래 데이터를 reconstruct(복원)하는 것을 목표로 함.
대표적인 예시가 BERT임!
이 경우, input된 token sequence에서 일부를 [MASK] token으로 대체하고, 이걸 모델이 origin token으로 recover하도록 하는 방식.
이를 통해 BERT는 bidirectional(양방향) contexts를 기반으로 복원이 가능함.
다만, BERT는 문제가 있음.
1. pre-train과 fine-tune 간 불일치 문제가 존재함. 사전학습 할 때랑 실제 간 데이터 차이가 있다는 것.
2. predicted tokens를 independent하게 처리함. 근데 실제 환경에서는 long-range dependency가 많아서, 독립적으로 assume하는 것이 적합치 않음.
이러한 장단점을 고려하여,
본 논문에서는 XLNet을 제안하고자 함.
이는 AR과 AE modeling의 장점을 결합하며 단점은 보완하는 generalized autoregressive method임.
기존 AR language modeling과 BERT의 pre-trainig 방식을 비교해보고자 함.
주어진 text sequence x=[x1, ..., xT]에 대해서 AR language modeling은 forward autoregressive factorization을 사용해서 pre-training을 하고, 이때 likelihood를 maximizing하는 방식으로 학습됨.

BERT의 경우 denoising autoencoding 방식을 사용함. text sequence 입력 시 특정 비율(ex. 15%)의 단어를 [MASK]로 대체하여 corrupted data를 만듦. 그리고 이 corrupted data를 복원하는 것이 목적.

그럼 앞서 비교한 AR language model과 BERT의 장점을 결합해서 보완해 보고자 함.
AR 모델의 장점을 유지하며, 양방향 context 학습이 가능하도록 설계.
길이가 T인 sequence x에 대해, T!개의 factorization order(순서)가 존재하게 됨.
이를 통해 양방향 context를 자연스럽게 학습할 수 있는 것.
Z_T를 길이가 T인 index 시퀀스의 all possible permutations의 집합이라고 정의해보자.

그러면 permutation language modeling objective function(순열 언어 모델링 목적 함수)수식이 상단처럼 표현되는데,
주어진 text sequence x에 대해 특정 factorization 순서 z를 sampling함. 그리고 likelihood pθ(x)를 분해(decompose)하여 학습 진행함.
모델 파라미터인 θ는 모든 factorization에서 공유되고, 각 단어 x_t는 sequence 내에서 모든 다른 가능한 element와 함께 나오기 때문에, bidirectional context 학습이 가능함.
그리고 AR 모델 framework에 fit하기 때문에, 자연스럽게 independence assumption 및 pre-train & fine-tuning discrepancy 문제도 해결할 수 있게 됨.
특히 Permutation Language Modeling의 경우, 단순 입력 시퀀스 순서를 바꾸는 게 아닌, 확률 factorization order 순서를 조정하는 것이 핵심임.
입력 시퀀스 자체의 원래 순서는 바뀌지 않고, Transformer에서 위치 인코딩 & attention mask 잘 사용해서 학습이 이루어짐.

앞서 permutation language modeling 방식의 장점을 확인했지만, 기존 transformer에 단순 적용하려면 문제가 생김.
일반적인 Transformer에서는 Softmax 함수를 사용해서 next-token 확률 분포를 모델링함.
수식으로 표현하면 하단과 같은데,

hθ(x_z<t)는 transformer network의 hidden representation이고, proper한 masking을 적용하여서 학습된 값임.
다만, hθ(x_z<t)의 경우 z_t에 depend 하지 않음. 이렇게 되면 모~든 위치에서 same distribution을 predict하게 되니, 특정 target position에 최적화된 representation 학습이 어려움.
이를 해결하기 위해, next-token distribution을 re-parameterize(재 매개변수화)하여 target position을 반영하기로 함.

gθ(x_z<t, z_t)을 어떻게 설계할 것인가에 대한 문제를 해결하기 위해, target position z_t에 "stand"해서 context information을 수집하고자 함.
z_t를 기준으로 x_z<t를 attention을 통해 반영하는 방식으로 말이다.
다만, transformer 구조에서는 target token 예측 시의 요구사항이 모순되어 상충됨.
따라서, XLNet에서는 두 개의 서로 다른 hidden representation을 사용함.
(1) Content Representation: hθ(x_z<t)
(2) Query Representation: gθ(x_z<t, z_t)

two-stream의 XLNet 구조는 위와 같음.
Permutation Language Modeling은 optimization 난이도가 높고, 학습 속도 저하를 일으키는 문제가 있음. 이를 해결하고자 Partial Prediction 기법을 적용함.
전체 token을 예측하는 것이 아니라, 일부 token만 예측하도록 설계하는 것.

입력 시퀀스 z를 하단 두 부분으로 나눔.
(1) non-target subsequence: z<=c
(2) target subsequence: z>c
non-target subsequence z<=c를 조건으로, target subsequence z>c의 log-likelihood를 최대화 하는 것이 목적.
왜 z>c가 타겟?
: 주어진 순열에서 가장 긴 context 포함하고 있기 때문.
즉, target subsequence가 풍부한 문맥 정보를 가진 상태에서 예측할 수 있도록 함
hyperparameter K를 사용하여 일부 token만 사용하도록 함.
전체 token 中 1/K개 token만 prediction 대상으로 설정.
→ 선택되지 않은 token이 굳이 query representation계산할 필요 X
→ 속도 상승 및 메모리 절감
XLNet의 object function은 AR framework를 따르기에, SOTA AR 언어 모델인 Transformer-XL을 pre-training framework에 통합함.
Transformer-XL에서
(1) relative positional encoding
(2) segment recurrence mechanism
위 기법을 참고하여, 시퀀스 내 단어 간 관계 학습(1), 이전 segment 정보 재사용(2)에 반영하였음.
특히 둘 중 segment recurrence mechanism 적용 방식에 대해 하단과 같이 정의함.
긴 sequence s를 두 개의 segment로 분리함.
(1) ~x = s_1:T
(2) x = s_T+1:2T
첫 번째 segment에서 학습된 hidden 상태를 cache하여 저장하고, 두 번째 segment 학습 시 이전 hidden 상태를 재사용해서 성능 향상을 이뤄냄

그리고 위치 encoding이라는 것은 original sequence 내의 실제 위치에 따라 결정되기에, 학습된 표현 재사용이 쉬움.
또한, 이전 segment 정보의 캐싱을 통해 다음 segment에서 context 정보 활용 가능함.
따라서 모델이 좀 더 긴 context 학습이 가능하도록 유도됨.
많은 downstream task에서는 multiple input segment가 필요함.
XLNet의 경우 pre-training 단계에서 BERT의 방식을 따르고 하단과 같이 훈련 진행함.
(1) BERT처럼 두 개의 segment random sampling
(2) 두 segment를 연결해서 하나의 sequence로
(3) 같은 context에서 가져온 segment의 경우, 기존 학습 memory 재사용
입력 형식은 BERT와 동일
[CLS, A, SEP, B, SEP]
단, XLNet-Large의 경우 NSP(Next Sentence Prediction)을 object로 사용하지는 않음.
(일관된 성능 향상이 없어서)
BERT는 각 word embedding에 absolute segment encoding을 추가하는 방식임.
즉, 단어의 위치뿐만 아니라, 그 단어가 어떤 세그먼트(A or B)에 속해 있는지도 같이 encoding함.
XLNet은 Transformer-XL의 relative positional encoding 개념을 확장하여
세그먼트도 relative segment encoding함.
시퀀스 내에서 두 위치
i와 j가 같은 세그먼트에 속하는지 여부만 고려함.
이를 통해 모델 일반화 성능 향상 및 2개 이상의 segment가 필요한 task에도 적용 가능하게 함.
BERT와 XLNet 모두 Partial Prediction을 수행함. 전체 sequence의 일부 token만을 예측 대상으로 설정하여 학습하는 방식.
partial prediction을 통해 BERT와 XLNet 모두에서 최적화 난이도를 낮추는 역할을 함.
다만 BERT는 independence assumption으로 인해, 예측 대상 간의 관계를 학습할 수 없음.
XLNet의 경우, permutation language modeling을 사용하기에, BERT의 단어 간 dependency 파악 한계를 극복함.
결과적으로, XLNet의 training signals는 BERT보다 더 dense하기에, 더 많은 관계 학습이 가능함.

BERT와 XLNet의 성능을 Fair Comparison함.
결과적으로, 동일한 데이터/학습 방법을 사용했으나, XLNet이 모든 dataset에서 BERT보다 성능 향상을 이뤄냄.
↑ RACE, ClueWeb09-B 비교. 독해/문서 랭킹 평가
↑ 질의응답 평가(SQuAD)
↑ 텍스트 classification 평가. 같은 모델 크기 조건에서 XLNet이 더 좋은 성능을 도출함.
↑ 자연어 이해 평가(GLUE)
결과적으로 XLNet이 BERT/RoBERTa보다 대부분 task에서 더 높은 성능을 기록함.
(1) Explicit(명시적) Reasoning task에서 XLNet의 성능 향상이 더 큼을 확인할 수 있었음. (ex. SQuAD/RACE)
longer context에서의 이해가 중요한 부분인데, XLNet이 이 부분에서 강점을 보임.
(2) supervised examples이 풍부한 classification task에서도 XLNet은 우수한 성능을 보임.(ex. MNLI, Yelp, Amazon)
XLNet의 각 요소가 성능에 어떤 영향을 미치는지 확인하기 위한 실험.

결과적으로 Transformer-XL과 Permutation Language Modeling이 성능 향상에 큰 기여를 함.
더불어, 메모리 캐싱 제거 시에 긴 context 처리 능력이 저하되는 것을 보였고, span-based 예측 및 Bidirectional Input Pipeline이 중요함.
마지막으로 BERT의 NSP(Next Sentence Prediction)는 XLNet에서 필요하지 않음을 확인할 수 있었음.
XLNet은 generalized AR pretraining 방법으로, Permutation Language Modeling을 objective로 하여, AR과 AE 방식의 각 장점을 결합한 모델임.
XLNet의 neural architecture는 AR objective에 최적화되도록 만들어졌고,
이를 위해, Transformer-XL과 Two-Stream Attention Mechanism을 통합하여 설계하였음.
다양한 task에서 기존 모델보다 높은 성능 향상을 이루어 내었음.