Deep Learning study

Self-Attention Generative Adversarial Networks (SA-GAN) 본문

AI/papers

Self-Attention Generative Adversarial Networks (SA-GAN)

HwaniL.choi 2019. 11. 23. 14:38
반응형

오늘 살펴볼 논문은 SAGAN 입니다. self-attention을  GAN과 결합한 논문입니다.

 

 

Attention이라는 것은 쉽게 말하자면 어떤 문장을 예측하는데 전체 입력 문장을 같은 비율로 보는것이 아니라, 예측해야 될 단어와 연관이 있는 단어들에 더 집중(attention)해서 보게하는 것 입니다.

그렇다면 self-Attention은 무엇일까요. 단지 Attention을 자기자신에게 수행하는 것 입니다. Attention에 대한 더 자세한 설명은 여기에서 부터 15.transfomer까지 보시면 더 자세히 알 수 있습니다. 

 

 

Introduction

 

 지금까지의 convolutional GAN들이 생성해낸 샘플들을 보면, multi-class 데이터셋을 학습할때 몇몇의 class들에 대해서는 어려움을 겪는것을 볼 수 있었습니다. 예를들면, 앞서 보았던 SNGAN에서 바다와 하늘 같이 이미지내에서의 공간적인 특징(geometry) 보다는 이미지의 질감(texture대충 무슨뜻인지 알 것이라 생각합니다. 파도치는 물결이라던가.. 하늘의 구름등..) 풍경 class들에대해서는 매우 좋은 결과를 보여주었습니다.

 하지만 몇개의 class에 대해서  geometry나 구조적인 패턴을 찾아내는것에는 실패하게됩니다. 예를들어 강아지를 생성해낸다고 하면, 강아지의 털에대한 질감을 잘 표현해내지만 강아지의 발을 명확하게 분리되게 표현하는데에는 실패를 하는것 입니다. 즉, 공간적인 특징인 강아지의 발의 위치나 구조적인 특징을 잘 이해하지 못한다는것이죠.

 

이러한 이유는 지금까지 GAN은 오로지 convolution에 강하게 의존해왔습니다. 그런데 Conv net의 구조상 local receptive field를 가지고있기때문에 이미지에서 멀리 떨어져있는 부분에대한 dependency를 알기위해서는 꽤 많은 conv layer를 거쳐야 알 수 있다는 것입니다. 

따라서 작은 모델들은 long range dependency를 표현할 수 없게되고, 그렇다고 convolution kernel을 키운다면 계산량이 많아질 것이고 local conv 구조를 사용함으로써 얻어지는 통계적인 이점이 사라질 것입니다.

 

따라서 이 논문에서 Self-Attention GAN을 소개하게 됩니다.

 

각 쿼리에대해한 attention map으로, query에 대해서 가장 집중해서 보는 지역을 보여주게 됩니다.

 

 

 

Self-Attention Generative Adversarial Networks

 

 

여기서는 공간적으로 멀리 떨어져있는 지역사이의 관계를 모델링 할 수있는방법을 소개합니다. (그냥 어떻게 Self Attention을 적용했냐 이말입니다. ㅎ..)

 

 

$$ x \in \mathbb{R}^{C\times N}$$

여기서 x는 이전 hidden layer로부터의 image feature입니다. (위의 그림에서 맨 왼쪽 파란색입니다.)

 

여기서 잠깐 살펴볼 것이 있습니다. 

이미지는 3차원의 텐서 아닌가 라고 생각할 수 있습니다. width x hight x channel 로 말이죠. 

즉 x는 원래 H x W x C 의 텐서 였지만 H x W 로 이루어진 feature 를 하나의 row(N = H x W) 로 만들어 준 것이죠. 그럼 총 C개의 row가 생길테니 C x N 이 되는 것 입니다. 

 

x는 Attention을 계산하기 위해서 먼저 두개의 feature space f,g로 변환되어집니다. (각각 위의 그림에서 노란색과 초록색입니다)

 

