이번 글에서는 최근 NLP 모델들의 급격한 성능 향상을 가능한 Transformer 아키텍쳐의 근간이 되는 Attention에 대해 알아보겠습니다.
(이 글은 네이버 커텍트재단 Boostcamp AI Tech 4기 NLP 과정 주재걸 교수님 강의, 자연어처리를 위한 딥러닝 입문, Bahdanau et al. (2014)를 참고하여 작성하였음을 밝힙니다.)
등장 배경
언어 데이터는 단어(토큰)이 연속되는 시계열 데이터로 볼 수 있습니다. 그리고 언어 데이터는 입출력 문장의 길이가 제각각입니다. 따라서 시계열 데이터를 잘 다루면서도 입출력 길이에 구애받지 않는 RNN 계열의 Seq2Seq 구조가 언어 데이터 처리에 많이 사용되어 왔습니다.
하지만 Seq2Seq 구조는 Source 문장의 길이가 어떻든 간에 시퀀스의 전체 정보를 고정된 길이의 벡터, 즉 인코더의 마지막 Time-step hidden state vector로 압축해야 하는 한계점(Bottleneck problem)이 있었습니다. 또한, LSTM을 이용해 Long-term dependency 문제를 어느 정도 해소했다고 하더라도 결국 문장 앞쪽의 정보는 소실될 수밖에 없다는 한계점도 지니고 있었습니다.
Bahdanau et al. (2014)에서는 이러한 문제를 해결하기 위해 입력 문장을 Fixed-length vector가 아닌 vector sequence로 인코딩하고, 디코딩 단계에서 이 벡터들 중 일부를 적절하게 선택하는 구조를 제안하였습니다. 향후 이 구조는 Attention 구조라고 불리게 됩니다.
Seq2Seq 구조 다시 살펴보기
번역 Task를 한다고 가정하겠습니다. 우리는 영어 문장을 한국어 문장으로 번역하는 모델을 설계하고 있습니다. 즉, 한국어 문장이 Source 문장, 영어 문장이 Target 문장이 됩니다. 이 Task를 Seq2Seq 구조로 푼다면, 인코더는 영어 문장을 입력 받아서 Context vector를 만들어서 디코더로 넘깁니다. 그러면 디코더는 이 Context vector을 입력 받고, 한편으로는 이전 step에서 디코더가 예측한 단어들도 입력 받습니다. 그리하여 인코더의 정보와 이전 step 단어들의 정보를 종합하여 현재 step에 어떤 한국어 단어가 가장 어울릴지를 예측하게 됩니다.
Forward propagation
그렇다면 Attention을 적용한 Seq2Seq 구조는 어떻게 이루어져 있을까요? 순전파 과정을 먼저 살펴보겠습니다. 아래의 그림은
위 그림에서 좌측은 인코더, 우측은 디코더를 나타냅니다. 인코더의 RNN은 "I am a student"라는 문장에서 각 시점의 영어 단어를 입력 받아서 각 시점마다 hidden state $h$를 출력하고, 마지막 시점의 hidden state vector는 디코더로 넘깁니다. 디코더는 인코더에서 넘어온 hidden state를 받아서, 현재 시점 "는"까지의 hidden state $h_t$를 출력합니다.
이제 각 시점의 인코더 hidden state들과, 디코더의 현재 시점 hidden state $s_t$와의 유사도가 각각 계산됩니다. 이렇게 계산된 값을 Attention score라고 부릅니다. 그리고 이 Attention score로 이루어진 벡터 $e_t$가 Softmax를 통과하게 되면 Attention distribution 혹은 Attention vector $\alpha_t$ 가 만들어집니다. Attention vector의 값들은 Softmax를 통과하였으므로 확률값으로 해석할 수 있습니다. 이제 각 확률에 각 시점의 인코더 hidden state $h_i$ 를 가중합하여 Attention output(Context vector) $a_t$ 를 구할 수 있습니다. 이러한 과정을 통해 현재 시점의 target 단어와 모든 시점의 source 단어들을 비교했을 때 의미적으로 유사한 source 단어의 정보를 더 중요하게 다룰 수 있게 됩니다.
이제 이 Attention output은 디코더의 현재 시점의 hidden state $s_t$와 Concatenation되어서 Output layer로 들어갑니다. Output layer에서는 Dense layer 및 탄젠트하이퍼볼릭을 통과하고,한 번 더 Dense layer를 통과하여 Softmax로부터 다음 단어로 가장 그럴듯한 단어를 예측하게 됩니다.
Backward propagation
위 그림에서 노란색 화살표가 역전파가 흐르는 방향을 나타냅니다. 만약 일반적인 Seq2Seq이었다면 그림의 왼쪽 화살표와 같이 Attnention module을 통과하는 경로는 주어지지 않았을 것입니다. 즉, Attention module의 존재 덕분에 기울기가 디코더를 통과하며 희석되지 않고 인코더의 초반 hidden state까지 기울기가 전파될 수 있는 일종의 지름길을 제공해줍니다.
Attention의 장점
Bahdanau et al. (2014)에서는 이러한 구조를 적용했을 때 기계 번역의 성능이 향상되었음을 보고하였습니다.
위 그래프에서 RNNsearch는 Attention을 적용한 모델을, RNNenc는 기존 encoder-decoder 구조를 뜻하며, 뒤의 숫자는 학습할 때 설정한 max sequence length를 나타냅니다. 그리고 x축은 추론 때의 입력 문장 길이, y축은 번역 성능을 나타냅니다. RNNenc 모델들은 sequence 길이가 20쯤 될 때부터 성능이 현저하게 하락합니다. 하지만 RNNsearch 모델들은 전반적으로 성능이 높으며, 특히 RNNsearch-50 모델은 학습 데이터의 최대 길이 50을 넘어가는 입력에 대해서도 성능이 떨어지지 않고 유지되고 있습니다. 이처럼 Attention은 길이가 긴 문장에 대해서 좋은 성능을 낼 수 있습니다.
두 번째 장점은 위에서 언급하였듯이, Attention module 구조 덕분에 인코더 hidden state로 기울기가 흘러가는 지름길이 생김으로써 기울기 소실 문제를 해소할 수 있습니다. 또한 디코더가 매 시점마다 인코더의 모든 시점 정보를 참고함으로써 과거 정보 소실 문제도 해소할 수 있습니다.
마지막으로, 예측 결과의 해석 가능성도 제공해줍니다.
위 히트맵에서는 칸의 색깔이 흰색에 가까울수록 Attention score가 높다는 것을 나타냅니다. 얼핏 보면 Source 언어이든 Target 언어이든 그저 순차적으로 attention한 것처럼 보이지만, 자세히 보면 조금씩 attention하는 단어가 다릅니다. 예를 들어, (a)그림을 보면 영어 'European Economic Area'은 프랑스어 'zone europeenne economique '과 대응됩니다. 동일한 지시체를 가리키지만 어순이 약간 다릅니다. 히트맵을 자세히 보면 어순이 다름에도 불구하고 European은 europeenne, Economic은 economique, Area는 Zone과 attention score가 가장 높은 것으로 나타납니다. 즉, Source 언어의 어순과 Target 언어의 어순이 서로 다르더라도, 모델이 해당 단어를 번역할 때 어떠한 단어를 중요하게 생각했는지를 Attention score를 통해 해석해볼 수 있습니다.
References
- Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.
- 딥 러닝을 이용한 자연어 처리 입문 (https://wikidocs.net/book/2155)
- 네이버 커넥트재단 Boostcamp AI Tech 4기 강의 (비공개)
'NLP' 카테고리의 다른 글
NLP 트렌드의 흐름 간단 요약 (0) | 2023.06.23 |
---|---|
[NLP] BPE 기반 Tokenization 간단 정리 (0) | 2023.05.15 |
Boostcamp AI Tech 4기 최종 프로젝트 후기 (일기 감성 분석 및 코멘트 생성) (1) | 2023.02.19 |
ODQA (Open Domain Question Answering) 경진대회 후기 (Naver BoostCamp AI tech 4기) (0) | 2023.01.23 |
한국어 관계 추출(Relation Extraction) 경진대회 후기 (Naver BoostCamp AI tech 4기) (0) | 2022.12.12 |