한국어 임베딩 : 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