Attention Mechanism
Attention Mechanism
-
Attention Mechanism은 2015년 Neural machine translation by jointly learning to align and translate 이라는 논문에서 최초로 소개되었습니다. Attention이라는 단어는 직접적으로 등장하지는 않았지만, ‘Align’이라는 단어가 사용되었습니다.
-
Machine Translation에서 큰 위력을 발휘하고 있는 Self-Attention, Transformer, BERT가 모두 Attention을 Base로 만들어진 개념들입니다.
-
이번에는 Attention Mechanism에 대해서 알아보도록 하겠습니다.
0. Seq2Seq Model vs Attention Mechanism
- 우선, 기존의 Seq2Seq Model과의 비교를 위해 간단하게 구조를 비교해 보도록 하겠습니다.
0.1. 기존 Seq2Seq Model
0.2. Attention Mechanism 적용 Model
-
기존 Seq2Seq Model에서 몇가지 값들이 추가된 것을 확인할 수 있습니다.
-
추가된 값들과 내용들에 대해서 하나씩 알아보도록 하겠습니다.
1. Attention Mechanism
-
기존 Seq2Seq Model에서 Decoder가 시점 t에서 출력 값을 얻기 위해 필요한 값은 t-1에서의 Hidden State와 t-1의 출력 값입니다.
-
Attention Mechanism에서는 여기에서 Attention Value가 추가로 필요합니다.
-
이제부터 Attention Value를 어떻게 구하는지 한 번 알아보도록 하겠습니다.
-
Attention Value는 아래와 같은 순서로 찾습니다. 각 값들에 대해서 하나씩 알아보죠
Attention Value는 다음 4가지 순서(값)을 계산하면서 값을 구할 수 있습니다.
1) Attention Score
2) Attention Distribution
3) Attention Value( Output )
4) Decoder Hidden State
2. Attention Score
-
Attention Score란 Decoder가 t 시점에서 출력(예측값)을 얻기 위해 Encoder의 각 Hidden State가 현재 Decoder의 Hidden State와 얼마나 유사한 지를 나타내는 값이라고 보면 됩니다.
-
모든 Encoder의 Hidden State와 계산을 하기 때문에 하나의 Decoder Hidden State 값의 Attention Score의 값은 Encoder의 Hidden State 값의 개수와 동일합니다.
-
실제 Attention Score구하는 공식은 아래와 같습니다.
-
Attention Score의 모음 et = [ … … … … ]와 같은 형태의 Scalar 값의 모음이 될 것이다.
-
a(Alignment Model)은 Attention Score를 계산하는 방법이며, 이는 다양한 방법이 있을 수 있다.
-
다양한 Alignment Model(Attention Score)은 마지막에 소개해 드리겠습니다.
- 이번 글에서는 Dot Product를 이용하여 Attention Score를 계산하는 방법을 Alignment Model로 채택했다면, Attention Score는
가 될 것이고, Attention Score의 모음 et 는 다음과 같은 형태가 될 것입니다.
-
위 그림에서는 Attention Score를 Decoder의 마지막 단계의 값을 계산하는 과정에서 나타내고 있습니다.
-
실제로 Attention Score는 Decoder의 각 단계마다 계산을 하게 됩니다.
3. Attention Distribution
-
첫번째 Step에서 계산한 Attention Score를 softmax를 통과시켜서 각 값들의 비중을 계산하고, 최종적으로 Attention Distribution을 만듭니다.
-
계산된 값들은 합이 1이 되고, 이 값들이 바로 입력 시간 스텝에 대한 가중치, 즉 "시간의 가중치"가 됩니다.
-
아래 그림은 Attention Distribution을 계산하는 위치를 나타낸 것입니다.
-
간단하게 Attention Score 값들을 Softmax하는 과정입니다.
4. Attention Value(Output)
-
이제 지금까지 계산한 결과를 하나의 값을 만드는 단계입니다.
-
앞에서 계산한 Attention Distribution과 Encoder의 Hidden State를 곱하고 각 값들을 모두 더하여 최종적으로 하나의 Vector를 계산합니다. 이를 Attention Value(Output)이라고 합니다.
-
이 값은 매 Decoding때마다 다르게 계산되므로 Seq2Se2 Model의 Fixed Length Context Vector의 문제를 해결할 수 있습니다.
-
Attention Value와 Decoder의 Hidden State st를 Concatenate하여 새로운 st를 만듭니다.
-
새롭게 만들어진 st는 매 Step마다 Encoder의 상태를 반영하므로 Seq2Seq의 Context Vector보다 훨씬 더 예측을 잘하게 됩니다.
이것이 Attention Mechanism의 핵심입니다.
- 이를 Dense층을 통과시키고, 이 값을 Softmax하여 최종 출력값을 취합니다.
5. Decoder Hidden State 비교
-
Attention이 없는 기존 Model(Seq2Seq)에서는 Decoder의 Hidden State가 하나의 Fixed Length Context Vector만 참고하지만,
Attention Mechanism을 사용함으로써, Decoding 각 Step마다 Encoder의 정보를 참고할 수 있으므로 성능 향상을 이룹니다.
6. Attention Score Functions
- 이 자료에서 Attention Score를 구하는 방식으로 Dot Product를 예로 들었지만, 다양한 방식의 Attention Score 구하는 방법이 존재합니다.