Self-Attention
Self attention에서는 Query, Key, Value가 중요한 키워드가 됩니다.
벡터화된 문장을 합쳐 X로 만들고 가중치 Wq, Wk, Wv와 내적하여 각각 Query와 Key, Value값을 도출합니다.
그럼 이렇게 각 토큰에 해당하는 X, Query, Key, Value값이 나타나게됩니다.
이 값을 Query*$Key^T$해줍니다. 말그대로 키 값을 통해서 각 토큰별로 어느정도 연관성이 있는지 알기위함입니다. 이렇게 스코어를 계산하고, 이 값을 softmax함수에 넣어 총합이 1이되게 나누어줍니다. 연관성이 클 수록 값이 커질 것 입니다.
이렇게 softmax까지 한 뒤에, Value값을 곱하고 더해주면 값이 하나 나오게됩니다. 위의 그림에서 "I"를 통해보면, I는 softmax를 통해나온값이 0.92, 0.05, 0.02, 0.01입니다. 'I'의 value는 0.92만큼, study의 value는 0.05만큼, at의 value는 0.02만큼, schoold의 value는 0.01만큼 가져간 뒤에, 합치기 때문에 값을 완전히 잃지 않는 다는 장점이 있습니다.
Masked Self-Attention
masked Self-Attention은 위와 크게 다르지 않습니다. 다른 점은 뒤를 마스킹(가려주는 것)을 한다는 것입니다
셀프 어텐션과 달리 이전 단어만 Self-Attention이 수행됩니다. 벡터를 사용하여 나중에 나타나는 단어를 0으로 표시하여 Attention이 행렬 연산을 수행하는 동안 해당 단어를 사용할 수 없도록 마스크합니다. (예를들어 -10억을 곱하는 등으로 할 수 있습니다)
댓글