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)를 읽고 정리해보았습니다.
Attention Mechanism의 등장 배경
Attention이 등장하기 이전에는 Encoder와 Decoder로 이루어진 Sequence-to-Sequence(Seq2Seq) 모델을 통해 Sequential Data를 모델링하였습니다. Seq2Seq 모델은 Encoder를 통해 입력된 데이터들을 고정된 크기의 Context Vector(c)로 표현하고, Decoder를 이용하여 Context Vector를 출력값으로 변환하는 것이 기본 골자입니다. 다만, Seq2Seq 모델이 제대로 작동하기 위해서는 입력된 데이터 안에 담긴 정보가 Context Vector에 모두 담겨있어야 했기에 입력되는 데이터의 길이가 길 경우 상대적으로 좋지 않은 성과를 보여주었습니다. 이러한 한계를 개선하기 위해 나온 기법이 Attention Mechanism입니다.
Attention Mechanism
기본 개념
위해서 설명한 고정된 Context Vector에 기반한 Seq2Seq 모델의 구조적인 한계점을 개선하기 위하여 제안된 Attention Mechanism의 아이디어는 다음과 같습니다.
지금 당장 예측해야 할 값에 도움이 되는 입력 데이터만 골라서(Attention) 활용하자!
이러한 아이디어에 따르면 더 이상 입력 데이터의 모든 정보가 하나의 벡터에 담길 필요가 없습니다. 이러한 개념을 최초로 선보인 Bahdanau, D., Cho, K., & Bengio, Y. (2014) 논문을 통해 아이디어가 어떻게 구현되었는지 살펴보겠습니다. (참고: 본 논문은 Attention 기법을 최초로 소개한 논문이며, 이 때는 Attention이라는 용어 대신 Alignment라는 용어가 사용되었습니다.)
Bahdanau Attention
Encoder를 통해 각 입력 데이터의 Hidden State(Annotations) $h_{1}, h_{2}, \cdots h_{T_x}$를 얻는 과정은 기존 Seq2Seq와 동일하며, Seq2Seq와 차별화되는 부분은 Decoder의 Hidden State를 계산하는 과정입니다. Seq2Seq에서 Decoder의 t시점의 Hidden State $s_t$는 다음과 같이 계산됩니다.
$$s_t=Decoder(y_{t-1}, s_{t-1}, c)$$
Bahdanau et al. (2014)가 제안한 $s_t$의 계산 방법은 다음과 같습니다.
$$s_t=Decoder(y_{t-1}, s_{t-1}, c_t)$$
즉, 기존의 방법론은 모든 Hidden State를 계산할 때 동일한 Context Vector를 사용하는 반면, Bahdanau et al. (2014)은 Hidden State를 계산할 때마다 새롭게 만들어진 Context Vector를 이용하게 됩니다. 위에서 말씀드린 아이디어를 적용되도록 Context Vector를 계산하는 방법은 어떤 것이 있을까요? Bahdanau et al. (2014)가 제안한 방법은 다음과 같습니다.
1. Alignment Model(Score Function) $a$를 이용하여 $s_{t-1}$과 $h_j$ 가 얼마나 유사한지 나타내는 Attention Score $e_{t-1, j}$를 계산합니다.
$$e_{t-1, j}=a(s_{t-1},h_j)$$
이때 다양한 Alignement Model이 사용될 수 있으며, Bahdanau et al. (2014)가 제안한 모델은 다음과 같습니다.
$$a(s_{t-1},h_j)=v_a^T\tanh(W_a[s_{t-1};h_j])$$
$$\text{where }v_a\text{ and }W_a\text{ are learnable parameters}$$
2. Softmax를 이용하여 Attention Score를 Attention Weight(Alignment Vector) $\alpha_{t-1, j}$로 변환합니다.
$$\alpha_{t-1, j}=\dfrac{exp(e_{t-1, j})}{\sum_{k=1}^{T_x}{exp(e_{t-1, j})}}$$
3. 계산된 Attention Weight와 Encoder 부분의 Hidden State $h_j$를 가중 평균하여 t시점에 사용될 Context Vector를 계산합니다.
$$c_t=\sum_{j=1}^{T_x}{\alpha_{t-1, j}}{h_j}$$
위 방법은 t시점의 예측에 사용되는 Hidden State $s_{t-1}$와 유사할수록 예측에 도움이 되는 입력값이라고 가정한 것과 같습니다. 유사한 정도를 Attention Score로 표현한 후 이를 확률로 변환하여 Encoder의 Hidden State $h_j$를 가중 평균한다는 점에서 위와 같은 방식은 Attention의 기본 아이디어를 잘 표현했다고 볼 수 있습니다.
더불어 Attention의 계산 방식이 매우 다양하겠다는 생각도 듭니다. 예를 들면 비슷한 정도를 계산하기 위해 추가적으로 학습이 필요한 Parameter를 이용하는 방식을 꼭 사용해야 할까요? 혹은 이전 시점의 값인 $h_{t-1}$ 대신 현재 시점에 조금 더 초점을 맞출 수는 없을까요? 다음번에는 이런 생각들을 이용해 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]
- Sutskever, I., Vinyals, O., & Le, Q. V. (2014). Sequence to sequence learning with neural networks. Advances in neural information processing systems, 27. [Link]
- 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 |
차근차근 이해하는 Transformer(1): Scaled Dot-Product Attention (2) | 2022.05.02 |
[DL] 쉽게 풀어쓴 Attention Mechanism (2): Luong Attention (0) | 2022.04.27 |