한국어 임베딩 : 5.5.1 Scaled Dot Product Attention - penny4860/study-note GitHub Wiki

정리

  • 입력 : X
    • (t,d)-shaped
    • 문장내부의 t개의 단어 임베딩
  • 출력 : Attention(Q, K, V)
    • (t,d)-shaped
    • 문장내부의 t개의 단어 임베딩
    • 문장내 다른 단어와의 관계도가 추가된 새로운 임베딩

내용

  • Attention(Q, K, V) = softmax(np.dot(Q, K') / sqrt(d_k)) * V

1. X -> Q, K, V

  • 입력 : X : (t, d)-shape
    • 입력 matrix X는 d-dimentional vector가 t개 존재하는 matrix
    • t개의 단어가 각각 d-dimension vector로 표현되어있음.
  • 출력
    • Q = np.dot(X, W_Q ) : shape of Q : (t, d)
    • K = np.dot(X, W_K ) : shape of K : (t, d)
    • V = np.dot(X, W_V ) : shape of V : (t, d)

2. Dot-Product : np.dot(Q, K'), (t, t)-shape

  • Query과 Key의 유사도를 계산 (내적은 유사도 계산의 의미를 갖는다)
  • 여기서는 한 문장내에 포함된 단어끼리의 유사도를 계산하기떄문에 self-attention이라고 함.

3. Scaled : np.dot(Q, K') / sqrt(d_k), (t, t)-shape

  • softmax에서 gradient vanishing 문제를 완화시키기 위해 scale을 줄인다.

4. softmax : softmax(np.dot(Q, K') / sqrt(d_k)), (t, t)-shape

  • 각 row의 합이 1.0이 되도록 정규화
  • softmax(np.dot(Q, K') / sqrt(d_k))는 단어사이의 관계도를 정규화된 수치로 표현한 matrix가 된다.

5. Attention : softmax(np.dot(Q, K') / sqrt(d_k)) * V, (t, d)-shape

  • V : 단어의 value matrix
  • 출력
    • 문장내 다른 단어와의 관계도가 추가된 새로운 vector representation