attention, scaled dot-product

woojjn·2022년 3월 16일
0

NLP

목록 보기
2/2

Transfomer의 논문 제목 "Attention is all you need"에서 볼 수 있듯이 Transformer는 Seq2Seq with attention 모델에서 RNN의 특징을 지운 후 attention을 주로 사용한 모델이다. transformer는 self-attention module이 존재한다. self-attention은 다른 임베딩 벡터 간의 유사도 뿐 아니라 자기 자신과의 유사도까지 계산하여 이를 계산한다. 보통의 경우 이 유사도를 벡터 간의 내적을 통해 구하므로 self-attention을 통해 얻은 weight는 자기 자신과의 유사도가 dominant한 벡터가 나올 것이다. 이를 해결하기 위해 나온 것이 Query(Q), Key(K), Value(V)이다.

Q와 K는 각각 다른 단어와 유사도를 구하기 위해 쓰인다. 그 유사도를 구한 후 그에 해당하는 V와 곱한 후 평균을 통해 output을 얻을 수 있다. 이 때문에 Q, K는 같은 차원을 가져야 하지만 V는 굳이 같은 차원을 가질 필요는 없다. 이를 수식으로 표현하면 다음과 같다.

Attention(Q, K, V) = softmax(QK^T, dim=0)V
(^T : transpose)
차원
- Q -> (|Q| X d_k)
- K -> (|K| X d_k)
- V -> (|V| X d_v)

논문에서 Transformer 모델 아키텍쳐를 보면 scaled dot-product를 통해 attention값을 얻는다. 이 이유는 다음과 같다. Q, K의 하나의 row 벡터를 q, k라 하자. 그리고 각각의 벡터 성분이 평균이 M이고, 분산이 v인 분포에서 가져왔다고 할 때, 두 벡터의 내적 값의 평균은 M × d_k이고 분산은 v × d_k가 된다. 이를 softmax를 취하면 큰 값에 편향되어 weight를 얻기 때문이다. 그래서 두 내적 값에 표준 편차인 sqrt(v × d_k)만큼 나누어 softmax를 취하는 것이다. 만약 이를 보정해주지 않으면 softmax가 peak되어 gradient vanishing이 발생하게 되고, 학습이 전혀 일어나지 않는 경우가 생기게 된다.

0개의 댓글