본문 바로가기

연구

[transformer] Multihead self-attention 과 multihead attention비교

반응형

요새 비전분야에서도 transformer가 많이 활용되고 있어서 관련 논문들을 읽어보는데 의문인 부분들이 있어서 정리겸 블로그에 글을 써본다.

 

transformer의 encoder는 MHSA(multihead self-attention)만 사용하고, decoder는 MHSA, MHA 둘 다 사용한다. 그럼 여기에서 MHSA과 MHA의 차이가 뭔지 의문이 생긴다.

MHSA은 입력정보 주체가 하나다. 이 하나의 정보를 가지고 비교분석을 시행하는게 MHSA의 역할이고 곧 encoder의 역할이다.

예를 들어 CNN을 거치고 나온 feature vector정보가 transformer encoder 에 들어가면 MHSA는 입력받은 feature vector들만 가지고 비교분석을 시행한다.

 

MHA은 입력정보 주체가 두개다. 하나는 encoder로 부터 분석되고 나온 embedding이고 또 다른 하나는 decoder에 새로 입력되는 정보가 된다.

 

출처 : "Attention is All You Need"

위 그림에서보면 오른쪽 아래에서 들어가는 정보가 decoder에 새로 입력되는 정보를 말한것이다.

이 때 MHA은 decoder에 새로 들어가는 정보와 encoder output embedding을 서로 pairwise비교분석 한다.

이 때 query는 decoder에 들어가는 정보가 되고, key와 value는 encoder output이 되는데 이는 이렇게 해석할 수 있다.

 

query는 영향을 받는 entity 이다. 따라서 decoder에 입력되는 정보가 encoder output 요소들과 하나하나 비교했을 때 각각으로 부터 어떤 영향을 받는지, 얼마나 관련이 있는지를 계산하게 된다.

 

key 는 영향을 주는 entity이다. decoder에 입력되는 정보에게 어떤 영향을 주는지, 얼마나 관련이 있는지를 계산하는데 사용하게 된다.

 

따라서 decoder가 어떤 역할을 하는지는 아래의 그림을 통해 설명하도록 하겠다.

출처 : End-to-End Object Detection with Transformers

위 그림은 DETR이라는 논문의 architecture인데 decoder에 object queries와 encoder output이 들어간다.

object queries들끼리의 유사도를 MHSA끼리 분석하고 그렇게 분석된 object queries가 encoder output과 얼마나 관련이 있는지를 따지게 된다. 이 논문에서 encoder 입력은 CNN의 7X7 feature map을 flatten 하여 49개의 feature vector로 입력했다. 즉 정리하자면 각각의 object query들은 49개의 image feature vector와 얼마나 관련이 있는지를 따지게 된다. 그 결과 해당 image feature vector안에 object가 있으면 유사도가 높게 나올것이고, image feature vector안에 object가 없다면 유사도가 낮게 나타날 것이다.

반응형