Attention 메커니즘 : 디코더에서 출력벡터를 예측할 때 인코더의 입력 문장을 참고한다. 즉, 엔코더와 디코더의 입력벡터들간의 유사도를 구해서 **해당 시점에서 예측해야할 단어와 연관이 있는 입력 단어 부분을 좀 더 집중(attention)**한다.

Attention 과정 :

  1. 디코더의 시점 t에서 단어를 예측하기 위해, 인코더의 모든 은닉 상태(hi) 각각이 디코더의 현 시점의 은닉 상태 st와 얼마나 유사한지를 판단하는 Attention Score를 계산한다.
  2. 이러한 Attention Score의 모음 값을 Softmax 함수를 거치게 해서 각 인코더의 은닉 상태가 디코더의 은닉 상태와 유사한정도를 총합이 1인 확률로 나타내는 어텐션 가중치(Attention Weight)를 계산한다.
  3. 이러한 어텐션 가중치(Attention Weight)를 다시 인코더의 모든 은닉 상태(hi)와 각각 곱하고 더함으로써 어텐션 값(Attention Value) a를 구한다.
  4. 이 어텐션 값(Attention Value) a를 디코더의 현 시점의 은닉 상태 st 와 concat 한 후에, tanh 와 같은 함수를 거친 후, 이를 출력층 y의 입력으로 사용한다.

Query와 Key의  행렬곱을 Softmax 함수를 취해 나온 Attention Weight(a) 와 Value의 곱을 통한 Attention 값(Output feature)

Query와 Key의 행렬곱을 Softmax 함수를 취해 나온 Attention Weight(a) 와 Value의 곱을 통한 Attention 값(Output feature)

출처 :

15-01 어텐션 메커니즘 (Attention Mechanism)

Self-Attention 메커니즘

Transformer 모델에서 사용된다. Transformer는 RNN 구조(입력 벡터의 순서를 고려)를 사용하지 않고, 인코더-디코더 구조에서 Attention 모듈만 사용한다.

기존의 Attention 메커니즘(엔코더와 디코더의 유사도)과 달리, Self-Attention은 입력 문장 내의 단어들끼리 유사도를 구한다.