2017년에 등장한 Transformer(Vaswani et al. 2017)는 어느덧 딥러닝의 기본적인 Building Block으로 사용된다고 해도 과언이 아닐 정도로 대중화되었습니다. Transformer를 이해하기 위해 사전 지식으로 필요한 Attention Mechanism의 기본적인 내용을 기록해두고자 Bahdanau, D., Cho, K., & Bengio, Y. (2014)와 Luong, M. T., Pham, H., & Manning, C. D. (2015)를 읽고 정리해보았습니다.
이번 글에서는 지난번 글에 이어 여러 방법을 통해 Bahdanau Attention을 개선할 수 있는 방법에 대해 알아보겠습니다.
Attention Mechanism
Luong Attention
Loung et al. (2015)은 Bahdanau et al. (2014)의 연구를 이어받아 다양한 Attention Score를 실험하고, 계산 방식에 따라 기법을 분류하였습니다. 구체적인 내용을 살펴보기 Loung et al. (2015)가 제시한 Attention 구조를 먼저 살펴보겠습니다.
Attention 구조
Bahdanau et al. (2014)와의 차이점이 보이시나요? Bahdanau Attention에서는 Decoder의 Hidden State가 만들어질 때 이전 시점의 Hidden State를 이용해 만든 Context Vector를 이용한 반면, Loung Attention에서는 우선 이전 시점의 Hidden State를 이용해 Hidden State $s_t$를 계산한 후 이를 이용하여 Context Vector를 만드는 것을 확인하실 수 있습니다. 이를 간단한 수식으로 표현하면 다음과 같습니다.
Bahdanau et al. (2014)가 제안한 $s_t$의 계산 방법은
$$c_t=\text{Attention}(s_{t-1}, h_j)$$
$$s_t=\text{Decoder}(y_{t-1}, s_{t-1}, c_t)$$
이었고,
Loung et al. (2015)가 제안한 방법은
$$s_t=\text{Decoder}(y_{t-1}, s_{t-1})$$
$$c_t=\text{Attention}(s_t, h_j)$$
$$\tilde{s}_t=\tanh(s_t, c_t)$$
와 같이 표현할 수 있습니다.
사실 t시점의 예측을 위해 Encoder의 Hidden State들과 t-1시점의 Hidden State을 비교하는 것보다는 t시점의 Hidden State와 비교하는 것이 조금 더 직관에 부합하는 느낌이 듭니다. 전체 구조를 확인했으니 다음으로 Loung et al. (2015)가 제시한 여러 Attention Score 계산 방법을 확인해보겠습니다.
다양한 Attention Score
Loung et al. (2015)는 Attention Score를 계산할 때 이용하는 Encoder의 Hidden State의 범위에 따라 Global Attention과 Local Attention으로 구분했습니다. 이번 글에서는 Global Attention에 초점을 맞추어 설명을 이어나가도록 하겠습니다.
1. Concat Alignment Model
Bahdanau et al. (2014)가 제안한 Score Function의 구조를 그대로 사용한 Score Function입니다.
$$a(s_t, h_j)=v_a^T\tanh(W_a[s_t;h_j])$$
2. Dot-Product Alignment Model
내적을 이용하여 계산된 Decoder의 Hidden State와 Encoder의 Hidden State 간의 유사도를 이용하는 방식입니다.
$$a(s_t, h_j)=s_t^Th_j$$
3. General Alignment Model
내적을 할 때 Learnable Parameter $W_a$를 이용하여 각 Feature의 중요도를 반영하는 동시에 Scaling 효과를 누리고자 하는 방식입니다.
$$a(s_t, h_j)=s_t^TW_ah_j$$
Alignment Model을 이용하여 Attention Score $e_{t, j}$를 계산한 이후의 과정은 Bahdanau et al. (2014)와 같습니다. (Softmax를 이용하여 계산한 Attention Weight과 Encoder의 Hidden State $h_j$를 가중 평균하여 Context Vector 생성)
마치며
Attention Mechanism을 이해하기 위해 Bahdanau, D., Cho, K., & Bengio, Y. (2014)와 Luong, M. T., Pham, H., & Manning, C. D. (2015)를 읽고 정리 해봤습니다. 자세한 계산 방법은 필요할 때 다시 논문을 살펴보면 되겠지만, Attention Mechanism이 나오게 된 배경과 기본적인 아이디어는 꼭 알아두어야 한다고 생각합니다.
글의 목적이 전체적인 흐름을 이해하고 중요한 개념을 짚고 넘어가는 데 있었기 때문에 논문의 전체 내용을 담지는 못했습니다. Encoder, Decoder로는 어떤 모델을 사용했는지(Bahdanau의 경우 Bidirectional GRU, Loung의 경우 LSTM), Local Attention은 무엇인지 등 보다 자세한 내용을 알고 싶으시다면 논문을 참조해주세요! 🙂
잘못된 내용, 오타, 부정확한 문장 등 어떤 피드백이든 환영합니다. 감사합니다.
References
- Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473. [Link]
- Luong, M. T., Pham, H., & Manning, C. D. (2015). Effective approaches to attention-based neural machine translation. arXiv preprint arXiv:1508.04025. [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 |
차근차근 이해하는 Transformer(1): Scaled Dot-Product Attention (2) | 2022.05.02 |
[DL] 쉽게 풀어쓴 Attention Mechanism (1): Bahdanau Attention (2) | 2022.04.23 |