본문 바로가기
Deep Learning/논문정리

XLNet : Generalized Autogregressive Pretraining for Lanuguage Understanding(NIPS 2019)

by 대소기 2022. 5. 9.

 

 

Paper link : https://arxiv.org/abs/1906.08237

 

1. Introduction

 

* NLP 분야에서 unsupervised learning은 대규모 데이터를 통한 pre-training 과정과 이어지는 fine-tuning 과정을 통해 많은 성과를 이뤄냈다.

* 그 중에서도 AR(Auto Regressive) modeling과, AE(Auto Encoding) 은 가장 성공적인 pre-training objectives이다.

 

AR model

* AR model은 text corpus의 확률분포를  auto regressive model을 통해 계산한다.

* 만약 text sequence가 $x = (x_1, ... , x_T)$로 주어졌다고 해보자.

* AR model은 likelihood를 maximum하는 방식으로 확률분포를 추정한다. 이 때 forward model, backward model 두 가지로 확률분포를 모델링할 수 있다.

  1) forward model

  * $P(x) = \prod_{t=1}^T p(x_t | x_{<t})$

  2) backward model

  * $P(x) = \prod_{t=T}^1 p(x_t | x_{>t})$

 

* neural network와 같은 parametic model은 이러한 conditional distribution을 모델링하도록 학습된다.

* 하지만, 이러한 AR model도 단점이 있다. AR model은 단방향 모델링(forward or backward)밖에 할 수 없기 때문에 bidirectional context information들을 사용할 수 없다는 점이다.

 

 

AE model

* AE model은 AR model과 같이 확률분포를 추정하는 과정을 거치지 않는다.

* 대신 AE model은 corrupted input(making되거나, 일부 단어가 replace된 input을 의미)을 original data로 reconstruct하는 방식으로 훈련한다.

* 특정 확률분포를 modeling하는 것이 아니기 때문에 AE model은 bidirectional contexts를 reconstruction을 하는데 사용할 수 있다. 이러한 AE model중 가장 대표적인 예가 BERT이다.

* bidirectional contexts를 사용하기 때문에 bidirectional information이 담긴 represenatation을 modeling할 수 있게 된다.

* 하지만 이러한 AE model도 단점은 존재한다. 단점은 아래와 같다.

  1) BERT를 예로 들었을 때 corrupted input인 masked token은 real data에서는 존재하지 않는다. 이는 training data와 finetuning에 사용하는 데이터간의 불일치 문제를 야기한다.

  2) 또한 corrupted input으로 인해 AR 모델처럼 결합확률분포를 모델링할 수 없다는 단점이 존재한다. 이는 token들의 발생 확률을 독립적이라고 가정하기 때문인데, 실제 자연어에서는 각 단어들의 발생 확률은 독립적이지 않고, long-range dependency가 존재한다. 실제 자연어의 특성을 oversimplify하는 것 또한 문제이다.

 

 

XLNet의 특징

 

1) Novel Pretraining Objectives

* XLNet은 AR, AE 모델들의 장점만을 취하고, 단점을 제거한 generalized autoregressive model이다.

* XLNet은 먼저 AR의 forward or backward factorization order 대신, 모든 가능한 경우의 수의 factorization order의 log likelihood를 maximize한다. 이를 통해 각 position에 있는 token들은 contextual infromation을 학습할 수 있다. 즉, bidirectional context를 capture할 수 있는 것이다.

* 두 번째로 위에서 설명한대로 XLNet은 generalized AR model이기 때문에 data corruption에 의지하지 않고, 이에 따라 훈련 데이터와 fine tuning 데이터간의 불일치가 발생하지 않는다. data corruption을 사용하지 않기 때문에 input sequence의 단어들을 모두 사용할 수 있고,  BERT에서의 oversimplified consumption인 각 단어들의 등장확률이 독립이라는 가정을 사용하지 않게 된다.

 

2) Improving Architectural designs for pretraining

* pre-training 과정에 Trasnformer XL의 segment recurrence mechanism과 relative positional encoding을 도입하였다. 이를 통해 longer text sequence 처리에 관한 performance를 높였다.

 

# 이전에 Trasnformer-XL 에 관해 정리한 내용이 있으니 참고 바랍니다.

https://soki.tistory.com/121

 

Transformer-XL : Attentive Language Models Beyond a Fixed-Length Context(ACL 2019)

이전에 trasnformer를 정리해 놓은 글이 있으니, 읽기 전에 참고 바랍니다. https://soki.tistory.com/108?category=1077319 Attention Is All You Need, NIPS 2017 - Transformer 논문 리뷰 * Attention is all y..

