dukim's blog

[WK07-Day031][21.09.14.Tue] Transformer 주요 내용 요약 및 구조 개선에 대한 후속 연구, 논문 선정 팁 본문

Boostcamp AI Tech 2th

[WK07-Day031][21.09.14.Tue] Transformer 주요 내용 요약 및 구조 개선에 대한 후속 연구, 논문 선정 팁

eliza.dukim 2021. 9. 18. 13:57

Intro

  • 이번주는 명훈님 논문 읽기 모임 내용 + 강의 및 과제 내용 + 멘토링 논문 읽기로 계속 진행함
  • NLP 논문 읽기 모임 - Transformer
  • 피어세션 - Transformer
  • 논문 읽기와 강의 내용을 따로 정리하지 않고 하나로 정리
  • 멘토링 - 논문 읽기 - BART, XLNet

학습 내용

[논문 읽기 모임] 02. Transformer

  • Transformer는 고전이다. 다시 볼 때마다 새롭고, 한 줄 한 줄 곱씹어야 될 만한 논문이기 때문. 이번 명훈님 발표 자료를 보니 내가 못 봤던 포인트들이 보였다. 한 번에 다 이해는 못 했지만 현재 이해한 수준에서만 몇 가지 정리해본다.

contribution

  • Sequence Transduction 문제에 대해 기존엔 Attention이 적용된 RNN or CNN 기반의 Encoder-Decoder 모듈을 적용해왔다.

  • RNN의 time step을 순차적으로 계산하기 때문에 병렬연산의 이점을 취하지 못 한다는 문제점이 있었음

  • Transformer에서는 RNN, CNN을 이용하지 않고 Attention만을 이용한 Encoder-Decoder 구조를 제안

  • 병렬화로 학습 속도가 빨라졌으며, Neural 기반으로 기존 통계 기반 방식(PBSMT)을 뛰어넘는 SoTA 달성

  • 2021 현재 NLP 분야 뿐만 아니라 AI 전반에서 중요한 아키텍쳐

    Attention Mechanism

    • Encoder-Decoder 기반 연구에 Attention Mechanism 추가해 성능 향상
      RNNSearch(Bahdanau Attention), Neural Machine Translation by Jointly Learning to Align and Translate, ICLR 2015
      Structured Attention Network, Structured Attention Network, ICLR 2017
    • Transformer 이전에도 Attention 만을 이용한 논문이 존재했었다.
      Decomposable Attention, A Decomposable Attention Model for Natural Language Inference, EMNLP 2016
      End-to-End Memory Networks, End-to-End Memory Networks, NIPS 2015
      [질문] 해당 논문에서의 multi-hop 개념이 transformer의 layer 적층 형태와 관련있는 건가?

몇 가지 새로웠던 포인트들

Positional Embeddings vs. Positional Encodings

  • Embedding: Learnable parameter
  • Encoding: 고정된 상수값
  • 이후 논문인 BERT에서는 Positional Embedding 사용함

Multi-Head Attention에서 Multi-Head를 쓰는 이유

  • 직관: 입력 시퀀스의 서로 다른 부분을 참조, 다양한 표현, 앙상블
  • 논문 내에선 이렇게 주장함: "Multi-head attention allows the model to jointly attend to information from different representation subspaces at different positions."
  • 참고: Jay Alammar - The Illustrated Transformer
    image

Multi-Head Attention에 대한 몇 가지 insight

  1. Self-Attention은 symmetric 하지 않음

  2. 직관적인 이해와는 다르게, MHSA의 각각의 head는 subspace 뿐만 아니라 전체 정보를 보존한다는 연구 결과(즉 각각의 정보가 서로 다른 관점의 정보만을 가지는 것이 아님)

  3. 각각의 HEAD 마다 보존한 전체 정보 가운데 어떤 정보에 가중치를 둘지가 다르다는 연구 결과

  4. Multi-Head를 concat 후에 Attention Matrix는 low-rank.

  5. Cross-Attention이 Multi-Head에 더욱 민감

  6. Softmax를 취한 후의 Attention Matrix는 Low-Rank

Skip-Connection & Two-Layer Feed Foward Network & Layer Normalization

