subinium / Deep-Papers

Deep Learning Paper Simple Review + Helpful Article

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

XLNet: Generalized Autoregressive Pretraining for Language Understanding

subinium opened this issue · comments

  • https://arxiv.org/pdf/1906.08237.pdf
  • XLNet
  • Transformer-XL의 확장이라고 함
    • 이 친구는 리젝되었지만 성능이 좋아 허깅페이스, 구글 블로그에 올라옴 (저자 같음. 리젝 후 XLNET으로 업그레이드)
    • PR12 박성남님 발표로 살펴보기
    • transformer 문제점
      • long-term dependency (고정 길이라 긴 길이 불가)
      • context fragmentations (이전 시퀀스에 대한 문맥 정보 전달 불가)
    • 해결책
      • Segment-level Recurrence (cache로 다음 시퀀스에게 정보 전달)
        • 메모리만 가능하다면 이전 시퀀스 정보 사용 가능
      • Relative Positional Embeddings
        • 연속적인 시퀀스 학습을 할 수 없기 때문에 기존 positional embedding 불가
    • autoregressive + receptive field로 이해하면 될 듯.
    • evaluation : PPL, BPC, RECL
    • limit : downstream task에서 안해봄, documentation generation 결과 없음, GPT2가 이김

스크린샷 2021-02-02 오후 11 47 26

Concept

  • BERT의 단점
    • MASK는 independent 하지 않지만 독립이라 가정
    • downstream finetuning에서는 마스킹하지 않아 generalization이 어려움
    • 길이에 한정적

Permutation Language Modeling

  • (기존 Masked Language Model이 autoencoding기반이었다면)
  • 순서를 바꾼 새로운 시퀀스를 만듬 (N! case)
    • 이 순서가 원래 순서인 양 autoregressive(ar)하게 다음 단어를 예측하도록 함
      • MASk의 종속적인 관계도 학습 가능!
    • 순서를 바꾼 새로운 시퀀스는 역방향/정방향 둘 다 서브셋으로 포함함 (양방향 문맥정보 학습 가능)
    • 실제 모든 케이스를 하지는 않고, 샘플링하긴 함
  • 셔플된 순서가 3번 토큰을 맞추는 테스크라면
    • [1, 4, 2, 3], [4, 3, 2, 1], [1, 2, 3, 4]로 셔플되었다면 각각 [1, 4, 3], [4], [1, 2] 토큰을 사용하여 예측
  • 섞는 것은 시퀀스가 아닌 마스킹을 섞는 방법을 사용

Two-Stream Self Attention

  • 근데 섞였는데 예측 결과는 어떤 순서인지 어떻게 알까?
  • 섞인 상태에서 Transformer에 넣으면 같은 sequence에 다른 representation이 출력되야 하는 상황도 발생...

스크린샷 2021-02-02 오후 11 06 59

  • 2가지 attention 사용 (그림으로 보면 좀 더 쉬움)
    • Content Stream : 예측하는 토큰의 정보도 들어가 있는 어텐션
    • Query Stream : 예측하는 토큰의 정보는 안들어간 어텐션

ETC

  • 이론적으로는 어느 정도 이해가 가지만...마음에 쏙 와닿지는 않는다.
  • 태환님의 구현적 정리본을 보고 구현을 좀 더 살펴보면 좋을까 싶기도 하다.
  • 핑퐁팀 블로그의 NLP recent model들 정리본이 퀄리티가 상당히 좋았는데..루다 이슈로 다 내려갔다.ㅠㅠ

도움되는 자료