soki.tistory.com

 

* permutation order를 사용해 모든 input에 대해 계산하는 과정 때문에 단순히 transformer-xl architecture를 적용하는 것은 target이 ambiguous하다는 문제가 발생한다. 본 논문에서는 Transformer-xl을 reparameterize해서 이러한 ambiguity를 개선했다.

 

 

2. Proposed Method

 

2.1 Background

 

conventional AR language model

 

 

* text sequence $x = [x_1, ... , x_T]$가 주어졌을 때 AR LM은 forward autoregressive factorization의 likelihood를 maximize하는 것을 통해 pretrain된다.

* $h_\theta(x_{1:t-1})$은 neural network에 의해 생성된 context representation이다.

* $e(x)$는 x의 embedding을 의미한다(자연상수 e가 아니다 자연상수 e는 exp로 표현되어 있다). 

 

 

conventional AE language model - BERT

 

* 위에서 설명한 conventional AR LM과 반대되는 모델이 BERT인데, BERT는 denoising auto-encoding을 기반으로 한다.

* BERT는 text sequence x 중 일정 비율의 token을 random하게 추출해서 [mask]토큰 $\bar x$로 변경하는 과정을 통해 corrupted sequence $\hat x$를 생성한다.

* training objective는 $\hat x$로부터 $\bar x$를 reconstruct하는 것이다.

* $m_t = 1$ 이라면, $x_t$ 즉, t번째 token이 masked되어 있다는 뜻이고, $H_\theta$는 text sequence x를 hidden vector $H_\theta (x) = [H_\theta(x)_1, H_\theta(x)_2, ... , H_\theta (x)_T]$로 mapping 해주는 Transformer를 뜻한다.

 

conventional AR, AE(대표적으로 BERT) model의 pros and cons

 

1) Independent Assumption

* BERT : joint conditional probability $p(\bar x | \hat x)$를 factorize한다. masked token $\bar x$는 독립이라는 가정을 한다.

* conventional AR : product rule을 사용해 $p_\theta(x)$를 factorize한다. 이 과정에서 독립 가정은 불필요하기 때문에 사용되지 않는다.

 

2) Input noise 

* BERT : BERT로 input되는 [mask] 토큰은 실제 downstream task를 위해 fine-tuning을 할 때 존재하지 않는다. 이 때문에 훈련 데이터와 테스트 데이터간의 불일치 문제가 발생한다. 

* conventional AR : corrupted input을 사용하지 않기 때문에 BERT에서와 같은 문제가 발생하지 않는다.

 

3) context dependency

* BERT : representation $H_\theta(x)_t$는 양방향 contextual information을 사용 가능하다.

* conventional AR : $h_\theta(x_{1:t-1})$은 position t 까지(처음 token 혹은 마지막 token부터)의 정보만을 condtion으로 사용, 단방향 정보밖에 얻을 수 없음.

 

 

2.2 Objective : Permutation Lanuguage Modeling

* 본 논문에서 소개하는 permutation language model은 AR model의 장점을 취하면서 AE model의 BERT처럼 bidirectional contexts를 capture할 수 있다.

* 만약 sequence x의 길이가 T라면(T 개의 단어가 들어있는 문장), $T!$ 개의 각기 다른 순서쌍을 통해 autoregressive factorization을 수행할 수 있다.

* 만약 model paramter에 모든 factorization order에 있어서 공유된다면, 모델은 양 방향에서의 모든 position에 대한 정보를 학습할 수 있게 된다.

 

* $Z_T$는 $length - T $ index sequence $[1, 2, ... , T]$의 모든 가능한 permutation의 집합을 뜻한다.

* 순열 $z \in Z_T$의 t번째 요소와 첫 번째 1~t-1번째 요소들을 나타내기 위해 $z_t$ 및 $z_{<t}$를 사용한다.

* text sequence x에 대해 factorization order를 random하게 sample하고, 이 sample된 factorization order에 따라 likelihood $p_\theta(x)$를 decompose한다.

* 설명만 들어서는 조금 이해가 안 갈 수 있으니 논문에는 없지만 부연설명을 해 보겠다. 

* $Z_T$는 sequence의 token 개수가 T일 때의 permutation 집합이다. 만약 sequence가 '나는 xlnet 이다 .' T=4(마침표도 token에 포함된다)일 경우를 보자. $z \in Z_T = [1,2,3,4], [1,3,2,4,], ... , [4,3,2,1]$ 총 4! = 24개의 permutation 집합이 가능하다.