Why Self-Attention

  • Sequence transduction 문제에서 Recurrent와 Convolutional 방식에 비해 다음 세 가지 측면이 개선됨
  1. 레이어당 계산 복잡도

  2. 병렬 처리 가능한 연산량(즉 순차적 연산 수행의 최소 요구량)

  3. 장기 의존성 문제

    • 아래 table 처럼 모든 self-attention layer는 각각의 위치가 직접 연결되어 있으므로 O(1)번의 연산만으로 접근 가능

    • 계산복잡도의 관점에서 self-attention은 시퀀스 길이 $n$ 보다 representation dimensionality $d$가 작을 때, recurrent보다 더 빠름

    • 더 긴 시퀀스 길이를 처리하기 위해서는 $r$개의 주변 단어에 대해서만 attention을 제한하는 방식으로 처리

      image

    • (n * d) @ (d * n)의 연산 개수는 d 차원의 원소끼리 각각 곱하는 연산 d번을 n * n 번 수행하므로 레이어당 복잡도는 $O(n^2 \cdot d)$이 됨

    • Recurrent 방식은 매번 d차원의 hidden state vector와 $W_hh$를 곱하고 이를 n번 연산하므로 $O(n \cdot d^2)$

    • Convolutional 방식은 kernel width $k$가 $n$보다 작으면 input과 output의 모든 pair를 한 번에 보는 것이 불가능하므로 $O(n / k)$번의 커널을 쌓거나, dilated convolutions의 경우엔 $O(log_k(n))$개의 커널을 쌓아야함(가장 먼 두 지점을 한 번에 보기 위한 maximum path length)

    • Convolutional layer의 연산이 recurrent layer보다 비싼이유가 $k$가 곱해지기 떄문. (왜 $O(k \cdot n \cdot d^2)$가 나왔는지는 아직 파악 못 함)

