오늘은 Transfomer-XL에 이어 19년 6월 19일에 나온 XLNet: Generalized Autoregressive Pretraining for Language Understanding를 읽어보았습니다. 저자 깃허브 코드는 zihangdai/xlnet에서 볼 수 있습니다.

XLNet의 깃허브 설명은 다음과 같습니다.

XLNet is a new unsuperivsed language representation learning method based on a novel generalized permutation language modeling objective. Additionally, XLNet employs Transformer-XL as the backbone model, exhibiting excellent performance for language tasks involving long context. Overall, XLNet achieves state-of-the-art (SOTA) results on various downstream language tasks including question answering, natural language inference, sentiment analysis, and document ranking.

페이퍼의 순서에 상관없이 코드 리뷰 위주로 설명한 점 양해 부탁드립니다.!

XLNet에 대한 전반적인 요약(Comparison with BERT)

[New, York, is, a, city]와 같은 tokens가 있다고 가정할 때 [New, York]이 prediction targets이고 log p(New York | is a city)을 최대화 한다고 가정합니다.

BERT와 XLNet의 차이는 아래와 같습니다. XLNet는 [is, a, city, New, York]와 같은 the factorization order를 샘플링한다고 가정합니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c0d197a0-e04a-46ac-b4ea-aac500f3d877/Untitled.png

따라서 XLNet는 (New, York)사이의 dependency를 캡쳐할 수 있습니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/78118b1b-13dc-4f97-8238-8ef40e12a482/Untitled.png

위의 예시를 P(target|context)로 나타내면 위와 같이 인스턴스화 될 수 있습니다.

글에서 소개하겠지만 아래와 같은 수식의 차이점이 BERT와 XLNet의 가장 큰 차이점입니다. 즉, XLNet는 target을 맞추는데 사용되었던 이전의 target이 다른 target을 구할 때 P(x|N U T)로써 도움을 준다는 것입니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/493c6adf-971d-46cc-b1d1-67da7079c128/Untitled.png

T<x 는 x보다 앞서 factorization order를 가진 T에서의 토큰을 나타냅니다.

풀어서 설명하자면, 위의 [New, York, is, a, city]에서 맞춰야할 부분(target, BERT의 Masking이 되는 부분)이 ['New', 'York']이라고 가정합니다. ['New', 'York']이 위에서는 T입니다.

factorization order를 통해 [is, a, city, New, York]와 같이 order되었다고 가정합니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c0d197a0-e04a-46ac-b4ea-aac500f3d877/Untitled.png

일반적인 BERT에서는 P(New| is a city)을 맞추고 New는 더 이상 다른 target을 맞추는데 영향을 주지 않지만, XLNet에서는 New가 York을 맞추는데 non-target으로 들어간다는 점입니다.