본문 바로가기
인공지능/기초

(Scaled) Dot-Product Attention

by 태현IT 2024. 4. 28.

좌측의 사진을 보면, 이전 글에서 설명한 Sequence-to-sequence와 같은 구조를 가지고 가는 것을 알 수 있다. 하지만, RNN(또는 LSTM)을 사용하게 되면 발생하는 Vanishing Gradient Problem이 발생할 수 밖에 없다. 만약, Encoder의 첫 Input이 영향을 크게 줘야한다면 영향을 주기 어렵다는 뜻이 된다. 이를 해결하기 위해, 좌측의 사진처럼 Encoder Section의 값을 모두 검토하는 방식을 채택하게 된다.

반응형

단계별 분석

Step1. Attention score 구하기

출처 : https://wikidocs.net/22893

하지만 $score(s_{t}, h_{i}) = s_{t}^{T}h_{i}$

  • $s_t$ : t 시점 decoder 셀의 hidden state
  • $h_i$ : i 시점 encoder 셀의 hidden state

score 계산을 위해 encoder 셀의 모든 hidden state들과, decoder에서 t 시점에 해당하는 hidden state인 Query를 전치시켜서 곱한다. 

Attention score의 모음값 = $e^t = [s_{t}^{T}h_{1}, ..., s_{t}^{T}h_{N}]$

Step2. Attention Distribution구하기

Attention score 모음값들을 softmax에 통과시켜

Attention Distribution  $\alpha^{t}$ = softmax( $e^{t}$ ) 를 얻는다.

해당 분포를 통해서 어떤 시점에서의 hidden state가 얼마나 영향을 미치는 지 파악할 수 있다.

  • softmax를 활용한 이유는 전체 합이 1이 된다는 점, 그리고 전체 합(분모) 중 얼마나 비중을 차지하는 지를 표현하기 떄문이다.

Step3. Attention Value 구하기

출처 : https://wikidocs.net/22893

Attention score를 통해서 정해진 비율과 Encoder state의 각 시점에서의 hidden state를 곱해

Attention Value(context vector) = $a_t = \sum_{i=1}^{N} \alpha_i^th_i$ 를 구합니다.

 

Attention is all you need에서 제공한 수식을 Scaled Dot-Product Attention 수식을 보면 Step1~3이 한번에 압축된 수식으로 소개된다.

Attention$(Q,K,V)$ = softmax$(\frac{QK^T}{\sqrt{d_k}})V$ 으로 표현되어있다.

  • $Q$ : Query, t 시점에 해당하는 decoder 셀의 hidden state(유추하기 위한 정보)
  • $K$ : Key, 모든 시점에 해당하는 encoder 셀의 hidden states(검토하기 위한 정보)
  • $V$ : Value, 모든 시점에 해당하는 encoder 셀에서의 hidden states(비율을 적용하기 위한 정보)
  • $d_k$ : Query와 Key의 차원

즉, Step2의 Attention score를 구하는 수식에 크기만큼 나누어 사용(Scaling)하는 차이가 존재한다.

 

Step4. Attention Value과 Decoder의 t시점 연결

출처 : https://wikidocs.net/22893

Attention Value와 Decoder의 t시점 hidden state를 concatenate하여 하나의 벡터를 만들고 이를 통해 예측을 진행한다.

반응형

'인공지능 > 기초' 카테고리의 다른 글

LSTM & GRU  (0) 2024.05.07
Sequence-to-sequence(seq2seq) & Teacher-forcing  (0) 2024.04.27
Applications of RNNs  (0) 2024.03.23
Recurrent Neural Network  (2) 2024.03.23