지난 글에서 Transformer의 핵심적인 Building Block인 Attention을 정리해봤습니다. 이어서 Vaswani et al. (2017) 논문을 통해 현재 나오는 수 많은 모델의 기반이 되고 있는 Transformer를 차근차근 이해할 수 있도록 정리해보았습니다.
Transformer 이전의 Sequential Modeling에는 주로 Recurrent, Convolutional Neural Network 기반의 Encoder-Decoder 구조와 Attention Mechanism이 사용되고 있었습니다. 하지만 논문이 발표된 이후 Transformer는 Sequential Modeling을 완전히 평정한 것은 물론, Computer Vision 등 다양한 도메인에서도 사용되는 등 딥러닝 계의 기본 Building Block이 되었습니다. SOTA 모델들을 이해하기 위해 꼭 필요한 Transformer를 구성하는 가장 중요한 요소인 Attention부터 차근차근 살펴보도록 하겠습니다.
Attention과 Query, Key, and Value
이전 글에서 알아본 Attention Value를 구하는 과정을 Query, Key, Value를 이용하여 일반화하면 다음과 같이 표현할 수 있습니다.
Query의 Attention Value는 Query와 {Key: Value} 페어가 주어졌을 때 Query와 Key 사이의 유사도를 비중으로 하여 각 Key에 해당하는 Value를 가중평균한 값입니다.
저는 이 표현을 조금 더 풀어서 이렇게 기억하고 있습니다. 🙂
자신의 점수가 궁금한 Query는 자기와 비슷하게 생긴 Key들의 Value를 보고 자신의 점수를 추측합니다.
일반화된 표현인만큼 앞서 살펴본 Bahdanau Attention과 Luong Attention의 Attention Value도 다음과 같이 Query, Key, Value로 표현할 수 있습니다.
Bahdanau Attention
- Query: 전 단계의 Hidden State 값 ($s_{t-1}$)
- Key: Encoder의 Hidden State 값 ($h_1, h_2, \cdots, h_{T_x}$)
- Value: Encoder의 Hidden State 값 ($h_1, h_2, \cdots, h_{T_x}$)
Luong Attention
- Query: 현재 단계의 Hidden State 값 ($s_t$)
- Key: Encoder의 Hidden State 값 ($h_1, h_2, \cdots, h_{T_x}$)
- Value: Encoder의 Hidden State 값 ($h_1, h_2, \cdots, h_{T_x}$)
Scaled Dot-Product Attention
Transformer에서는 Attension Value를 Scaled Dot-Product Attention 방식으로 계산합니다. Scaled Dot-Product Attention는 Luong Attention에서 소개해드린 바 있는 Dot-Product Attention을 Query와 Key의 길이인 $d_k$를 이용하여 Scaling한 것으로 계산 방법은 다음과 같습니다.
$$Attention(Q, K, V)=\text{Softmax}(\dfrac{QK^T}{\sqrt{d_k}})V$$
그럼 기존에도 잘 사용했던 Dot-Product Attention을 Scaling 해줘야하는 이유는 무엇일까요? Query와 Key의 길이가 커질수록 내적값 역시 커질 가능성이 높기 때문에 Softmax의 기울기가 0인 영역에 도달할 가능성이 높을 것입니다. 이 때문에 $d_k$가 작을 때는 Additive(Bahdanau) Attention과 Dot-Product Attention의 성과가 비슷했지만, $d_k$가 커질수록 Additive Attention의 성과가 상대적으로 더 우수한 경향이 존재하였습니다. 이러한 현상을 해결하기 위해 내적의 값이 Softmax의 기울기가 0인 영역까지 도달하지 못하도록 Scaling을 해주는 것이지요. 보다 수식적으로 표현하면 다음과 같이 설명할 수 있습니다.
Query와 Key의 i번째 요소를 $q_i, \; k_i$라 하고, 각각의 값은 $\text{i.i.d} \mathcal{N}(0, 1)$의 분포를 따른다고 가정합니다. 그러면 ${q_i}{k_i}$의 평균과 분산은 다음과 같습니다.
$$\begin{align}E[{q_i}{k_i}]&=E[q_i]E[k_i]\\&=0\cdot0\\&=0\end{align}$$
$$\begin{align}Var[{q_i}{k_i}]&=E[{q_i}^2{k_i}^2]-{E[{q_i}{k_i}]}^2\\&=E[q_i^2]E[k_i^2]\\&=(Var[q_i]+{E[q_i]}^2)(Var[k_i]+{E[k_i]}^2)\\&=1\end{align}$$
따라서
$$\sum_{i=1}^{d_k}{{q_i}{k_i}\sim\mathcal{N}(0, d_k)}$$
이므로 $\sqrt{d_k}$를 이용해 Scaling을 해준 Attention Score는 평균이 0, 분산이 1인 분포를 따르게 될 것입니다. 따라서 Scaling 이전과 비교하여 Softmax 함수 내에서 기울기가 0이 아닌 영역의 값일 가능성이 높기 때문에 위에서 이야기한 Gradient Vanishing 문제를 완화할 수 있게 됩니다.
잘못된 내용, 오타, 부정확한 문장 등 어떤 피드백이든 환영합니다. 감사합니다.
References
- Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., ... & Polosukhin, I. (2017). Attention is all you need. Advances in neural information processing systems, 30. [Link]
'Data Science > Maching Learning' 카테고리의 다른 글
차근차근 이해하는 Transformer(4): Masked Multi-Head Attention과 Decoder (2) | 2022.05.09 |
---|---|
차근차근 이해하는 Transformer(3): Multi-Head Attention과 Encoder (0) | 2022.05.06 |
차근차근 이해하는 Transformer(2): Single-Head Attention으로 이해하는 Encoder (2) | 2022.05.05 |
[DL] 쉽게 풀어쓴 Attention Mechanism (2): Luong Attention (0) | 2022.04.27 |
[DL] 쉽게 풀어쓴 Attention Mechanism (1): Bahdanau Attention (2) | 2022.04.23 |