혼자공부하는 머신러닝+딥러닝(개정판) 662페이지 멀티헤더 관련 서술에 궁금증이 생겨서 질문 드립니다.
해당 662페이지에서
"(768,) 크기의 임베딩 벡터가 인코더 블록에 입력되면, 12개의 헤드에 나누어 전달됩니다. 따라서 각 헤드에 입력되는 벡터 크기는 (64,)가 됩니다.."
라는 서술에 궁금증이 있습니다.
BART는 아니지만, Attention Is All You Need에서는
head_i = Attention(QW^Q_i, KW^K_i, KW^K_i),
W^Q_i 의 차원은 d_model X d_k 으로 되어 있습니다.
BART의 차원에 대응해 보자면, d_model은 768이며, d_k는 64입니다.
제가 이해하기로는, 우선 W^Q_i는 한 헤더 안에 들어가 있다고 생각했습니다.
그러면 하나의 헤드에서는 (768,)의 입력을 받고, (64,)의 벡터를 출력한다고 이해했습니다.
즉,
"(768,) 크기의 임베딩 벡터가 인코더 블록에 입력되면, 12개의 헤드에 나누어 전달됩니다. 이때 각 헤드에 입력되는 벡터 크기는 (768,)이되, 출력 벡터 크기는 (64,)가 됩니다."
로 해당 논문에서 이해했습니다.
다만, 책에 서술되어 있는 설명은 헤드에 입력 벡터가 들어가기 전 (64,) 벡터로 분리하는 작업이 선행되고, 해당 (64,) 벡터가 하나의 헤드에 입력되는 것처럼 읽힙니다.
또한 661p의 도표에서도 각 헤드에 (64,) 크기의 벡터가 들어가는 듯하게 묘사가 되어있습니다.
만약 이런 상황이라면, W^Q_i 의 차원은
d_k X d_k (
d_k * h == d_model )인 상황이 올 거 같습니다.
혹시 제 이해에 부족한 부분이 있을까 싶어서 문의를 드리게 되었습니다. 감사합니다.