어텐션이 조모임이라면

트랜스포머 모델을 이해하는 데에는 3Blue1Brown 유튜브 채널의 뉴럴 네트워크 시리즈 (한국어 시리즈) 만한 것이 없다. 트랜스포머 모델을 복습하면서, 이미 이해하고 있다고 생각했던, 어텐션 레이어의 쿼리(QQ), 키(KK), 밸류(VV)의 의미를 다시 한 번 깊게 고민해보았다. 이 글은 Attention in transformers, step-by-step | Deep Learning Chapter 6 영상에 대한 부연설명이다.

주의: 표기법

Attention Is All You Need 논문과 3Blue1Brown 영상의 표기법에는 차이가 있다. 이 글에서는 논문의 표기법을 따른다.

Attention Is All You Need 논문의 표기법

  • 벡터를 행벡터(1×d1 \times d)로 표현한다.
  • 어텐션 레이어의 결과는 다음과 같다.
Attention(Q,K,V)=softmax(QKTdk)V\mathrm{Attention}(Q, K, V) = \mathrm{softmax}(\frac{Q K^T}{\sqrt{d_k}}) V
  • 소프트맥스는 행마다(row-wise) 적용한다.
softmax([A1An])=[softmax(A1)softmax(An)]\mathrm{softmax}( \begin{bmatrix} A_1 \\ \cdots \\ A_n \end{bmatrix} ) = \begin{bmatrix} \mathrm{softmax}(A_1) \\ \cdots \\ \mathrm{softmax}(A_n) \end{bmatrix}

3Blue1Brown 영상의 표기법

  • 벡터를 열벡터(d×1d \times 1)로 표현한다.
  • 어텐션 레이어의 결과는 다음과 같다.
Attention(Q,K,V)=softmax(KTQdk)V\mathrm{Attention}(Q, K, V) = \mathrm{softmax}(\frac{K^T Q}{\sqrt{d_k}}) V
  • 사실 아래 식이 올바른 식이다.
Attention(Q,K,V)=Vsoftmax(KTQdk)\mathrm{Attention}(Q, K, V) = V \mathrm{softmax}(\frac{K^T Q}{\sqrt{d_k}})
  • 소프트맥스는 열마다(column-wise) 적용한다.
softmax([A1An])=[softmax(A1)softmax(An)]\mathrm{softmax}( \begin{bmatrix} A_1 & \cdots & A_n \end{bmatrix} ) = \begin{bmatrix} \mathrm{softmax}(A_1) & \cdots & \mathrm{softmax}(A_n) \end{bmatrix}

어텐션 레이어의 의미

컨텍스트 윈도우에 있는 nn개의 단어들이 조모임을 하고 있다고 생각해보자. 이들은 토론을 통해서 다음 단어를 예측해야 한다. 편의상, 단어 하나를 토큰 하나로 보자.

예시 문장은 “I have a lot”이다. 토큰 임베딩과 포지션 임베딩을 더한 임베딩은 다음과 같다.

E=[EIEhaveEaElot]E = \begin{bmatrix} E_{\mathrm{I}} \\ E_{\mathrm{have}} \\ E_{\mathrm{a}} \\ E_{\mathrm{lot}} \end{bmatrix}

쿼리(QQ): 질문과 그 결

쿼리(QQ)는 이 조모임의 주제와 질문이다.

“일반적으로 특정 단어 뒤에 어떤 단어가 따라오는가?”라는 주제를 생각해보자. 이 주제의 질문을 행렬 WQW_Q로 표현할 수 있다. 각 단어가 이 주제의 질문을 말하면, 즉 EEWQW_Q를 적용하면,

Q=EWQ=[QIQhaveQaQlot]Q = E W_Q = \begin{bmatrix} Q_{\mathrm{I}} \\ Q_{\mathrm{have}} \\ Q_{\mathrm{a}} \\ Q_{\mathrm{lot}} \end{bmatrix}

각 질문은 같은 주제의 다른 질문이 된다.

  • QIQ_{\mathrm{I}}: 일반적으로 I 뒤에 어떤 단어가 따라오는가?
  • QhaveQ_{\mathrm{have}}: 일반적으로 have 뒤에 어떤 단어가 따라오는가?
  • QaQ_{\mathrm{a}}: 일반적으로 a 뒤에 어떤 단어가 따라오는가?
  • QlotQ_{\mathrm{lot}}: 일반적으로 lot 뒤에 어떤 단어가 따라오는가?

키(KK): 대답의 결

