인프런 커뮤니티 질문&답변

A+Plus님의 프로필 이미지
A+Plus

작성한 질문수

딥러닝 이론 + PyTorch 실무 완전 정복

[이론] Transformer의 Encoder

Section 16 [이론] Transformer의 Encoder 질문

해결된 질문

작성

·

83

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

변정현님의 프로필 이미지
변정현
지식공유자

안녕하세요 변정현입니다!

(96번째 슬라이드 참조)

imageH는 기존의 attention의 query Q, key K, value V vector의 차원에 해당됩니다!

(113번째 슬라이드 참조)

image그리고 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으로 설정하는 것입니다!

A+Plus님의 프로필 이미지
A+Plus

작성한 질문수

질문하기