본문 바로가기
Have Done/Attention

[Attention] Evolution of Attention - Version_0,1

by 에아오요이가야 2022. 9. 13.

https://pyimagesearch.com/2022/09/05/a-deep-dive-into-transformers-with-tensorflow-and-keras-part-1/

Attention의 역사를 따라가는 것은 겁나 어렵습니다.

하지만 7개로 나눠 놓은 Version steps를 따라가다 보면 알기 쉽겠다고 자랑을 했네요

 

 

1. Version 0

Attention을 직관적으로 이해하기 위해, input과 query로 시작하겠습니다. 그런 다음 query에 기반을둔 input부분을 보겠습니다.

 

 


예시 

풍경사진을 보면서 그곳의 날씨를 알려달라고 하면, 먼저 풍경사진의 하늘 부분을 볼 것 이겠죠? 

 

이때 input은 풍경사진이고, query는 날씨는 어떻습니까?입니다.

Input   : 풍경사진

Query : 날씨는 어떻습니까?


프로그래밍 관점

Attention은 query vector와 유사한 input matrix부분이 주어지게 됩니다.

 

input matrix와 query vector사이의 유사도를 계산하여, similarity score를 얻고, input matrix을 output vector로 변환합니다.

Output vector는 weighted summation(or average) of the input matrix입니다.

 

직관적으로 weighted summation(or average)는 기존의 input matrix보다 표현이 풍부해야 합니다? (rich representation?).

왜냐하면 output vector가 "어디에, 무엇을 집중해야 하는지"의 개념을 포함하고 있기 때문입니다.

 

난생처음으로 Attention을 이해했습니다. 말 그대로 Attention에 관한 것이었군요.

 

어. 디. 에, 무. 엇. 에 '집중' 해야 하는지 에 대한 학습 기법이었습니다 - explainability와 직결되겠습니다.

매우 흥미롭습니다.

 

 


Version 1 까지 가봅시다. 차이를 보기위해 나란히 놓았는데, 오히려 잘 안보이네요 하하

Attention function들중에 가장 많이 사용되는 함수는 Additive Attention과 Dot-product (multiplicative) Attention입니다.

Additive Attention은 feed-forward network을 이용하여 compatibility function을 계산 합니다.

Dot-product (multiplicative) Attention은

 

 

이제 Version 0, Version 1의 차이가 무엇인지에 집중해봅시다.

mechanism이 변경된 첫번째 부분은 the feed-forward network를 a dot product operation으로 바꿔 준 것뿐 입니다.

그랬더니 실험적으로 성능이 좋아지더랍니다!

Dot-product Attention을 사용하기 위해서 input vector의 shape이 변하는것을 기억해야 합니다잉~

 

좌 input, 우 output

 

댓글