Training

  • 학습 데이터셋과 하드웨어 사양 및 학습 스케쥴에 대한 설명은 논문을 참고

  • Learning Rate Scheduling : Warm-up 기법 적용 여부가 학습에 민감하게 영향을 끼침(아래 후속 연구에서 나온 내용)

  • 후속 연구(Xiong et al., On Layer Normalization in the Transformer Architecture, ICML 2020)

  • Post-Layer Normalization vs Pre-Layer Normalization에 대한 내용

    • Transformer 학습에서 learning rate warm-up이 학습에 필요한 이유가 weight에 대한 gradient scale이 크기 떄문이며 Layer Normalization 위치를 바꿔서 학습을 쉽게 할 수 있다고 보고함

    • Transformer의 Layer Normalization은 Post-Layer Normalization(MHSA과 FFN 뒤에 위치)으로 skip-connection 결과와 더한 뒤 적용하기 떄문에 activation 값의 scale이 일정하게 유지됨

    • Pre-LN을 쓸 경우에는 Normalization한 값을 계속해서 skip-connection한 값에 더해주므로 층수에 비례하여 값이 점점 커지게 되며, layer normalization의 scaling이 점점 줄어들게되고, 이에 따라 layer normalization의 gradient의 upper bound가 층수에 반비례하는 꼴이 되어 더 높은 층의 layer일수록 gradient scale이 작아짐

      image

    • 결론적으로 Pre-LN을 쓰면 learning rate를 warm-up 없이 학습 가능

    • 그러나 일부 적용에 주의해야하는 경우도 있으니 (참고)[https://hsleeword.wordpress.com/2020/01/07/on-layer-normalization-in-the-transformer-architecture/]

    • 아직 이 주제는 계속해서 논의가 되고 있는 내용으로 어느것이 확실히 좋다는 모름

    • Post-LN은 학습시 각 레이어의 출력결과 변동폭이 커서 대박 아님 쪽박이 될 수 있고 Pre-LN은 변동폭이 너무 작아 학습은 안정적이지만 최고 성능에 도달하지 못할 수 있다는 연구도 본 것 같은데 제목이 기억이 안납니다...

  • 참고

Results

  • WMT14 En->Gr, En->Fr benchmark. (영독 번역이 더 어려운 점 참고)

  • Beam Search Setting

    • Beam size $k$ = 4
    • length penalty $alpha$ = 0.6
    • Maximum output length = input length + 50
  • 결과

    • Checkpoint Averaging(Ensemble)을 적용한 결과
    • 영독간 번역 성능에서 SoTA 달성(28.4), 영프간 번역에서는 기존 SoTA에 근접한 성능을 보이면서 더 적은 연산량 사용
      image
  • 제안하는 구조의 효과 확인을 위한 추가 실험(No chekcpoint averaging)

    • (A): Attention Heads의 개수
    • (B): Attention key size $d_k$를 줄일수록 성능 저하
    • (C): Layer의 개수, $d_{model} & d_k & d_v$, $d_{ff}$의 크기: 모델 사이즈가 클 수록 높은 성능
    • (D): Drop out 적용 여부: 더 높은 일반화 성능
    • (E): Positional Embedding 적용 : Positional Encoding 방식과 큰 차이 없음

피어세션

Transformer 학습 내용 공유

Attention 종류

image
image

Additive Attention과 Scaled Dot-Product Attention

  • 이론적인 복잡도는 동일하지만 Scaled Dot-Product Attention이 빠르고 메모리 효율적
  • Additive Attention은 Query와 Key를 Concat 하므로 한 번에 메모리에 적재하는 양이 많아 비효율적
  • Scaling을 안 해주었을 때는 Additive가 성능이 더 높다(논문에서는 이에 대한 분석은 하지 않고 주석을 추측 추가).

[멘토링]

  • BART, XLNet에 대한 논문 리뷰: 별도 포스팅 예정
  • 논문 리딩 팁

논문 리딩 팁

  • 단어나 개념에 대해 막힌다고 해서 꼼꼼하게 찾지말고 일단 체크 후 스킵하면서 전체 흐름 읽기. 저자가 하려는 말을 파악하는 것이 중요
  • 중요 논문은 여러번 읽기(e.g. Transformer)
  • 논문을 1회 이상 보는 경우
    • 이 문단의 어떤 점을 모르겠다 체크
    • 소제목별 주장 정리해 구조화
  • 논문을 2회 이상 보는 경우
    • 수식 꼼꼼히(워딩과 수식, 코드와의 align), 타 논문과의 차이점에 집중
  • 전체 그림을 읽고 디테일 채워가듯이 읽기
  • 관심 분야에 대한 선택과 집중

특정 분야에서 어떤 논문을 읽어야할지 모르겠다면

  • Papers with code에서 유명 벤치마크 데이터셋 기준 SoTA 논문 5개 정도 뽑아 main result table에서 중복이 가장 많이되는 논문 읽기
  • "Awesome + 관심 분야"로 검색 후 최신 논문부터
  • Conference "Call for paper"에서 관심 분야 논문 찾기
  • 중요한 논문이 정해지면 최신 논문부터 읽어 내려갈 것(18, 19년도 부터 읽으면 비효율적, 어차피 최신 논문에서 related works에서 설명함)
  • 위의 팁은 Downstream task 논문에 유용한 팁이고, PLM은 method가 계속 바뀌기 때문에 순서대로 읽는 게 용이하다.

과제 수행

선택과제 2

  • fairseq을 활용해 transformer로 번역모델을 학습하는 문제
  • 그냥 돌렸더니 BLEU score 20점대 기록
  • Beam size $k$ = 5 -> 10으로 바꿔도 성능에 큰 차이가 없었음
  • Transformer 논문에서 제안된 hyperparameter로 수정 후, 10 epoch(약 10,000 step)까지만 학습, Beam size k = 10일 때 BLEU 31 점 달성

학습 회고

  • 논문 리뷰 모임 시간에 Layer Normalization에서 feature 방향으로 normalize한 후 feature 마다 affine transformation 하는 것이 어색하다. 해당 내용을 정리할 필요가 있다.
  • Transformer의 구조 개선을 위한 후속 연구들을 다 이해하지 못 했다. 주요 연구 위주로 정리할 필요가 있다.
  • Beam Search에서 length penalty 개념 정리가 필요하다.
Comments