키(KK)는 각 단어가 줄 수 있는 대답 혹은 정보의 결이다. 쿼리(QQ)와 마찬가지로 EEWKW_K를 적용하면,

K=EWK=[KIKhaveKaKlot]K = E W_K = \begin{bmatrix} K_{\mathrm{I}} \\ K_{\mathrm{have}} \\ K_{\mathrm{a}} \\ K_{\mathrm{lot}} \end{bmatrix}

각 단어의 대답에 대한 결을 표현할 수 있다.

“일반적으로 특정 단어 뒤에 어떤 단어가 따라오는가?”라는 질문에 대해서 해당 단어가 그 답을 알고 있다고 생각할 수 있다. “일반적으로 I 뒤에 어떤 단어가 따라오는가?”(QIQ_{\mathrm{I}})에 대해서 I의 대답, 예를 들면 am이 가장 관련있을 것이다. a는 이 질문에 대해서, “음… 잘 모르겠는데… 난가? 나 a인가?”라고 별로 관련없는 대답을 한다고 생각할 수 있다.

이 대답의 결 KIK_{\mathrm{I}}는 질문의 결 QIQ_{\mathrm{I}}와 “가깝다”고 할 수 있다. 다시 말해서, 결이 맞는 질문과 대답의 내적은 크고, 결이 맞지 않는 질문과 대답의 내적은 작다. 질문의 결 QiQ_i와 대답의 결 KjK_j의 내적 QiKjQ_i \cdot K_j찰떡궁합점수라고 하자.

소프트맥스: 절대적인 찰떡궁합점수 ⇒ 상대적인 가중치

예를 들어 “I have a lot”에서 QlotQ_{\mathrm{lot}}에 대해 lot이 압도적으로 큰 찰떡궁합점수를 가질 수 있다. lot은 100, 나머지 단어들은 1의 찰떡궁합점수를 가진다고 하자. 그러면 lot의 대답을 따라서 다음 단어는 마침표라고 결론지을 수 있다. 즉, 이 네 단어들은 토론 결과 “I have a lot.”, “나는 많아.”라는 문장이 완성될 것이라고 결론지을 수 있다.

하지만, 이 문장 앞에 질문이 있다면 어떨까? 컨텍스트가 “Cash or credit card? I have a lot”이라면, 앞선 질문의 단어들도 할 말이 있을 것이다. 이들은 “앞에서 우리가 ‘현금이에요? 신용카드에요?‘라고 물어봤으니까 of cash 아니면 of credit card라고 문장을 마무리해야지”라면서 다음 단어는 of여야 한다고 1,000의 찰떡궁합점수로 강하게 주장할 수 있다.

이 경우 lot의 목소리는 상대적으로 약해지고, 마침표냐 of냐 두 대답을 적당히 걸러들어서 “Cash or credit card? I have a lot of”가 된다고 결론지을 수 있다.

밸류(VV): 실제 대답

밸류(VV)는 각 단어가 실제로 주는 대답 혹은 정보이다. 역시, EEWVW_V를 적용하면, 각 단어의 실제 대답을 표현할 수 있다.

V=EWV=[VIVhaveVaVlot]V = E W_V = \begin{bmatrix} V_{\mathrm{I}} \\ V_{\mathrm{have}} \\ V_{\mathrm{a}} \\ V_{\mathrm{lot}} \end{bmatrix}

소프트맥스를 통해 각 질문별로 찰떡궁합점수를 합이 1인 0에서 1 사이의 가중치로 보정하면, 단어들의 대답을 가중치만큼 걸러들어, 즉 가산합산을 해서 최종 결과를 만든다.

Attention(Q,K,V)=softmax()V\mathrm{Attention}(Q, K, V) = \mathrm{softmax}(\cdot) V

그동안 헷갈렸던 부분은 쿼리(QQ)와 키(KK)는 서로 뒤바뀌어도 될 것 같다는 점이었다. 하지만 소프트맥스가 적용되는 방향과 밸류(VV)가 곱해지는 위치를 생각해 보면, 각자의 역할이 어떻게 다른지 알 수 있다. 트레이닝 과정에서 이 둘은 각자의 역할에 맞게 학습된다.

결론

어텐션 레이어의 식을 다시 보자.

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

쿼리(QQ)와 키(KK)가 대칭적으로 보이지만, 이제 우리는 이 둘의 의미를 알기 때문에 소프트맥스를 어느 방향으로 적용해야 하는지, 그리고 밸류(VV)를 어디에 곱해야 하는지 알 수 있다.

© 2018 - 2025 Junhee Cho