Reference : Attention is all you need

1. Introduction

CNN은 layer가 적은 경우 멀리 떨어진 pixel 간의 의존성을 포착하지 못하고, layer가 많은 경우 특징 해상도(feature resolution)와 세부적인 정보(fine detail)를 잃는다. 반면 Transformer는 self-attention mechanism을 통해 전역적인 정보를 포착할 뿐만 아니라 상이한 레이어에서 비슷한 구조적 정보를 추출한다.

이러한 이유로 저자들은 기존의 CNN 기반 Style Transfer 모델을 대체할 Transformer 기반 Style Transfer 모델, StyTr$^2$를 제안한다. 또한 positional encoding은 학습에 사용되는 데이터의 content에 따라 달라져야 하기에, 저자들은 CAPE(Content Aware Positional Encoding)을 제안한다.

2. Related Work : 생략

3. Our Method

A. Content-Aware Positional Encoding

Attention is all you need에서 제안한 Transformer 모델의 경우, $i$번째 Patch와 $j$번째 Patch 간의 Attention score를 다음 공식에 따라 계산한다.

$$ \begin{align*} A_{i,j} &= ((\epsilon_i + \rho_i)W_q)^T((\epsilon_j+\rho_j)W_k) \\ &= W_q^T\epsilon_i^T\epsilon_jW_k + W_q^T\epsilon_i^T\rho_jW_k+ W_q^T\rho_i^T\epsilon_jW_k + W_q^T\rho_i^T\rho_jW_k \end{align*} $$

$W_q$ : Query matrix

$W_k$ : Key matrix

$\rho_i$ : $i$-th one-dimension PE(Positional Encoding)

2차원 데이터에 대해서는 patch $(x_i, y_i)$와 patch $(x_j, y_j)$ 간의 postional relative relation은 다음 공식에 따라 계산한다. 이때, $w_k$는 ${1 \above{1pt} 10000^{2k \above{1pt} 128}}$, $d$는 512이다.

$$ \rho({x_i,y_i})^T\rho({x_j, y_j}) = \sum^{{d \above{1pt} 4}-1}_{k=0}[\cos(w_k(x_j-x_i))+\cos(w_k(y_j-y_i))] $$

그러나 이러한 Sinusoidal Positional Encoding에는 문제가 존재한다.

Untitled

Sinusoidal Positional Encoding 사용의 첫 번째 문제점은 좌측의 그림 a를 통해서 확인할 수 있다.

$d((x_0, y_3), (x_1, y_3))$, 즉 red patch와 green patch 간의 거리와 $d((x_0, y_3),(x_3, y_3))$, 즉 red patch와 cyan patch 간의 거리의 차이는 매우 작아야 하는데, 왜냐하면 red patch와 green patch, cyan patch의 content는 모두 바다이기 때문이다. 그러나 Sinusoidal Positional Encoding은 이를 반영하지 못한다.

또한, 기존의 Sinusoidal Positional Encoding은 이미지의 사이즈가 기하급수적으로 변할 때에는 적절하지 않다. 저자들은 Sinusoidal positional encoding을 대신할 CAPE(Content-Aware Positional Encoding)을 제안한다. CAPE는 Sinusoidal positional encoding과는 다르게 patch 간의 물리적인 거리 뿐만 아니라 patch의 content 간의 관계 또한 고려한다.

우선 그림 b와 같이 이미지 $I\in \R^{H\times W \times 3}$에 대하여, $n\times n$ 크기의 positional encoding 행렬을 ${H \above{1pt} m}\times{W\above{1pt}m}$ 크기로 만들어낼 수 있다. 이때 $(x, y)$ patch에 대한 CAPE, 즉 $\mathcal P_{CA}(x, y)$는 다음과 같이 나타낼 수 있다.