Self-Attention


### 텍스트 데이터 내에서 단어 간의 상호작용을 모델링
Self-attention enables the encoder to weigh the importance of each word and capture both short and long-range dependencies.
Self-attention enables the decoder to focus on different parts of the output generated so far.
- 인코더의 셀프 어텐션 : Query = **Key **= Value
- 디코더의 마스크드 셀프 어텐션 : Query = **Key **= Value
self-attention 은 어텐션을 자기 자신에게 수행한다는 의미
문장 내부 요소의 관계를 잘 파악하기 위해서 문장 자신에 대해 어텐션 매커니즘을 적용
- 쿼리 : 분석하고 하는 단어에 대한 가중치 벡터
- 키 : 각 단어가 쿼리에 해당하는 단어와 얼마나 연관있는 지를 비교하기 위한 가중치 벡터
- 밸류 : 각 단어의 의미를 살려주기 위한 가중치 벡터

### self Attention 과정
1. 특정 단어의 쿼리(q) 벡터와 모든 단어의 키(k) 벡터를 내적한다. 내적해서 나온 값은 Attention Score가 된다.
2. 보정으로 트랜스포머에서는 이 가중치를 q,k,v 벡터 차원 *dk* 의 제곱근인 *d**k*로 나누어 준다.
3. Softmax로 쿼리에 해당하는 단어와 문장 내 다른 단어가 가지는 관계의 비율 계산
4. Value 각 단어의 벡터를 곱해준 후 모두 더한다.


> [[딥러닝] 언어모델, RNN, GRU, LSTM, Attention, Transformer, GPT, BERT 개념 정리](https://velog.io/@rsj9987/딥러닝-용어정리)






