* "Attention is all you need"의 저자들이 주장한 바를 바탕으로 하며, 글의 내용은 그 주장을 읽은 저의 이해를 바탕으로 채워졌습니다.
개요
왜 dot-product attention이 아닌 scaled dot-product attention을 사용하는가?
Scaled dot-product attention을 사용하는 이유
Attention process에 대해 backpropagation을 진행할 때 gradient가 소멸되는 일을 방지하기 위해 scaled dot-product를 사용하여 attention vector를 만든다.
Scaling을 하지 않은 dot-product를 이용하여 attention을 하는 경우 아래와 같이 attention weight를 만든다.
즉, scaled 되지 않은 값을 가지고 attention score를 만들고 그 값을 softmax에 통과시켜 attention weight를 만든다.
이때 만약, query와 key vector 간의 내적값이 굉장히 커서 압도적인 attention score가 만들어지고 그것을 이용하여 attention vector를 만든다고 가정해보자.
그렇다면, 그 압도적인 attention score를 만들어낸 vector에 해당하는 attention weight는 최대값인 1에 가까울 것이다.
이러한 상황에서 backpropagation을 진행한다고 해보자. 특히 backpropagation이 softmax을 거치는 단계를 살펴보려고 한다.
그것을 보기 위해 먼저 Softmax를 미분해보자. Softmax를 아래와 같이 정의한다.
그리고 이를 $f_k(x)$에 대해 편미분하면 아래와 같은 결과가 나타난다.
이때 우리는 i = j인 상황에만 집중한다. 그러면 $p_i = p_j$이고 $p_i$는 1에 가까운 상황이다.
그림에서 볼 수 있듯이 softmax를 통과한 값 $p_i$가 1에 가까울수록 1 - $p_j$ 연산에 의해 gradient는 0에 가까워지게 된다.
따라서, transformer의 저자들은 이러한 문제를 해소하기 위해서 query와 key의 내적 값을 key weight matrix의 dimension에 루트를 씌운 값인 $\sqrt{d_k}$로 나눈다.
$\sqrt{d_k}$로 scaling을 하는 이유
* 추가
References
https://tigris-data-science.tistory.com/entry/차근차근-이해하는-Transformer1-Scaled-Dot-Product-Attention
https://arxiv.org/pdf/1706.03762.pdf
'자연어 처리 과정' 카테고리의 다른 글
The differences between InstructGPT and ChatGPT (0) | 2023.11.01 |
---|---|
Chain rule practice (0) | 2023.08.17 |
Transformer: Multi-head attention (0) | 2023.08.13 |
Quotient rule for derivative of softmax with respect to fk(x) (0) | 2023.08.09 |
What does "linear in parameters" mean in linear regression? (0) | 2023.07.31 |