본문 바로가기
딥러닝 with Python

[개념정리] 멀티헤드 셀프 어텐션(Multi-Head Self-Attention)

by CodeCrafter 2024. 2. 14.
반응형

 

이번에 알아볼 개념은 멀티 헤드 셀프 어텐션(Multi-Head Self Attnetion) 입니다.

 

[개념정리] Self attention / 셀프 어텐션

 

지난번에 알아봤던, 셀프 어텐션이 조금은 차이나는 방식으로 여러번 적용되었다고 보시면 되겠습니다.

 

1. 멀티헤드 셀프 어텐션(Multi-Head Self Attention)

- 입력 시퀀스의 각 요소가 시퀀스 내 다른 요소들과 어떻게 관련되어 있는지를 알아보는 Self Attention을, 동시에 다양한 방식으로 모델링하는 방법을 말합니다.

- 즉, 여러개의 헤드(Head)로 분할하여 병렬로 Self Attention을 수행하는데요

 

- 이렇게 병렬로 mult-hea를 사용하는 이유는, 여러 부분에 동시에 어텐션을 가할 수 있어 모델이 입력 토큰 간의 다양한 유형의 종속성을 포착하고 동시에 모델이 다양한 소스의 정보를 결합할 수 있게되기 때문입니다.

 

- 아래 예시를 통해 확인해 볼 수 있는데요. 

[출처 :  https://www.blossominkyung.com/deeplearning/transformer-mha#bc014d12-588a-420f-9d44-d453f6e5b998]

 

위 그림과 같이 한 head가 집중하는 부분이 다를 수 있고, 같은 문장 내 여러 관계 또는 다양한 소스 정보를 나타내는 정보들에 집중하는 어텐션을 줄 수도 있기 때문입니다. 

 

즉, 입력 토큰 간의 더 복잡한 관계를 다룰 수 있어 다양한 유형의 종속성을 포착할 수 있으며, 표현력 또한 향상 될 수 있기 때문입니다.

 

 

 

- 계산과 관련해서는 

 

일반적인 어텐션은 아래의 예시처럼, 4x4 크기의 문장 임베딩 벡터와 4x8 크기의 Q, K, V가 있을때, 이 과정을 통해서 도출되는 Attention value는 Value의 차원인 4x8과 동일하게 도출됩니다.

 

멀티 헤드 어텐션의 경우, 결과물이 동일하게 나오게 해기 위해 4x(8/h) 차원이 되도록 합니다. 

( h= 헤드의 개수)

 

예를 들어 아래 예시처럼

 

 

Q, K, V의 차원 4x8인 경우, 4개의 헤드를 사용할 때(h=4) Q,K,V는 4x2의 차원을 가지게 되고, Value의 차원은 각 헤드 별로 4x2이지만 전체 Attention value들을 Concate 하기때문에 총 4x8 차원이 유지되는 것입니다.

반응형

댓글