* z = [1,2,3,4] 즉, factorization order가 '나는 xlnet 이다.' 일 경우의 log likelihood는 $P_\theta('xlnet' | '나는') * P_\theta('이다' | '나는', 'xlnet') * P_\theta(' . ' | '나는', 'xlnet', '이다')$ 가 된다.

* 다시 돌아와서, 앞서 말한대로 model paramter인 $\theta$가 모든 factorization order에 공유되기 때문에 특정 토큰 $x_t$는 $x_i \neq x_t$인 모든 token들에 대한 정보를 얻게 되고, 이에 따라 이 목적함수는 AR모델에 적합하고, AE모델의 단점인 훈련데이터와 테스트데이터의 불일치 문제를 해결할 수 있게 되었다.

 

 

Remark on Permutation

 

* 제시한 목적함수를 통해 훈련하게 되면 original sequence의 order에 대한 정보를 담을 수 없다는 문제가 생긴다.

* 이를 해결하기 위해 original sequence에 해당하는 positional encoding을 embedding vector에 더하는 방법을 사용한다. 

* 또한 factorization order의 permutation은 Transformer의 attention mask 방식을 활용하여 구현할 것이다.

 

permuatation language modeling 예시

 

* 위와 같이 4개의 token으로 이뤄진 sequence가 있을 때 factorization order는 4! = 24 개 이지만, 위 4가지 경우만 확인해보자.

* 위 자료는 $x_3$ token을 예측하는 경우를 표현한 것이다. factorization order에서 $x_3$ 이전에 있는 단어들만 활용해 hidden state를 생성한다. [3,2,4,1]의 경우 3이 가장 앞에 있기 때문에 input sequence의 정보를 전혀 활용하지 않고 memory(이전 segment들의 정보)에 있는 정보만 활용한다. [2,4,3,1]의 경우엔 3보다 앞에 있는 2, 4만 입력으로 사용하는 것을 볼 수 있다.

 

 

2.3 Architecture : Two-Stream Self-Attention for Target Aware Representations

 

 

 

 

Standard Transformer parameterization의 문제

* Standard Transformer paramterization을 통한 naive한 구현으로는 permutation language modeling objective를 달성할 수 없다.

* 예를 들어 다음 token의 확률분포 $p_\theta (X_{z_t} | x_{z_{<t}})$를 softmax formulation $p_{\theta} (X_{z_t} = x | x_{z_t}) = {exp(e(x)^T h_\theta (x_{z_{<t}})) \over \sum_{x'} exp(e(x')^T h_\theta (x_{z_{<t}}))}$ 를 통해 parameterize한다고 해보자.

* 여기서 $h_\theta (x_{z_{<t}})$ 는 $x_{z_{<t}}$의 hidden representation을 나타낸다. 

* 하지만, $h_\theta (x_{z_{<t}})$ 는 자신이 예측할 위치 $z_t$에 대한 정보를 담고 있지 않다. 예를 들어 sequence가 '나는 멋진 xlnet 이다 . ' 로 주어졌을 때, factorization order 중 [2,3,1,4,5] 와 [2,3,1,5,4] 의 경우를 보자. 첫 번째 order에서 token 4에 대한 확률 분포를 예측하기 위해서는 2,3,1 token을 사용하게 된다. 동일하게 두 번째 order에서도 token 5의 확률분포를 예측하기 위해서는 2,3,1을 사용하게 된다. 이에 따라 4, 5라는 각기 다른 token을 예측하고 있음에도 $h_\theta(2, 3, 1)$은 동일한 결과를 보인다. 

* 이 문제를 해결하기 위해 다음 token distribution을 re-parameterize할 필요성이 있다.

 

 

 

문제의 해결 - Two-Stream Self-Attention

* $g_\theta(x_{z_{<t}}, z_t)$는 target position에 대한 정보가 input으로 주어지는 representation 함수이다.

* target position에 대한 정보가 주어지기 때문에 target은 다른데, 앞에있는 token들의 order가 다를 경우 다른 representation을 출력하게 된다.

* representation 생성시 target token $z_t$에 대한 정보를 입력으로 주면 된다는 것은 확인했다. 그런데, 함수 g는 어떻게 설계해야 될까?

* 본 논문에서는 attention을 활용해 target poistion $z_t$에서 t 이전의 context 정보 $x_{z_{<t}}$를 수집하는 방법을 제시한다.

* 이 방법을 통해 parameterization을 하면, 기존 trasnformer architecture와의 차이점이 발생하는데, 이는 아래와 같다.

 

1) token x_{z_t}를 예측하기 위한 $g_{\theta} (x_{z_{<t}}, z_t)$를 계산할 때 token $x_{z_t}$ 를 사용하는 것이 아니라, position $z_t$만을 사용한다. 즉, token '이다'를 예측하려고 한다면, '이다'에 대한 position 정보만 사용해야 하고, '이다'라는 token 자체는 사용하지 않아야 된다는 뜻이다.

