Self Attention Mechanism은 Input Embedding에 대해 Linear 연산을 수행해 Q(Query), K(Key), V(Value)를 생성 합니다.
Q와 K의 행렬 곱으로 각 Token 마다 어떤 연관성이 있는지에 대한 Score를 담은 Matrix를 얻습니다.
Score Matrix와 V를 행렬 곱으로 해서 결과적으로 각 Token들과의 연관성 정도의 정보가 추가되어 새로운 Embedding을 만들어냅니다. 이를 Attention Feature Matrix라고 하겠습니다.
Multi-head Attention
Multi-head Attention은 위의 Self-Attention을 여러번, 임의의 h 번을 수행한 것들에 대한 결과를 취합한 것입니다.
Self Attention 을 통해 h 개의 서로 다른 Attention feature matrix를 얻어낸 후 concat 합니다.
concat을 했을 경우 Input embedding과 같은 차원이 되도록 합니다.
따라서, Self Attention 시 정해져야하는 차원을 Attention dimension라 하는데, 이는 Input embedding dimension // num of heads 로 정해집니다. 몇 개의 Self Attention을 수행할지만 정해지면, Attention dimension 도 정해지는 것입니다.
여러 Feature를 취합하는 것은 CNN 처럼 Transformer 에서도 마찬가지인 것 같습니다.