Attention(Q,K,V) = Attention Value
Attention Score 계산: Query (디코더의 특정 시점 t의 은닉 상태)와 각 Key (인코더의 모든 시점의 은닉 상태) 사이의 유사도를 계산합니다. 이 유사도는 내적(dot product)을 통해 주로 계산되며, 이를 Attention Score라고 부릅니다.
Softmax 적용: 계산된 Attention Score에 softmax 함수를 적용하여 어텐션 가중치를 얻습니다. 이를 통해 각 인코더의 은닉 상태에 얼마나 주의를 기울일 것인지의 확률 분포로 변환합니다.
Attention Value 도출: 어텐션 가중치를 각 Value (인코더의 은닉 상태)와 곱한 후, 모든 결과를 합하여 최종 Attention Value를 얻습니다. 이 값은 디코더의 다음 시점의 입력 또는 은닉 상태 업데이트에 사용됩니다.
이렇게 도출된 Attention Value는 디코더에게 인코더의 모든 정보 중 어떤 부분에 주의를 기울여야 할지를 알려주는 방식으로 작동합니다.
key와 value의 차이..
그럼 key가 위치값이라고는 하지만 실제로 유사도를 계산하기 위해서 은닉상태를 이용한거네?
결론적으로 key는 은닉상태값이고 value또한 은닉상태값인데
구조상으로는 key를 위치라고 표현한거야?
네, 맞습니다. "Key"와 "Value"는 종종 인코더의 은닉 상태에서 유래합니다. 실제로 트랜스포머와 같은 모델에서는 동일한 은닉 상태가 Key와 Value로 사용되지만, 이들은 다른 선형 변환(즉, 다른 가중치 행렬)을 통과하게 됩니다.
"Key"가 "위치"나 "참조 지표" 역할을 한다는 설명은 그 역할과 동작 방식을 이해하는 데 도움이 되는 개념적인 설명입니다. 실제로 "Key"는 Query와의 유사도를 계산하기 위한 값입니다. 이 유사도 계산을 통해 어느 부분에 주의를 기울일 것인지를 결정하게 됩니다. 따라서, "Key"는 어떤 위치에 얼마나 주의를 기울일지를 결정하는 역할을 합니다.
반면, "Value"는 실제로 주의를 기울인 위치에서 가져올 정보나 내용을 나타냅니다.
요약하면, "Key"와 "Value" 모두 은닉 상태에서 나오지만, 각각 주의를 기울일 위치를 결정하는 역할과 해당 위치의 정보를 제공하는 역할을 합니다. "Key"를 "위치"라고 부르는 것은 개념적인 이해를 돕기 위한 것이며, 실제 값 자체는 은닉 상태에서 나옵니다.
Query
: 디코더의 특정 시점에서의 은닉상태
(Attention하는 위치)
key
: 인코더의 은닉상태를 이용하여
어디에 주의를 기울일 것인지 위치결정
value
: 인코더의 은닉상태
주의를 기울이는 위치에서의 실제 정보