$$ f(x)=W_{f}x,  \  g(x) = W_{g}x$$

 

여기서도 위와같은 이유로 궁금증이 생길수도 아닐수도 있습니다.(저는 궁금했었기때문에..) 

1x1 conv를 한다고 되어있는데 내가 알던 conv랑 다른데 ? 라고 생각 할 수 있습니다. 그렇지만 직접 matrix를 그려서 차근 생가해보면 1x1 conv와 완벽히 같은 것 임을 알 수 있습니다. 이 이상의 설명은 TMI인것같아서 생략하겠습니다. ㅎ

 

$$ \beta_{i,j} = { {exp(s_{ij}) }  \over { \sum^{N}_{i=1} exp(s_{ij})}  }, \  where \ s_{ij}=f(x_i)^{T} g(x_j), \quad (1) $$

 

s_ij 는 f(x)의 i번째 column vector와 g(x)의 j번째 column vector를 내적한 값으로 두 벡터의 similarity 를 나타낸다고 봐도 될것 같습니다. 즉 모든 i,j 번째의 feature location에 대해서 관계를 구하겠다는 것 입니다. 

따라서 β_ij 는 모델이 jth region과 합성(synthesizing)할때 ith region에 집중하는 정도를 나타냅니다. 그리고 또한 softmax 값으로 확률값이 나오게 되는것이죠. 그리고 C는 채널의 수 이고, N은 이전 hidden layer에서 feature들의 feature location 수 입니다. 이렇게 N x N Attention map이 만들어지게 됩니다. 

 

이제 최종 attention layer의 output이 어떻게 되는지 알아보겠습니다.

$$ o = (o_1, o_2, ... , o_j,...,o_N) \in \mathbb{R}^{CxN} $$

$$ where, \ \  o_j = v\left( \sum^{N}_{i=1} \beta_{i,j} \mathbf{h(x_{i})} \right) , \mathbf{ h(x_i) = W_h x_i, v(x_i) = W_v x_i} $$

$$ W_g \in \mathbb{R}^{ \bar{C} \times C} ,  W_f \in \mathbb{R}^{ \bar{C} \times C} , W_h \in \mathbb{R}^{ \bar{C} \times C} , W_v \in \mathbb{R}^{C \times \bar{C} } $$

 

여기서 h(x_i)는 i번째 region에 대한 정보를 담은 벡터입니다.

그리고 β_ij(Attention map의 (i,j) ) 는 앞서 말했지만 j번째 region과 i번째 region의 상관정도를 나타냅니다. 따라서 둘을 곱해준다는것은 어느부분이 부각되어야 하는지를 attention 정도를 곱해주어 그 중요도를 높이거나 낮추는 작업을 하는 것 이죠. 

따라서 o_jj번째 region이 전체 region과 얼마만큼의 관계가 있는가 정도로 생각할 수 있겠습니다. 

그리고 마지막으로 W_v를 곱해주는데 이것은 원래 input 과의 channel수를 맞춰주기 위함입니다.

 

마지막으로 이 output은 원래의 input feature에 다시 더해지면서 끝이납니다.

$$ y_i=\gamma o_i + x_i$$

(여기서 γ는 learnable 한 스칼라이며 초기값은 0입니다. )

 

논문내용이 복잡하거나 어려운내용은 딱히 없어서 Attention에 대한 어느정도 이해만 있다면 어렵지않게 이해할 수 있는 논문입니다. 주된 내용은 여기까지이고, 실험결과나 그 뒷내용은 생략하도록 하겠습니다. 

 

 

 

 

조금 짧은 감이 없지않아 있지만 이렇게 SAGAN도 마쳤습니다. 미루고 미루다가 이제서야 블로그에 정리를 하게 됐습니다.

여튼 이 논문이 군대에 있으면서 읽는 마지막 논문일것 같네요 ! .. 그럼 이만 ! 

 

 

 

Reference

[1] Self_Attention Generative Adversarial Network

반응형
Comments