2) t보다 뒤에 있는 다음 시점의 토큰 $z_j$, j>t를 예측하기 위해서는 $g_{\theta} (x_{z_{<t}}, z_t)$ 는 token $x_{z_t}$에 대한 정보를 담고 있어야 한다. 즉, 다음 token 계산시에는 현재 시점의 token 정보를 담고 있어야 한다.

 

 

 

Two-Steam Self-Attention의 구조

1) 첫 번째 layer

* 첫 번째 layer의 query stream은 trainable vector $g_i^{(0)} = w$로 구성된다.

* 첫 번째 layer의 word embedding은 $h_i^{(0)} = e(x_i)$로 구성된다.

 

2) self-attention layer m = 1, ... , M

* 각 layer마다 query stream, content stream 두 개의 stream 으로 구성된다.

* 앞서 언급했던 대로 $x_{z_t}$를 예측하기 위해서 query stream은 K와 V를 생성할 때 t보다 이전의 token들만 사용한다.

* content stream에서는 K와 V를 생성할 때 t시점의 token까지 사용하기 때문에 t 시점의 position 정보와 token 정보를 사용할 수 있다. 즉, standard self-attention과 계산 과정이 동일하다.

 

 

 

* 이렇게 구성된 two-stream self attention을 fine-tuning할 때는 마지막 layer를 제외한 다른 layer에서는 query stream은 사용하지 않고, content stream만 사용한다. 마지막 layer의 query representation $g_{z_t}^{M}$은 softmax value 계산을 위해 사용된다.

 

 

 

Partial Prediction

 

* permutation langauge model을 사용하면, permutation으로 인해 optimization이 어려워지고, 수렴 속도가 느려진다는 단점이 있다.

* 이 문제를 해결하기 위해 기존 방법에서는 log likelihood 계산시 sequence 내의 각 token들의 등장확률을 모두 사용했었던 것을, 마지막 몇 개의 token의 확률만 사용하게 되었다.

* 위 식에서 c는 cutting point이다. 즉, target sequence와 non-target sequence를 나누는 경계가 되는 토큰을 뜻한다. 따라서 $x_{z_{>c}}$ 는 target subsequence가 된다.

* 예를 들어 [나는, xlnet, 이다] 라는 sequence가 있다면, log likelihood 계산시 $logp_\theta(이다 | 나는, xlnet )$ 를 사용하는 것이다. 이 때 cutting point는 'xlnet' 이 되고, target subsequence는 '이다' 가 된다.

* 마지막 몇 개의 token을 target으로 잡는 이유는 order의 마지막 몇 개의 token에 항상 가장 많은 contexts 정보들이 들어있기 때문이다(앞서 등장한 단어들이 모두 조건으로 주어지기 때문에).

* 이에 따라 사용되지 않는 query representation 들을 계산하지 않아도 되기 때문에 속도와 메모리 측면에서 효율적이다.

 

 

 

2.3 Incorporating Ideas from Transformer-XL

 

* 본 논문의 objective function이 AR framework에 적합하기 때문에 당시 SOTA였던 Transformer-XL에 적용하게 되었다.

* Transformer-XL에 대해 이전에 정리해놓은 내용이 있습니다. 참고바랍니다.

https://soki.tistory.com/121

 

Transformer-XL : Attentive Language Models Beyond a Fixed-Length Context(ACL 2019)

이전에 trasnformer를 정리해 놓은 글이 있으니, 읽기 전에 참고 바랍니다. https://soki.tistory.com/108?category=1077319 Attention Is All You Need, NIPS 2017 - Transformer 논문 리뷰 * Attention is all y..

soki.tistory.com

 

 

* 만약 sequence 두 개가 $\tilde x = S_{1:T}$, $x = s_{T+1 : 2T}$이고, $\tilde z$ 와 $z$가 [1, ... , T], [T+1, ... , 2T]의 각각의 permutation이라고 해보자.

* 첫 번째 segment $\tilde x$를 처리해서 $\tilde h (m)$을 얻었다고 해보자. 다음 segment x에 대해서는 메모리를 사용해 attention을 업데이트 하게 되고 이는 아래와 같게 된다.

* [. , .]은 sequence dimension을 따라 concatenate한다는 의미이다.

* KV를 보면 이전 segment의 메모리인 $\tilde h^{(m-1)}$을 사용하는 것을 확인할 수 있다.

* query stream도 동일한 방식을 통해 update될 수 있다.

 

