Attention model

J. Hwang·2024년 8월 14일
0

지난 포스팅들에서 시퀀스 데이터를 처리하는 모델들에 대해서 배웠다. 그러나 기존의 모델들 (LSTM, GRU 등) 들은 매우 긴 시퀀스를 처리할 때 문제가 생긴다. 예를 들어, seq2seq 모델에서는 encoder에서 전체 sequence가 하나의 embedding으로 변환되는데, 이 때 전체 sequence의 길이가 길면 information loss가 생기게 된다. 이러한 문제점을 해결하기 위해 고안된 모델이 attention model이다.

attention model은 이를 해결하기 위해서 input step에서의 hidden state를 모두 고려해서 관련성이 높은 input token에 더 집중해서 output을 예측한다. 관련성이 높은 token을 찾기 위해 attention 함수를 사용한다.

Attention(Q, K, V) = attention value
Q = Query. 비교 기준. decoder의 hidden state.
K = Key. 비교 대상의 key. encoder의 hidden state.
V = Value. 비교 대상의 실질적인 값. encoder의 hidden state
결과 attention value는 encoder hidden state의 가중치 평균이 된다.

* Query와 Key는 동일한 dimensionality를 가져야 함

attention 함수란 결국 query와 key 사이의 유사도 (similarity)를 구해서 어떤 token에 가장 집중해야하는지를 알려주는 것이다. 유사도를 측정하는 방법들은 여러 가지가 있는데, 여기서는 매개변수가 적고 간단하기 때문에 많이 쓰이는 dot product (내적) 방식을 이용하겠다.

Q와 K를 내적해서 그 값으로 hidden state 간의 similarity를 계산하고, 그 값들을 더해서 softmax 취한 값을 attention coefficient라고 한다. 거기에 value 값을 곱하면 attention value가 나온다.

결과적으로 query와 유사도가 높은 encoder의 hidden state에 큰 weight을 주게 되고, weight이 높은 단어에 집중하여 번역 작업을 하게 된다.

text summarization 작업 등에 사용할 수 있다.

profile
Let it code

0개의 댓글