본문 바로가기

Data Analysis/Natural Language Processing

Attention Mechanism

SeqtoSeq model의 한계

seq2seq 모델은 인코더에서 입력 시퀀스를 컨텍스트 벡터라는 하나의 고정된 크기의 벡터 표현으로 압축하고, 디코더는 이 컨텍스트 벡터를 통해서 출력 시퀀스를 만들어낸다. 이러한 RNN에 기반한 seq2seq 모델에는 아래와 같은 두 가지 문제로 인해, 기계 번역 분야에서 입력 문장이 길면 번역 품질이 떨어지는 현상이 나타난다.
1) 하나의 고정된 크기의 벡터에 모든 정보를 압축하려고 하니, 정보 손실이 발생
2) RNN의 고질적인 문제인 기울기 소실(vanishing gradient) 문제 존재

 

결국 seq2seq의 대안으로, Attention Mechanism이 입력 시퀀스가 길어지면 출력 시퀀스의 정확도가 떨어지는 것을 보정해주기 위해 등장했다. 

 


Attention

어텐션의 기본 아이디어는 디코더에서 출력 단어를 예측하는 매 시점(time step)마다, 인코더에서의 전체 입력 문장을 다시 한 번 참고한다는 점이다. 단, 전체 입력 문장을 전부 다 동일한 비율로 참고하는 것이 아니라, 해당 시점에서 예측해야할 단어와 연관이 있는 입력 단어 부분을 좀 더 집중(attention)해서 보게 된다. 

 

Key-Value

key-value 자료형인 dictionary 자료형은 key를 통해 mapping 된 value 값을 찾아낼 수 있다는 특징이 있다.

example_dict = {"algorithm1": "attention", "algorithm2": "gpt-1", "algorithm3": "bert"}

위 자료에서 example_dict의 key는 algorithm1, algorithm2, algorithm3 이고 각각 attention, gpt-1, bert라는 value에 매핑되어 있다. 이 개념은 attention부터 계속 사용되므로 인지하고 있는 것이 좋다.

 

Attention Funtion

Attention(Q, K, V) = Attention Value

어텐션을 함수로 표현하면, 주어진 쿼리(Query)에 대해서 모든 키(Key)와의 유사도를 각각 구한다. 그리고 구해낸 이 유사도를 키와 매핑되어있는 각각의 값(Value)에 반영해준다. 그리고 유사도가 반영된 값(Value)을 모두 더해서 리턴한다. 

 


Dot-Product Attention

Attention의 다양한 종류 중 가장 이해하기 쉬운 닷-프로덕트 어텐션에 대해 이해해보자.

디코더의 세번째 LSTM 셀에서 출력 단어를 예측할 때, 어텐션 메커니즘을 사용하는 모습을 보여준다. 디코더의 첫번째, 두번째 LSTM 셀에서 이미 je, suis를 예측하는 과정을 거쳤다고 가정한다. 세번째 LSTM 셀은 출력 단어를 예측하기 위해서 인코더의 모든 입력 단어들의 정보를 다시 한번 참고하고자 한다.  인코더의 소프트맥스 함수는 I, am, a, student 단어 각각이 출력 단어를 예측할 때 얼마나 도움이 되는지의 정도를 수치화한 값이다(소프트맥스 함수 위의 빨간색 직사각형 크기가 클 수록 함수 결과값이 큼을 의미한다). 이를 하나의 정보로 담아서 디코더로 전송된다. 결과적으로 디코더는 출력 단어를 더 정확하게 예측할 확률이 높아진다.

 

Attention Score

Attention Score는 Decoder 의 특정 예측 시점에서 Decoder의 hidden state가 Incoder의 각 모든 hidden state와 얼마나 유사한지를 나타낸 값이다. Decoder의 hidden state는 s_t, Incoder의 hidden state는 h_i로 표현하자면, 어떠한 어텐션 스코어 함수를 사용하냐에 따라 attention score가 달라질 것이다. 아래는 어텐션 스코어 함수에 대한 정리이다. 이외에도 다양한 스코어 함수가 있

다.

  

 

 

 

 

Reference

https://wikidocs.net/22893

https://hong-yp-ml-records.tistory.com/63