[NLP — 트랜스포머 ] Multi-head Attention #2

Ella Vibe (Sooyeon Lee)
3 min readFeb 9, 2023

--

attention후 linear layer 작업에 대해서

노드 설명.

Scaled Dot-Product Attention에서 정말 많은 이야기를 했는데, 그것을 이해하고 나면 정작 Multi-Head Attention 모듈은 간단합니다. 일전에 Embedding이 어떤 추상적인 속성을 담고 있다고 배웠던 것, 기억하시나요? Multi-Head Attention은 그 개념을 활용해서 이해를 하면 아주 쉽습니다.

바나나라는 단어가 512차원의 Embedding을 가진다고 가정합시다. 그중 64차원은 노란색에 대한 정보를 표현하고, 다른 64차원은 달콤한 맛에 대한 정보를 표현할 겁니다. 같은 맥락으로 바나나의 형태, 가격, 유통기한까지 모두 표현될 수 있겠죠. 저자들은 '이 모든 정보들을 섞어서 처리하지 말고, 여러 개의 Head로 나누어 처리하면 Embedding의 다양한 정보를 캐치할 수 있지 않을까?' 라는 아이디어를 제시합니다.

`Multi-Head Attention에서 Head는 주로 8개를 사용합니다. Embedding된 10개 단어의 문장이 [10, 512]의 형태를 가진다면, Multi-Head Attention은 이를 [10, 8, 64]로 분할하여 연산합니다. 각 64차원의 Embedding을 독립적으로 Attention한 후, 이를 이어붙여 다시금 [10, 512]의 형태로 되돌리며 연산은 끝이 납니다.

Q. 결국 쪼개서 attention처리 후 다시 원형태로 되돌린다 인데, 유사한 특성 분포로 매핑을 해주기위해 linear 레이어를 추가하는데, 이때 유사 특성 분포가 중요한 이유는 무엇일까?

  1. 각각의 헤드가 어텐션한 값이균일한 분포를 가질 거란 보장이 없다

2. 값을 스케일링 해준다기 보다 파라미터의 갱신값들을 적절한 분포를 갖도록 조절해주는 역할

선형변환을 시킨다는 건?

이제 단어 벡터를 셀프어텐션이 잘 될 수 있는 각 공간에 위치시킨다는 거죠 한 공간에

멀티헤드를 쓴다는건?

헤드 수만큼 벡터의 차원을 분할한다는 거죠 그러면 분할된 차원들이 각각 서로 다른 공간에 있을 거라고 보는거죠 따로 계산을 하니까

멀티헤드는 동일한 시퀀스를 헤드 수만큼 서로 다르게 셀프어텐션한다는 거자나요 그럼 셀프어텐션 한 공간이 헤드 수만큼 생기는거죠 거기서 각각 선형변환이 일어나니까

이렇게 다르면 다른걸 그냥 concat해서 쓸때 무슨 문제가 발생할까요

개네들이 따로 놓지 않고 적절히 균형을 이룰 수 있게 해주는 리니어 레이어를 추가해주면 그 리니어 레이어의 학습 파라미터들은 값을 스케일링 해준다기 보다 파라미터의 갱신값들을 적절한 분포를 갖도록 조절해주는 역할을 하겠죠 각 멀티헤드의 파라미터들을 파라미터들이 연산된 값들에 적절한 upstream gradient를 다르게 주겠죠

--

--

Ella Vibe (Sooyeon Lee)
Ella Vibe (Sooyeon Lee)

Written by Ella Vibe (Sooyeon Lee)

Interested in AI, ML, agile, community domain. Love Zumba!

No responses yet