[Week7] Transformer(2)

PangDae·2021년 9월 20일
0

Transformer

  • 위 사진의 구조를 하나하나 뜯어보자!

Multi-Head Attention

  • 조금 더 다양한 방법으로 Attention을 구할 수 없을까?

    이전 강의에서 배운 Transformer Model은 한가지의 Wk,Wq,Wv만 고려하여 Attention을 구했다. 조금 높은 성능을 내기위해 다향한 W를 고려할 수 있는 방법은 없을까? 에 대한 방법으로 Multi-Head Attention이 고안 되었다. 이전에서 설명한 Transformer Model을 여러개 쌓아서 Concat하는 방법이다. 각각의 Attention Module들은 서로 다른 W를 가지고 있음으로 똑같은 Input에 대한 다양한 상호작용이 가능하다. 이로인해 성능의 발전을 기대하는것이 Multi -Head Atteniton의 개념이다.

Multi-Head Attention의 순서

  1. 같은 Input에 대해 다르게 구해진 output

  1. 각 output들을 concat 한 후, W0와 dat 연산하여 z를 구함.

RNN과 Transformer 의 속도 차이

  • 성능이 보장된 GPU가 있다면, Self-Attention의 시간복잡도는 O(1)이다. (모두 병렬처리 가능하기 때문)

  • RNN은 각 Time step을 거쳐야 하기 때문에, O(n)이다.

속도도 빠르고, 성능도 좋은 Transformer!

이외 알아야할 것들

Layer Normalization

  • 정확한 정보를 얻기 위해 다양한 정규화 방법들이 있다.

Positional Encoding

  • Positional Encoding을 하지 않은, I go home 과 home go I Attention 결과 값은 같다.

이 부분이 이해되지 않았는데, 같은 팀원인 태욱님의 설명으로 이해됬다. Attention의 Input은 Embedding된 Vector로 표현되고 이것들은 순서가 고려되지 않은 그저 Vector이다. 때문에 같은 Attention이 나오게 된다.

  • 이를 해결 해주기위해 각 input마다 일정한 주기함수를 더해주어 순서를 고려할 수 있게 해준다.

Warm-up Learning Rate Scheduler

  • Local minima 문제를 해결하고 빠르게 Global Minima에 도달하기 위한 Learning rate 조절 방법이다.

  • 처음에는 Learning rate를 크게하고 점점 줄여가는 방식으로 학습을 진행한다.

Masked Self-Attention

  • 다음 단어를 예측할 때, 그 이후에 단어를 보는것이 도움이 되지 않는다.

  • 다음 단어에 Attention이 가는 것을 막기 위한 방법이다.

  • 다음 단어에 해당되는 Scala 값을 0로 만들어 Masking 되는 효과를 준다.

그 유명한 Transformer model에 대해 깊게 이해할 수 있는 좋은 수업이였다. 이 학습정리를위해 몇번씩이나 강의를 다시봤는데, 도움이 많이 된거같다. 이후에는 실습코드를 보면서 어떻게 구현하는지에 대해 공부해야겠다.

profile
개발이 하고싶습니다.

0개의 댓글