Transformer의 Self-Attention 메커니즘

dmn_nmd·2024년 7월 31일

AI: Transformer

목록 보기
2/4
post-thumbnail

Self-Attention

  • 각 단어는 자신을 기준으로 다른 모든 단어와의 관계를 평가하고, 이를 통해 자신의 벡터 표현을 업데이트하는 메커니즘입니다.
  • 이 과정은 입력 시퀀스의 모든 단어에 대해 반복되며, 최종적으로 각 단어는 문맥에 맞게 새롭게 표현된 벡터로 변환됩니다.

공식

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

Q,K,VQ, K, V

  • 임베딩 벡터 행렬 (X):
    • 입력 시퀀스의 각 토큰에 대한 임베딩 벡터들로 구성됩니다.
  • 가중치 행렬 (W_Q, W_K, W_V):
    • 각각 Query, Key, Value를 생성하기 위한 학습 가능한 파라미터입니다.
    • 이 가중치들은 모델 훈련 과정에서 최적화됩니다.
  • 선형 변환:
    • Q=XWQQ = XW_Q
      • 각 토큰의 문맥적 관계를 포착할 수 있는 질문
    • K=XWKK = XW_K
      • 쿼리에 대한 잠재적인 답변
    • V=XWVV = XW_V
      • 토큰이 가진 실제 정보

KTK^T

  • K의 전치(행과 열을 바꾼) 행렬입니다.

QKTQK^T

  • 산출된 행렬(Attention Score)의 각 요소는 하나의 질문 벡터(Q의 행)와 하나의 응답 벡터(K의 행)의 내적값입니다.
  • 이 내적값 행렬은 모든 토큰 쌍 간의 유사도/관련성을 나타냅니다.
  • 내적이 클 수록 문맥적으로 더 연관되어 있습니다.dma

dk√d_k

  • key 벡터의 차원 수를 나타내며, 내적 값을 안정화하고 적절한 스케일로 조정하기 위해 제곱근을 나누어 줍니다.
    • 멀티 헤드의 경우 dkd_k = d_model / h
    • 예: GPT-3은 96개의 head 사용

softmaxsoftmax

  • 각 행의 값들을 확률 분포로 변환하여, 각 토큰에 대한 가중치를 결정합니다.
  • 소프트맥스를 적용한 후, 각 행의 합은 1이 됩니다.

Self-Attention 과정 예시

  • 입력 시퀀스: "blue fluffy creature"
  • 편의상 토큰을 단어로 구분합니다.

1. 임베딩 및 Q, K, V 생성

  • "blue", "fluffy", "creature"라는 단어들이 모델에 임베딩되어 각각의 벡터 표현으로 변환됩니다.
  • 임베딩 벡터 X는 각 단어의 임베딩 표현입니다.
  • 이 임베딩 벡터 X는 각각의 가중치 행렬(W_Q, W_K, W_V)과 곱해져 Query(Q), Key(K), Value(V) 벡터를 생성합니다.

2. Q와 K의 내적 계산

  • Q와 K의 내적을 계산하여 각 단어 쌍 간의 유사도를 평가합니다.
  • 이 내적은 모든 Query와 모든 Key 벡터 사이에서 계산되어 3x3의 유사도 행렬을 형성합니다.

예시:

  • Q_blue: "너는 얼마나 파란색과 관련이 있니?"
    • K_blue: "나는 파란색 그 자체예요." (높은 점수)
    • K_fluffy: "솜털은 파란색과 약간 관련이 있어요." (중간 점수)
    • K_creature: "생물은 색깔을 가질 수 있어요." (중간 점수)
  • Q_fluffy: "너는 얼마나 푹신함과 관련이 있니?"
    • K_blue: "파란색은 푹신함과 관련이 없어요." (낮은 점수)
    • K_fluffy: "나는 푹신함 그 자체예요." (높은 점수)
    • K_creature: "생물은 푹신할 수 있어요." (중간 점수)
  • Q_creature: "너는 얼마나 생물과 관련이 있니?"
    • K_blue: "파란색은 생물과 직접 관련이 없어요." (낮은 점수)
    • K_fluffy: "솜털은 생물일 수 있어요." (중간 점수)
    • K_creature: "나는 생물 그 자체예요." (높은 점수)

3. Softmax 적용

  • 각 행에 대해 Softmax를 적용하여 확률 분포로 변환합니다.
  • 각 Query 벡터에 대해 관련된 Key 벡터들의 중요도를 나타냅니다.

4. Attention 가중치 적용 및 새로운 벡터 생성

  • Softmax 결과를 사용하여 각 Value 벡터와 곱합니다.
  • 그 결과 각 Query에 대해 새로운 벡터 표현이 생성됩니다.

예시:

  • New_blue: 주로 파란색이면서, 생물체의 특성을 가지고 있고, 약간의 부드러운 질감을 가진 무언가
  • New_fluffy: 약간 파란색이고, 푹신하며,생물체의 특성을 가진 무언가
  • New_creature: 약간 파란색이고, 푹신하며, 생물체로서의 특성을 가진 무언가

참고 링크🔗
주의력, 트랜스포머의 마음 시각화하기 | 6장, 딥 러닝
딥러닝 트랜스포머 셀프어텐션, Transformer, self attention

profile
일잘러가 되어야지

0개의 댓글