Transformer의 어텐션에 대해 수식으로 이해하기

George Polya·2026년 1월 7일

딥러닝

목록 보기
2/2

Scaled Dot-Product Attention

Fig 1

Fig 1. Scaled Dot-Product Attention
  • query와 key에 대한 임베딩 벡터 크기는 dkd_k. value에 대한 임베딩 벡터 크기는 dvd_v.
  • 따라서 query, key, value 토큰 하나에 대한 임베딩 벡터 크기는 dkd_k, dkd_k, dvd_v. 엄밀히 말하면 1×dk1 \times d_k 이다.
  • 전체 토큰 개수는 NN이라 하면, 토큰 하나에 대해서 1×dk1 \times d_k였으니 NN개의 벡터를 모아놓으면 행렬이 된다. 따라서 query 행렬 QQN×dkN \times d_k
    Key 행렬 KKN×dkN \times d_k
    Value 행렬 VVN×dvN \times d_v

수식에 들어가기 앞서, 예를 들어보자. 그는 고양이를 좋아한다에서 토큰은 그는, 고양이를, 좋아한다라고 해보자.

이제 여기서 쿼리 그는이 전체 문장과 얼마나 관련있는지를 알기 위해 dot-product를 사용한다.

(1×dk)×(dk×N)=1×N(1 \times d_k) \times (d_k \times N) = 1 \times N. 이 값이 그는이 전체 문장에서 가지는 어텐션 스코어이고, 이 어텐션 스코어를 값(V)(V)에 곱한 것이 어텐션 값이다 (1×dk)×(dk×N)×(N×dv) = (1×dv)(1 \times d_k) \times(d_k \times N) \times (N \times d_v)\ =\ (1 \times d_v).

그러면 전체 문장의 전체 문장에 대한 어텐션 값을 계산해보면 QKTV = (N×dk)×(dk×N)×(N×dv)=(N×dv)QK^TV \ =\ (N \times d_k) \times (d_k \times N) \times (N \times d_v) = (N \times d_v)

자, 이제 수식으로 가보자

Attention(Q,K,V)=softmax(QKTdk)VAttention(Q,K,V) = softmax(\frac{QK^T}{\sqrt {d_k}})V

여기서 이제 softmax(QKTdk)softmax(\frac{QK^T}{\sqrt{d_k}})부분과 VV부분을 분리해야한다. 소프트맥스 부분은 어텐션 스코어를 계산하는 부분이고, 그렇게 계산한 어텐션 스코어를 값(V)(V)에 곱해주는 것이다.

논문에서는 dk\sqrt{d_k}로 스케일링하고 소프트맥스함수를 취해 0~1로 정규화한 것이다.

Multi-Head Attention

Fig 2. Multi-Head Attention
멀티헤드 어텐션은 Scaled Dot-Product Attention을 확장한 것에 가깝다. 여러 개의 Scaled Dot-Product Attention을 수행하고 그것을 이어붙인것이기 때문이다.

즉, 앞에서 수행한 Scaled-Dot Product Attention은 하나의 대해서 수행한 것이다.

MultiHead(Q,K,V)=Concat(head1,...,headh)WOwhere headi=Attention(QWiQ,KWiK,VWiV)MultiHead(Q,K,V) = Concat(head_1, ...,head_h)W^O\\where \ head_i=Attention(QW_i^Q, KW_i^K,VW_i^V)

그림에서 Q,K,VQ,K,V가 들어가는 Linear가 WiQ,WiK,WiVW_i^Q,W_i^K,W_i^V를 의미하는 것이다.
이를 통해, 서로 다른 위치에 있는, 서로 다른 표현공간(representation subspaces)의 정보에 동시에(jointly) 집중할 수 있게 해준다.

profile
George-Polya

0개의 댓글