Deep Learning/Attention Mechanism

[Vision] Vision transformer - background

HUR129 2022. 3. 9. 15:19

CNN의 특징:

convolution filter들을 순차적으로 이동하면서 생성되는

low level feature은 이전의 grid에 영향을 받고 작은패턴들에 영향을 주지만 (edge, color...)

high level feature은 전체적인 shape의 영향을 받게 됩니다 (object..)

 

단점 :

하지만 한 grid를 볼 때 멀리 떨어져있는 grid를 직접적으로 볼 수 없고 멀리 떨어져있는 grid에 영향을 주지 못합니다.

 

붉은색 박스들이 멀리 떨어져있으면 동시에 둘 사이의 관계를 (직접적으로) 파악하기는 어렵습니다. 

 

이를 해결하기 위해 같은 level에서 다른 애들을 동시에 참고하고자하는 시도로 attention 기법을 이용한

vision transformer가 나오게 되었습니다.

 

Vision transformer

transformer에 대해 설명하기 전에, All you need is Attention (NIPS,2017) 논문에 대해 알아보겠습니다.

 

언어 번역에서 seq-to-seq 구조를 이용한 많은 모델들에서 attention을 이용한 시도들이 있었습니다.

 

하지만 이 모델들은 LSTM들이 Backbone model로 들어가고 이는 결국 순차적으로 이어지기때문에 데이터 내부의 관계들을 성공적으로 반영하지 못하였습니다.

 

이러한 문제점을 개선하기 위해 attention만을 사용하여 seq-to-seq문제를 해결해보자! 는 의도를 가지고 걸작이 탄생하게 됩니다. 

 

Transformer 구조이고 이를 설명하는

여러 자료들이 있는데 결국 핵심은 multi-head attention block입니다.

이를 위해 여러 attention을 사용하여 데이터간의 집중도를 표현하는 것인데

이해가 안가시는분들을 위해 그림을 그려 설명하자면

최종적으로는 attention(attention score라도 부르는)을 자기 자신의 데이터에 적용하여 데이터안의 요소들간의 상관관계가 반영된 feature를 얻는 것이 목표입니다. 자기 자신을 참조하여 자기 자신의 데이터 관계를 나타내므로 self-attention이라고 합니다.

 

이러한 attention(score)는 이와 같이 얻어지는데 여기서 하나 주의할점은 

내적값이 커지는 element들이 생길것이고 이로인한 softmax 함수 이후에서 unbalencing 문제로 인해 역전파 학습시 vanishing gradient현상이 나타나게 된다고 합니다. 이를 막기위한 temperature factor로 d의 루트값을 넣어주어 이를 방지하는 trick입니다.

 

transformer에서는 이러한 self-attention을 여러 개 사용해서 머리가 여러개인 multi-head attention이라고 합니다.

이 밖의 여러 블록들이 있는데(positional encoding, batch_norm...) 이 글은 attention 하나만 보고 있기 때문에 이러한 블록들의 설명은 다른 분들이 디테일하게 설명하신 자료들을 참고해주시면 감사하겠습니다.

 

encoder의 설명은 이대로 끝났고 decoder 부분이 있습니다만,

 

기존 seq-seq구조에 맞추기 위해 사용되어서 다른 모델로의 확장성이 조금 떨어지고

 

이 앞부분 encoder가 많은 연구자들에게 영감을 주어 대 transformer를 맞이한 모델이기 때문에 원본 transformer는 여기까지 설명하도록 하겠습니다.

 

참고자료:

 

 

CNN 사진: https://paperswithcode.com/methods/category/convolutional-neural-networks

Attention 논문 : https://arxiv.org/abs/1706.03762