Appendix A.7 Visualizing memory and permutation

 

* trasnformer에 xlnet의 objective를 incorporate하는 과정에 대해 더 자세히 살펴보자.

* attention mask를 통해 각 stream에서 어떻게 factorization order를 permute하는지를 살펴볼 것이다.

 

* content stream은 모든 position $z_t$에서 memory를 사용하고, 각 position까지 포함한 token들을 attention의 입력으로 사용하게 된다.

* 이 때 order의 뒷 부분에 해당하는 값들은 attention mask를 통해 masking된다.

 

 

 

2.5 Modeling Multiple Segements

 

Pre-training

* QA와 같은 downstream task에서는 question과 context paragraph 같은 multiple input을 사용한다.

* 이번 절에서는 XLNet을 multiple input을 통해 훈련시키는 방법을 다룬다.

* 먼저 BERT와 같이 random하게 sample한 두 segment를 하나의 segment처럼 concatenate한다.

* BERT에 관한 내용도 아래 링크에 사전에 정리해 두었습니다.

https://soki.tistory.com/98

 

BERT(Bidirectional Encoder Representations form Transformers)

Intro * BERT는 transformer를 이용해 구현되었으며, wikipedia(25억 단어)와 bookscorpus(8억 단어)와 같은 레이블이 없는 텍스트 데이터로 사전 훈련된 언어 모델이다. * trasnformer로 구현된 모델이기 때문에..

soki.tistory.com

* input 도 BERT와 동일하게 [CLS, A, SEP, B, SEP]을 사용한다. CLS는 문장 시작부분에 추가하고, SEP은 segment구분 단위로서 활용한다. A, B는 segment를 뜻한다.

* 다만, BERT와 한 가지 다른 점은 다음 sentence를 prediction하는 방법을 사용하지 않는다는 점이다(성능 향상 없었음).

 

 

Relative Segment Encodings

 

* BERT는 각 단어에 absolute segment embedding(A, B 중 어떤 segment에 속하는지)를 부여하지만, XLNet은 이러한 segment embedding 방식을 relative 하게 부여한다.

* position i, j 쌍에 대해 i, j가 같은 segment에 속한다면, segment encoding을 $s_{ij} = s_+$로, 반대의 경우 $s_{ij} = s_{_}$로 부여한다. 그리고 이 segment encoding 또한 learned parameter로 모델이 학습하게 된다.

* 이 방식은 transformr-xl의 relative positional encoding과 비슷한데, (i, j)가 A, B중 '어떤 segment에 속하는지'가 아닌, '동일한 segment에 속하는가?' 만 고려하기 때문이다.

* 이렇게 계산된 $s_{ij}$는 $a_{ij} = (q_i + b)^T s_{ij}$ 계산에 사용된다. 여기서 $q_i$는 query vector를 뜻한다. 그리고 $a_{ij}$는 다시 normal attention weight에 더해지게 된다.

* Relative Segment Encoding의 장점은 아래와 같다.

1) relative encoding의 inductive bias는 generalization 성능을 향상함.

2) 기존에 absolute segment encoding이 불가했던 두 개의 input segement를 사용하는 task들을 해결할 수 있게 된다.

 

 

2.6 Discussion

XLNet and BERT comparison

* 지금까지 다룬 내용을 통해 BERT와 XLNet은 sequence의 subset만 예측함으로서 partial prediction을 한다는 것을 알 수 있다.

* 이러한 partial prediction 과정은 optimization difficulty를 낮추는 역할을 하기도 한다.

* 하지만 위 식에서 나타나듯이 BERT는 target들간의 dependency를 modeling할 수 없다.

* 예를 들어 sequence 'New York is a city'가 주어졌다고 해보자.

* BERT와 XLNet 모두 New, York 두 개의 token을 prediction target subsequence로 선택한 상황을 보자. XLNet의 factorization order는 [is, a, city, New, York] 이다.

* BERT는 위 식과 같은 log likelihood를 maximize하게 될텐데, 이 때 York에 해당하는 확률과 New에 해당하는 확률은 동일하게 계산된다.

* 반면 XLNet은 York에 해당하는 확률 계산시 앞서 등장한 New token까지 고려하기 때문에 BERT와 달리 New에 해당하는 조건부 확률과, York에 해당하는 조건부 확률은 다르게 된다.

* 때문에 XLNet이 더 deep 한 dependency를 modeling 가능하다고 할 수 있다.

 

 

3. Experiments

 

 

Results

 

RACE Dataset

 

SQuAD dataset

 

여러가지 dataset을 통한 Text Classification

 

GLUE Dataset

 

ClueWeb09-B dataset

 

Ablation Study