작성
·
142
0
중간에 루트 키의 차원으로 나눠주는 부분에 있어서 내적이 너무 커지는 것을 방지하기 위함이라고 하셨는데 내적이 커지면 왜 그레디언트 배니싱 현상이 일어나는 것인가요?
답변 1
0
안녕하세요.
좋은 질문 감사합니다.
트랜스포머 저자들이 좀 애매한 표현으로 관련 내용을 언급하였습니다. 내적의 차원과 크기가 커질 경우 softmax의 결과가 미분값이 작은 구간에 모여있을 것이라고 추측 했다고 합니다.
루트 d_k로 나누는 이유는 키, 쿼리 값이 평균 0, 분산 1인 독립 변수라고 가정할 때 내적의 평균과 분산이 각각 0, d_k이 나옵니다. 개인적인 생각으로는 루트 d_k로 나누어 분산을 다시 1로 만들어 키, 쿼리, 내적이 같은 분포를 따르게 하려고 했던 것 같습니다.
추가적으로 CIFAR10을 이용한 우리 실험에서는 스케일링에 대한 유의미한 차이는 없었습니다.
열공하세요!