[논문리뷰] Self-Attention

또잉의 공부일지·2023년 12월 5일
post-thumbnail

Self-Attention

역할

"The animal didn't cross the street because it was too tired"라는 문장에서 "it"은 무엇을 가리킬까? 인간에게는 쉽지만 알고리즘에서는 알아내기 쉽지 않다.
이 때 self-attention은 "it"을 "animal"과 연관시킬 수 있게 한다.

과정

  1. Query, Key, Value vector 생성
    각 input vector(각 단어의 임베딩)에 대해 Query, Key, Value vector를 만든다. 이들 vector들은 임베딩을 학습과정에서 만든 세 행렬을 곱함으로써 만들어진다.

  1. Score 계산
    Query vector를 Key vector와 내적한다. 결과값이 클수록 벡터가 유사하다.

  2. (Key vector의 dimension)의 루트값으로 score를 나눠줌
    이 과정은 gradient가 더 안정적이게 해준다.

  3. softmax
    score를 normalize하여 합이 1이 되도록 한다.

  4. Value vector를 이 softmax score와 곱해준다.
    이는 relevent words를 살리고 나머지는 drown-out 되도록 해준다.

  5. 위의 과정에서 나온 weighted value vector들을 모두 합한다.
    이것이 self-attention 레이어의 결과(z)다!

위의 과정을 차원을 높여 행렬로 진행하면 다음과 같다.

요약

전체적인 self-attention 메커니즘은 다음과 같이 요약된다.

참고:
https://www.youtube.com/watch?v=URci3Eqz3hc

0개의 댓글