조금 더 다양한 방법으로 Attention을 구할 수 없을까?
이전 강의에서 배운 Transformer Model은 한가지의 Wk,Wq,Wv만 고려하여 Attention을 구했다. 조금 높은 성능을 내기위해 다향한 W를 고려할 수 있는 방법은 없을까? 에 대한 방법으로 Multi-Head Attention이 고안 되었다. 이전에서 설명한 Transformer Model을 여러개 쌓아서 Concat하는 방법이다. 각각의 Attention Module들은 서로 다른 W를 가지고 있음으로 똑같은 Input에 대한 다양한 상호작용이 가능하다. 이로인해 성능의 발전을 기대하는것이 Multi -Head Atteniton의 개념이다.
성능이 보장된 GPU가 있다면, Self-Attention의 시간복잡도는 O(1)이다. (모두 병렬처리 가능하기 때문)
RNN은 각 Time step을 거쳐야 하기 때문에, O(n)이다.
속도도 빠르고, 성능도 좋은 Transformer!
이 부분이 이해되지 않았는데, 같은 팀원인 태욱님의 설명으로 이해됬다. Attention의 Input은 Embedding된 Vector로 표현되고 이것들은 순서가 고려되지 않은 그저 Vector이다. 때문에 같은 Attention이 나오게 된다.
Local minima 문제를 해결하고 빠르게 Global Minima에 도달하기 위한 Learning rate 조절 방법이다.
처음에는 Learning rate를 크게하고 점점 줄여가는 방식으로 학습을 진행한다.
다음 단어를 예측할 때, 그 이후에 단어를 보는것이 도움이 되지 않는다.
다음 단어에 Attention이 가는 것을 막기 위한 방법이다.
다음 단어에 해당되는 Scala 값을 0로 만들어 Masking 되는 효과를 준다.
그 유명한 Transformer model에 대해 깊게 이해할 수 있는 좋은 수업이였다. 이 학습정리를위해 몇번씩이나 강의를 다시봤는데, 도움이 많이 된거같다. 이후에는 실습코드를 보면서 어떻게 구현하는지에 대해 공부해야겠다.