의문
transformer에서 사용되는 Scaled dot-product attention에서 score는
Attention(Q,K,V)=softmax(dkQKT)V
여기서 왜 dk로 나눌까?
이유
S=QKT라 했을 때, S의 원소는 Sij=∑n=1dkQinKjn이라 할 수 있다.(내적이므로)
Q와 K의 모든 값이 독립이면서 평균이 0, 분산이 1이라 할 때
E[Xn]=E[QinKjn]=E[Qin]E[Kjn]=0
Var(Q1,iKi,1)=(Var(Q1,i)+E[Q1,i]2)(Var(Ki,1)+E[Ki,1]2)−E[Q1,i]2E[Ki,1]2=1
Xn들이 독립이면 분산은 더해져
Var(Sij)=∑n=1dkVar(Xn)=∑n=1dk1=dk
따라서 QKT의 각 원소는 평균이 0, 분산이 dk의 분포를 갖게 된다.
Sij에 dk를 나눠주면서 차원 dk가 커져도 분산이 1 근처로 유지되게 만든다.
softmax는 pi=∑jesjesi이기에 score 벡터인 s의 값이 커지면 차이가 커지게 된다. 이렇게 되면 softmax가 포화되어 one-hot에 가깝게 형성된다.
이 경우, softmax 미분 시에도 확률들의 곱으로 표현되기 때문에 확률값이 작아지면 gradient vanishing 문제가 발생할 수 있다. 따라서 scailing을 통해 score 값들이 과도하게 커지는 것을 막는 것이다.