해결된 질문
24.07.22 10:04 작성
·
77
1
안녕하세요, 강의 감사드립니다.
multi-head attention에서 Q,K,V 차원에 대해 질문드립니다.
1. 여기서 H는 multi-head 시킨 후 (concatnation 후)의 최종 feature 차원을 의미하는지 궁금합니다. (단일 self-attention에서도 Q,K,V에서 H와 다른거 같은데 확인부탁드립니다)
2. 만약, 1이 맞다면 Q,K,V의 차원은 N x H/M 이 되어야 하는건 아닌가 싶습니다. (m은 M을 표현하기 위한 index로 보이기 때문입니다)
혹시 제가 잘못 이해하고 있는 부분이 있다면, 정정해주시면 감사드리겠습니다!
답변 1
1
2024. 07. 22. 20:40
안녕하세요 변정현입니다!
(96번째 슬라이드 참조)
H는 기존의 attention의 query Q, key K, value V vector의 차원에 해당됩니다!
(113번째 슬라이드 참조)
그리고 M은 Multi-head attention의 Head의 개수입니다!
참고로, Multi-head을 사용할때, 저희는 각 Head에 해당되는 query, key, value vector들의 크기는 H/M으로 설정하게 됩니다. 그 이유는 다음과 같습니다.
Multi-head attention에서는 각 head가 output vector O_m을 하나씩 출력하게 됩니다.
따라서 M개의 output vector O_m을 구하게됩니다.
저희는 M개의 output vector들을 하나의 vector로 concatenation해서 최종 output vector인 O을 구하게 됩니다.
하지만, Q, K, V의 차원의 크기를 H로 그대로 사용하게 되면 concatenation된 최종 output vector O의 크기는 M*H가 됩니다.
그리고 Layer을 거듭할수록 M*H, M*M*H 이렇게 늘어나게 됩니다.
따라서 최종 출력되는 O의 크기가 일정하게 유지하기 위해서 각 head의 Q, K, V의 차원 크기를 H/M으로 설정하는 것입니다!