Gorio Tech Blog search

Graphormer(Do Transformers Really Perform Bad for Graph Representation?) 설명

|

이번 글에서는 Transformer가 정말로 그래프 데이터에 잘 적용될 수 있는지에 대해 고찰하고, Graphormer라는 더 나은 접근을 제시한 논문에 대해 다뤄보겠습니다.

논문 원본은 이 곳에서 확인할 수 있으며, 깃헙도 참고할 수 있습니다.

본 글에서는 핵심적인 부분에 대해서만 살펴보겠습니다.


Graphormer: Do Transformers Really Perform Bad for Graph Representation? 설명

1. Introduction

Transformer의 유용함은 자명한 사실이지만 이를 그래프 데이터에서도 잘 활용할 수 있는가에 대해서는 완전한 확답을 찾지는 못한 상황입니다. 여러 연구에서 이를 시도하긴 하였지만 충분하지는 않았습니다. Transformer는 본래 sequence modeling을 위해 설계되었는데 그래프의 구조적인 정보를 모델에 잘 반영해야지만 이를 잘 활용할 수 있을 것입니다.

node에 반영된 그래프의 구조적인 정보와 node 쌍 사이의 관계 등을 제대로 고려하지 않은 상태에서 Self-attention을 사용하는 것은 단지 node 간의 semantic similarity를 계산하는 것에 그칠 뿐입니다. 즉 오로지 feature의 특성으로 attention이 적용될 것입니다.

이를 해결하기 위해 논문에서는 Centrality EncodingSpatial Encoding을 제안하고 있습니다. 이 구조에 대해서는 아래에서 자세히 설명하겠습니다.

본 글에서는 그래프 네트워크의 일반적인 부분에 대해서 설명하지는 않겠습니다. 이 내용에 대해서는 이전 글들을 보시면 좋습니다.

2. Model Architecture

2.1. Centrality Encoding

node centrality는 한 node가 그래프에서 얼마나 중요한지를 나타내는데, 이는 그래프를 이해하는 데에 있어 사실 굉장히 중요한 정보입니다. 예를 들어 소셜 네트워크 상의 celebrity는 다른 node에 비해 훨씬 더 강한 영향력을 갖고 있을 것이고, 고객과 상점을 연결하는 그래프에서 인기 있는 상점은 다른 node에 비해 더 많은 이웃을 갖고 있을 것입니다. 이러한 정보는 현재의 attention 계산에서 적절히 활용되고 있지 못합니다.

Graphomer에서는 degree centrality를 이용했습니다. 만약 한 node가 5개의 이웃을 갖고 있다고 해보겠습니다. 그렇다면 이 node가 다른 node 하나에게 미치는 영향력은 1/5입니다. 만약 더 많은 이웃을 갖고 있다고 하면 이 영향력은 더욱 작은 크기로 계산될 것입니다. 여기서 계산된 수치가 outdegree입니다.

반대로 다른 node로 부터 받는 영향력도 존재할 것입니다. 앞서 5개의 이웃을 갖고 있다고 했습니다. 각 이웃 node들은 각각 1, 2, 2, 3, 3개의 이웃을 갖고 있다고 하면, 지금의 node는 1/1 + 1/2 + 1/2 + 1/3 + 1/3의 영향력을 수집한 셈이 됩니다. 여기서 계산된 수치가 indegree입니다.

Graphomer에서는 이러한 정보를 활요하여 Centrality Encoding을 수행합니다. 특정 node의 indegree, outdegree에 따라 2개의 임베딩 벡터를 할당하며 이들은 학습 가능한 파라미터입니다. 인코딩된 이 임베딩 벡터는 input에 자연스럽게 더해집니다.

[h_i^0 = x_i + z^{-}{deg^{-}(v_i)} + z^{+}{deg^{+}(v_i)}]

만약 undirected 그래프라면 아래와 같은 형태가 됩니다.

[h_i^0 = x_i + z^{-}_{deg(v_i)}]

2.2. Spatial Encoding

그래프 데이터에서 node는 연속적으로 배열되어 있지 않습니다. node는 다차원의 spatial 공간에 존재하고 edge에 의해 연결되어 있습니다. 이러한 구조적인 정보를 인코딩하기 위해서 Spatial Encoding이 필요합니다. 두 node의 spatial relation을 파악하기 위한 함수로서 본 논문에서는 최단 거리(distance of the shortest path)를 이용할 것을 제안하고 있습니다. 만약 두 node가 연결되어 있지 않다면 -1과 같은 특정 값을 부여해주면 됩니다.

결과값은 학습 가능한 스칼라이며, 이는 self-attention 모듈에서 bias 항으로 투입됩니다.

[A_{ij} = \frac{(h_i W_Q)(h_j W_K)^T}{\sqrt{d}} + b_{\phi(v_i, v_j)}]

보통의 GNN의 경우 receptive field가 직접적인 이웃에 국한되는 경우가 많은데 이러한 구조로 인해 우리는 좀 더 범위를 확장할 수 있게 됩니다. 이는 결국 가까이 있는 node에는 더욱 attention을 두고 멀리 있다면 중요도가 낮아지는 메커니즘인 것입니다. 다만 이러한 구조를 엄청나게 큰 그래프 데이터에서 활용하기 위해서는 좀 더 고민이 필요해 보입니다.

2.3. Edge Encoding in the Attention

분자 구조 그래프에서 원자의 쌍은 어떤 연결 유형을 설명하는 feature를 갖습니다. 이처럼 그래프의 특성에 따라 edge feature가 중요한 의미를 갖는 경우가 있습니다. 기존에는 edge feature가 node feature에 더해지거나 aggregation 과정에서 함께 쓰이는 경우가 많았습니다. 그러나 이러한 방법은 전체 그래프 상에서의 edge 정보를 충분히 활용한다고 볼 수 없습니다.

논문에서는 edge feature의 인코딩 품질을 개선하기 위해 새로운 방법을 제시합니다. 각 node 쌍 $(v_i, j_j)$ 가 있다고 할 때 가장 짧은 길(shortest path) $SP_{ij} = (e1, e2, …, e_N)$ 중 하나를 찾습니다. 그리고 이 사이에 존재하는 edge feature의 내적 값의 평균과 그 path에 해당하는 학습 가능한 임베딩 벡터를 계산합니다. 이렇게 계산된 값은 2.2에서 본 것과 유사하게 attention 모듈에서 bias 항으로 투입됩니다.

[A_{ij} = \frac{(h_i W_Q)(h_j W_K)^T}{\sqrt{d}} + b_{\phi(v_i, v_j)} + c_{ij}]

[c_{ij} = \frac{1}{N} \Sigma_{n=1}^N x_{e_n} (w_n^E)^T]

3. How Powerful is Graphormer?

이제 생각해보아야 할 부분은 이전 chapter에서 설명한 3가지의 주요 구조가 정말로 Graphomer를 powerful하게 만들어주느냐 입니다. 결론적으로 말하면 Graphomer는 그래프 데이터에서 expressive power를 증명하기 위해 비교 대상으로 사용되는 1-Weisfeiler-Lehman Test가 구분하기 실패하는 케이스에서도 그 차이를 구분할 수 있다고 논문에서는 설명합니다. 부록 A에 이에 대한 설명이 나와있으니 참고하시길 바랍니다.

실제 구현 할 때 Graphomer Layer는 Layer Normalization과 Multi-head Attention 그리고 Feed-forward Network로 구성됩니다. 여기에 추가적으로 Special Node가 존재하는데, VNode라고 불리는 이 노드는 모든 다른 노드와 연결을 갖는 일종의 super virtual node입니다. 이 node는 왜 존재할까요?

논문에서는 이 virtual node trick으로 인해 GNN의 성능을 향상시킬 수 있다고 이야기 합니다. 개념적으로 이 virtual node는 마치 READOUT 처럼 전체 그래프의 정보를 규합하여 각 node에게 전파(propagate)하는 역할을 수행한다고 합니다. 다만 주의해야 할 것이, 단순이 이러한 virtual node를 추가하는 데에서 그쳐버리면 이는 곧 over-smoothing 문제로 이어질 수 있기 때문에 주의가 필요합니다.

4. Conclusion

논문에서는 여러 실험에 대한 결과를 상세히 밝히고 있으며 이에 직접 논문을 참고하시길 바랍니다. 기본적으로 Graphormer는 다른 알고리즘에 비해 파라미터 수가 많고 무거운 편이나 여러 변형 버전도 존재하는 것으로 보입니다.

본 알고리즘은 흥미로운 장치와 구조를 통해 그래프 데이터에 Transformer를 더욱 효과적으로 적용할 수 있는 방법에 대해 알려주고 있습니다. 특히 Centrality Encoding의 경우 적용 범위가 상당히 넓을 것으로 보입니다. Spatial Encoding이나 Edge Encoding의 경우 현재 형태로는 엄청나게 큰 그래프 데이터에서는 직접적으로 적용하기 힘들 수는 있지만 적절한 샘플링 전략이 동반되면 좋은 효과를 발휘할 것으로 보입니다.

Comment  Read more

StyleCLIP 논문 리뷰(StyleCLIP - Text-Driven Manipulation of StyleGAN Imagery)

|

이 글에서는 2021년 3월 발표된 StyleCLIP 논문을 간략하게 정리한다.


CLIP

논문 링크: StyleCLIP: Text-Driven Manipulation of StyleGAN Imagery

Github: https://github.com/orpatashnik/StyleCLIP

  • 2021년 3월(Arxiv), ICCV 2021
  • Hebrew University of Jerusalem, Tel-Aviv University, Adobe Research
  • Or Patashnik, Zongze Wu, Eli Shechtman, Daniel Cohen-Or, Dani Lischinski

StyleGAN + CLIP이라고 보면 된다.


Abstract

다양한 도메인에서 고해상도의 이미지를 생성할 수 있는 StyleGAN의 능력에 힘입어 어떻게 StyleGAN의 latent space에 대해 이해하고 다룰 수 있는지 연구가 많았으나 사람이 직접 공들여 manipulation을 수행해야 했다.

이 논문에서는 총 3가지 방법을 제시하는데,

  • CLIP에다가 StyleGAN을 접목시켜 사용자가 제공한(user-provided) text prompt의 응답으로 input latent vector를 수정하여 CLIP based loss를 쓰는 최적화 기법을 소개한다.
  • 다음으로 주어진 input image에 대해 text-guided latent manipulation을 암시하는 latent mapper를 제안하여 더 빠르고 안정적인 manipulation을 가능하게 한다.
  • 마지막으로 text prompt를 StyleGAN의 style space로 보내는 입력과 무관한 mapping 방법을 제안하여, 이는 text-driven image manipulation이 가능하게 한다.

1. Introduction

GAN 이후 StyleGAN이 굉장히 유명하다. (이후 StyleGAN2과 StyleGAN-Ada 등도 나왔음) StyleGAN에서 manipulation을 특히 파고든 논문으로는 StyleRig, StyleFlow 등이 있다.

그러나 지금까지의 연구에서 control은 오직 (이미 존재하는) preset semantic 방향으로만 제한적으로 가능해서 창조적으로 혹은 상상력, 창작으로 만들었다고는 보기 어려웠다.

이 논문에서는 StyleGAN과 CLIP을 사용하여 이 문제를 해결해보고자 한다.

방법론으로 총 3가지를 제시한다. (초록과 같은 내용)

  1. Text-Guided latent optimization. CLIP 모델은 loss network로 사용된다. 이 방법은 제일 다목적인 방법이지만, 각 이미지에 최적화를 적용하는 데 분 단위의 시간이 걸린다.
  2. A latent residual mapper. 특정 text prompt에 학습된다. latent space에서 시작점이 주어지면(ex. manipulate할 이미지), mapper는 latent space에서 local step을 반환한다.
  3. mapping a text prompt into an input-agnostic (global) direction in StyleGAN’s style space. 말 그대로 StyleGAN의 style space에서 입력과 무관하게 global direction만큼 이동하는 방법인데, 이는 disentanglement 차원만큼이나 강력한 manipulation control을 제공한다.

2.1. Vision and Language

Joint representations

Vision + Language Multimodal 연구는 최근 활발히 진행되고 있다. BERT의 성공에 힘입어 이를 vision 분야에도 적용시키는 등 Transformer도 많이 사용되고 있다. CLIP 등.

Text-guided image generation and manipulation

특정 텍스트를 주고 이에 기반하여 이미지를 생성하거나 변화시키는 분야이며 GAN이 주축이다.

  • GAN, AttnGAN, StyleGAN
  • Dall-E, TediGAN 등

2.2. Latent Space Image Manipulation

많은 연구들은 image manipulation을 위해 사전학습된 generator의 latent space를 어떻게 다룰지를 탐구해 왔다.

대부분의 연구들이 $\mathcal{W}$나 $\mathcal{W}+$ space에서 image manipulation을 수행했으나, Wu et al.에서는 Style space $\mathcal{S}$에서 수행하는 것이 더 나은 disentanglement를 제공하는 것을 밝혔다.


3. StyleCLIP Text-Driven Manipulation

초록 및 서론에서 제시한 3가지 방법론에 대한 간단한 설명이 있다. 아래 표가 대략 어떤 방법인지 나타내 주고 있다.


4. Latent Optimization

제시한 방법론 중 첫 번째에 대한 내용이다.

StyleGAN의 $\mathcal{W+}$ space에 있는 이미지의 latent code가 주어지면 CLIP space에서 계산되는 loss를 최소화하는 간단한 latent optimization 방법이다. 최적화는 각 (source image, text prompte) 쌍에 대해 수행된다.
그래서 이 방법은 여러 곳에 사용될 수 있는 다목적성을 가지지만 매번 최적화를 해주는 시간이 필요하며(분 단위) contol하기 어렵다는 단점이 있다.

source latent code $w_s \in \mathcal{W}+$와 자연어 지시문 혹은 text prompt $t$가 주어지면 다음 최적화 문제를 푸는 것이다:

[\argmin_{w \in \mathcal{W}+} D_{\text{CLIP}}(G(w), t) + \lambda_{L2} \Vert w - w_s \Vert_2 + \lambda_{\text{ID}} \mathcal{L}_{\text{ID}}(w) \quad (1)]

  • $G$는 사전학습된 StyleGAN generator
  • $D_{\text{CLIP}}$는 CLIP embedding의 2개의 argument 사이의 cosine 거리이다.

입력 이미지의 유사도는 latent space의 $L_2$ distance에 의해 조절되며, identity loss는:

[\mathcal{L}_{\text{ID}}(w) = 1 - <R(G(w_s)), R(G(w))> \quad (2)]

  • $R$은 얼굴인식을 위해 사전학습된 ArcFace network
  • $<\cdot . \cdot >$는 cosine 유사도이다.

Gradient descent로 이 최적화 문제를 푼다. 목적함수는 $(1)$ 식을 쓴다. $G$는 고정(fixed)이다.

이 방법으로 수정한 이미지 예시는 아래와 같다. 최적화 과정은 200~300회 반복하였다.

이미지 아래의 숫자는 설명대로 $(\lambda_{\text{L2}}, \lambda_{\text{ID}})$이다.


5. Latent Mapper

위의 최적화 방법은 매 이미지마다 최적화를 수행하다보니 오래 걸려서 비실용적이다. 여기서 설명하는 2번째 방법은 특정 text prompt에 대한 mapping network만을 사전학습하고 이후 입력 이미지에 대해서는 빠른 추론을 가능하게 한다. 입력 latent vector는 3개의 모델(Course, Medium, Fine)로 들어가고 L2 loss를 적용, StyleGAN generator를 통과하여 최종적으로 이미지를 생성한다. Course-Medium-Fine은 StyleGAN의 것과 유사함을 알 수 있다.

입력 이미지의 latent code를 $w = (w_c, w_m, w_f)$라 하면 mapper는 다음과 같이 정의할 수 있다:

[M_t(w) = (M_t^c(w_c), M_t^m(w_m), M_t^f(w_f))]

Loss

CLIP loss는 mapper로 하여금 CLIP latent space에서 cosine 거리를 최소화하도록 한다.

[\mathcal{L}{\text{CLIP}}(w) = D{\text{CLIP}}(G(w + M_t(w)), t)]

$(2)$번 식의 ID loss를 같이 써서 identity를 보존한다.

전체 loss는 아래와 같다.

[\mathcal{L}(w) = \mathcal{L}{\text{CLIP}}(w) + \lambda{L2} \Vert M_t(w) \Vert_2 + \lambda_{\text{ID}} \mathcal{L}_{\text{ID}}(w) \quad (1)]

text prompt는 1가지 이상을 한번에 적용할 수도 있다.

첫번째 방법에 비하면 잘 나오기는 하지만, 어쩐지 다른 스타일이나 이미지에 적용해도 뭔가 비슷해보이는 이미지가 최종 생성되는 문제가 있다고 한다.


6. Global Directions

그래서 3번째 방법으로 이 문제를 해결하려 한다. 이 방법은 한 문장으로 설명하면 text prompt를 StyleGAN의 style space $\mathcal{S}$에 있는 하나의 global direction으로 mapping하는 방법이다.

Notation:

  • $s \in \mathcal{S}:=$ style code
  • $G(s):=s$에 연관되는 생성된 이미지

원하는 특성을 지시하는 text prompt가 주어지면 원하는 조작(manipulation) 방향 $\Delta s$를 찾아야 한다. 이때 $\Delta s$는 $G(s + \alpha \Delta s)$(즉, 조작을 가한 이미지)가 다른 특성을 별로 해치지 않으면서 원하는 특성을 포함하거나 증폭된 상태여야 한다. 조작의 정도는 $\alpha$로 정한다.

  • CLIP text encoder를 사용하여 CLIP의 언어-이미지 결합 임베딩 space 안의 vector $\Delta t$를 얻는다.
  • $\Delta t$를 $\mathcal{S}$ 안의 조작 방향 $\Delta s$로 mapping한다.
  • 안정적인 $\Delta t$는 자연어로부터 prompt emgineering을 통해 얻는다.
  • 연관되는 방향 $\Delta s$는 각 style channel의 원하는 특성과의 연관도를 평가하여 얻는다.

좀더 자세히 알아보자.

  • $\mathcal{I}:=$ CLIP의 joint embedding space 안의 이미지 임베딩의 manifold
  • $\mathcal{T}:=$ text 임베딩의 manifold

이 둘 간의 직접적인 mapping은 없다(이미지는 여러 텍스트로 표현할 수 있고, 반대로 한 텍스트 문장으로부터 여러 이미지를 생각할 수 있다).
CLIP을 학습하는 동안, 모든 임베딩은 unit norm으로 정규화되고, 따라서 임베딩의 방향은 semantic 정보만을 담게 된다. 잘 학습된 CLIP space의 영역에서는 $\mathcal{T}, \mathcal{I}$(의 원소)가 같은 조작 방향에 대해서 같은 방향으로 움직일 것이라고 기대할 수 있다(즉, 높은 cosine 유사도를 갖는다). 정규화 후에는 방향뿐 아니라 움직이는 거리도 거의 같을 것이다.

주어진 이미지 쌍 $G, G(s+\alpha \Delta s)$에 대해 그 $\mathcal{I}$의 임베딩을 각각 $i, i + \Delta i$라 하자. 그러면 CLIP space에서 두 이미지 간 차이는 $\Delta i$가 된다. 자연어 지시문 $\Delta t$가 주어지고 $\Delta t, \Delta i$의 등선성(collinearity)를 가정하면, 조작 방향 $\Delta s$를 $\mathcal{S}$의 각 channel과 방향 $\Delta i$간의 연관도를 측정하여 구할 수 있다.

From natural language to $\Delta t$

text embedding noise를 줄이기 위해 prompt emgineering을 사용한다: 같은 의미를 지니는 여러 문장을 text encoder에 넣은 뒤 그 embedding을 평균하는 방법이다.

예를 든어, ImageNet zero-shot 분류 문제를 생각하자.

80개의 문장 template이 사용되는데 대충 다음과 같이 생겼다.

  • “a bad photo of a {}”
  • “a cropped photo of the {}”
  • “a black and white photo of a {}”
  • “a painting of a {}”

추론할 때에는 ({}가) target class로 자동으로 대체되고 각 문장의 embedding을 평균하여 구하게 된다. 이 과정은 분류 성능을 3.5% 정도 향상시킨다.

$\mathcal{T}$에서 더 안정적인 방향을 얻기 위해 이와 비슷한 방법을 사용한다. 예를 들어 위에서 target class가 “car”이었다면 좀 더 특정한 style을 적용하기 위해 “a sports car”라는 텍스트를 쓰는 방식이다.

Channelwise relevance

이제 우리의 목표는 style space 조작 방향 $\Delta s$를 구성하는 것인데 이는 목표 방향 $\Delta t$와 등선성을 가지는 변화 $\Delta i$를 반환하는 것이다. 이를 위해 CLIP의 joint embedding space의 주어진 방향 $\Delta i$에 대한 $\mathcal{S}$의 각 channel의 연관도를 측정해야 한다.
style code $s \in \mathcal{S}$ 집합을 생성하고 $c$ channel에 양 또는 음의 값을 더해 약간의 perturbation을 준다. 이미지의 결과 쌍 간의 CLIP space direction을 $\Delta i_c$라 하면, channel $c$와 목표 조작방향 사이의 연관도는 다음과 같다:

[R_c(\Delta i) = \mathbb{E}_{s \in \mathcal{S}} \lbrace \Delta i_c \cdot \Delta i \rbrace]

즉 $\Delta i_c$를 $\Delta i$에 mean projection한 것과 같다.

평균을 얻기 위해 100개의 이미지 쌍에 대해 계산을 수행했고 각 이미지 쌍은 $G(s \pm \alpha \Delta s_c$)로 얻는다.

  • $\Delta s_c$는 channel $c$를 제외하고 0인 벡터이다. channel $c$에 대해서는 그 표준편차만큼의 값을 갖는다.

그런데 여기서 값을 바꿀 때 원하는 특성 외에 다른 특성이 변화되는 정도를 제한할 필요가 있다(예로, 머리카락 색만 백발로 바꾸려고 하는데, 얼굴까지 노인이 되는 것을 방지). 그래서 각 channel별로 어떤 threshold 값 $\beta$를 설정한다.

[\Delta s = \Biggl{ \begin{matrix} \Delta i_c \cdot \Delta i \quad \text{if} \vert \Delta i_c \cdot \Delta i \vert \ge \beta \ 0 \qquad \text{otherwise} \end{matrix}]

$\alpha, \beta$를 변화시키면서 이미지를 생성한 결과를 아래에서 볼 수 있다. $\beta$가 커질수록 일부의 특징만이 바뀌는 것을 볼 수 있다.

더 많은 비교 결과..


7. Comparisons and Evaluation

TediGAN 등 다른 모델과 비교한 결과이다.

아래는 text-driven 얼굴 이미지 조작 방법을 비교한 결과를 나타낸다. 이 논문에서 제안한 첫번째 방법인 최적화 방법은 시간도 오래 걸리고 hyper-parameter에 민감한 등의 이유로 생략했다. 트럼프 전 대통령으로 얼굴을 바꾸거나, 머리를 모히칸 스타일로, 혹은 주름 없애기 등을 적용한 결과가 꽤 흥미롭다.


8. Conclusions

Comment  Read more

CLIP 논문 리뷰(Learning Transferable Visual Models From Natural Language Supervision)

|

이 글에서는 2021년 1월 OpenAI에서 발표한 CLIP 논문을 간략하게 정리한다.


CLIP

논문 링크: Learning Transferable Visual Models From Natural Language Supervision

Github: https://github.com/openai/CLIP

OpenAI Blog: https://openai.com/blog/clip/

  • 2021년 1월(OpenAI Blog)
  • OpenAI
  • Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, et al.

간단히, 이미지와 텍스트를 같은 공간으로 보내서 (Multimodal) representation learning을 수행하는 모델이다.


Abstract

기존 SOTA Computer vision 시스템은 고정된 집합의, 미리 지정한 object category에 대해서만 예측을 수행하도록 학습했다. 이는 확장성, 일반성 등을 심각하게 저해하며 데이터를 모으기도 힘들다.

CLIP은 인터넷에서 얻은 대규모 데이터셋을 이용, 이미지와 연관된 caption으로 사전학습한다. 그리고 자연어 지시문(reference)을 주면 zero-shot으로 모델을 downstream task에 적용할 수 있다.

결과적으로 OCR, action recognition 등 30개의 기존 task에서 좋은 성능을 보였다.


1. Introduction and Motivating Work

BERT, OpenAI GPT 등 기존 연구들은 대규모 텍스트 데이터를 모아 사전학습 후 미세조정(pre-training and fine-tuning)하는 방식으로 자연어처리 분야에서 매우 뛰어난 성과를 얻었다. 그러나, 이런 방식이 computer vision 분야에서도 잘 작동하는가?

이미지 분야에서는 CNN 기반 모델이 강한 면모를 보이기는 하지만, zero-shot learning에서는 매우 낮은 정확도를 보인다. 또 weak supervised learning 방식으로도 어느 정도 성과를 보였으나, 저자들은 이 방식은 zero-shot 학습 능력을 제한한다고 주장한다.

본 논문에서는 4억 개의 이미지 + 텍스트(caption) 쌍으로 대규모 학습한 모델로, 자연어 supervision을 사용하여 학습하였다. 그리고 매우 많은 vision task에서 굉장히 좋은 결과를 얻었다… 어떻게?


2. Approach

2.1. Natural Language Supervision

CLIP은 자연어를 supervision으로 주어 학습한다. 사실 이는 새로운 아이디어는 아니지만, 기존의 많은 image dataset과는 달리 별도의 번거로운 labeling 작업이 필요 없다는 강력한 장점을 가지고 있다. 또한, 이미지에 더해 자연어까지 representation learning을 수행할 수 있고, 다른 종류의 task로도 유연하게 zero-shot transfer이 가능하다. (그래서 자연어 supervision 방식을 취하였다)

2.2. Creating a Sufficiently Large Dataset

  • 기존의 MS-COCO, Visual Genome은 품질은 좋으나 그 양이 매우 적다.
  • YFCC100M은 매우 큰 데이터셋이지만 그 품질이 좀 들쑥날쑥하다.

CLIP에서는 WIT(WebImageText)라고 명명하는 새로운 데이터셋을 만들었다. 이는 인터넷의 다양한 사이트에서 가져온 4억 개의 (image, text) 쌍으로 구성되어 있다.

2.3. Selecting an Efficient Pre-Training Method

1개의 batch는 $N$개의 (image, text) 쌍으로 구성된다. 그러면, $N$개의 쌍을 모든 $i, j$에 대해서 비교하면 $N$개의 positive pair와 $N^2-N$개의 negative pair를 얻을 수 있다.

그리고

  • image와 text를 하나의 공통된 space로 보낸 다음
  • positive pair에서의 유사도(cosine similarity)는 최대화하고
  • negative pair에서의 유사도는 최소화하도록
  • CE loss를 사용하여 학습한다.

이와 같은 과정을 통해 CLIP은 multi-modal embedding space를 학습하게 된다.

아래 그림에서 파란색 부분이 (이미지, 해당 이미지와 연관된 텍스트)로 구성된 positive pair이다.

논문에 있는 아래 코드를 보면 무슨 말인지 이해하기 쉽다.

2.4. Choosing and Scaling a Model

위의 코드에서 image_encoder와 text_encoder를 볼 수 있을 것이다.

  • Image encoder: 2개의 architecture를 고려했다.
    1. ResNet-50에서 약간 수정된 버전인 ResNet-D 버전을 사용한다. Global Average Pooling을 Attention Pooling으로 대체하였다.
    2. 또한 ViT도 사용한다. Layer Norm 추가 외에는 별다른 수정이 없다.
  • Text encoder로는 Transformer를 사용했다. max_length=76인데, 실제 구현체에서는 마지막 token을 고려해서인지 77로 설정되어 있다.

2.5. Training

  • ResNet은 ResNet-50, ResNet-101, ResNet-50의 4배, 16배, 64배에 해당하는 EfficientNet-style 모델 3개(RN50x4, RN50x16, RN50x64)를 추가로 더 학습시켰다.
  • ViT는 ViT-B/32, ViT-B/16, ViT-L/14를 사용하였다.
  • 전부 32 epoch만큼 학습시켰다.

3. Experiments

3.1. Zero-Shot Transfer

3.1.1. Motivation

(대충 중요하단 내용..)

3.1.2. Using CLIP for zero-shot transfer

(이미지 분류 task의 경우) 이미지가 주어지면 데이터셋의 모든 class와의 (image, text) 쌍에 대해 유사도를 측정하고 가장 그럴듯한(probable) 쌍을 출력한다.

구체적으로는 아래 그림과 같이, 각 class name을 "A photo of a {class}." 형식의 문장으로 바꾼 뒤, 주어진 이미지와 유사도를 모든 class에 대해 측정하는 방식이다.

3.1.3. Initial comparison to visual n-grams

이미지 분류 문제에서 Visual N-grams 방식보다 실험한 3개의 데이터셋 모두에서 zero-shot 성능이 훨씬 뛰어나다.

3.1.4. Prompt engineering and ensembling

  • 절대다수의 이미지 데이터셋은 그 class를 그냥 단순히 숫자로 구성된 id만으로만 저장해 두고 있다.
  • 또 다의성 문제도 있는데, class name 외에 추가적인 정보가 없는 경우 다른 class로 인식할 수 있는 문제도 존재한다.
  • CLIP을 zero-shot으로 이미지 분류를 시킬 때 하나의 문제는 class name은 대부분 한 단어 정도인 데 비해 사전학습한 데이터는 그렇지 않다는 점이다. 그래서 위에서 설명한 것처럼 class name을 그대로 집어넣어 유사도를 측정하는 대신 "A photo of a {class}." 형식의 문장을 만들어서 유사도를 측정한다.

Prompt engineering and ensembling

GPT-3에서 다룬 것과 비슷하게, 각 task에 맞는 prompt text를 적절히 선택해 주면 분류하는 데 더 도움이 될 수 있다. 예를 들어 위의 문장 형식, "A photo of a {class}."를 상황에 따라

  • "A photo of a {label}, a type of pet."
  • "a satellite photo of a {label}."
  • "A photo of big {label}"
  • "A photo of small {label}"

과 같은 식으로 바꾸면 분류를 더 잘 해낼 수 있다.

3.1.5. Analysis of zero-shot CLIP performance

그래서 다양한 image classification 데이터셋에 대한 CLIP의 zero-shot 성능은?

27개 중 16개의 데이터셋에서 ResNet-50 baseline에 비해 더 좋은 성능을 보였다. 여기서 데이터셋 특성별로 조금씩 성능 차가 다른데,

  • Stanford Cars, Food101과 같은 fine-grained task에서는 성능이 크게 앞선다.
  • OxfordPets, Birdsnap에서는 비슷비슷한데, 이는 WIT와 ImageNet 간에 per-task supervision 양의 차이 때문이라 여겨진다.
  • STL10에서는 99.3%의 정확도로 SOTA를 달성했다.
  • EuroSAT, RESISC45은 satellite image를 분류하는 데이터셋인데, 이렇게 상당히 특수하거나 복잡한 경우 CLIP의 성능은 baseline보다 많이 낮았다. 아마 사전학습할 때 그렇게 지엽적?인 정보는 학습하지 못했기 때문일 것이다.

아래는 다른 모델이 few-shot 성능보다 CLIP의 zero-shot 성능이 더 나음을 보여준다.


3.2. Representation Learning

Image의 특성을 최대한 잘 설명하는 어떤 feature(representation)을 잘 뽑아 이를 다른 downstream task에 활용하겠다는 것인데, CLIP은 이런 image representation을 상당히 잘 뽑는 것 같다.

모델의 representation learning 성능은 뽑아진 representation을 선형모델에 넣은 성능으로 평가하며, CLIP 논문에서도 이와 같은 방법을 사용하였다.

작은 모델은 기존의 SOTA보다 조금 낮은 성능을 보이지만 가장 큰 모델인 ResNetx64, ViT 기반 모델의 경우 다른 모델에 전부 앞선다.

부록에서 qualitative example을 볼 수 있다.

EfficientNet과 비교해 봐도 성능이 좋다.


3.3. Robustness to Natural Distribution Shift

기계학습 모델의 경우 근본적으로 overfitting 위험 및 일반화 실패(혹은 낮은 일반화 성능)의 가능성이 항상 있는데, 이는 training set과 test set의 distribution이 동일할 것이라는 가정에 기초해 있기 때문이기도 하다. 이러한 차이를 distribution shift라고 한다.

참고: 이 문제를 해결하기 위한 방법이 데이터의 domain(distribution)에 불변한 어떤 것(invariants)를 뽑는 것이고, 이를 Domain Generalization라 한다.

본 섹션에서는 CLIP이 Distribution Shift에 강건함을 실험 결과로 보여준다.

먼저 아래는 task shift에 관한 것이다. 다른 task로 transfer를 수행했을 때 CLIP의 representation이 얼마나 더 나은지 보여주는 그림이라 할 수 있다.

ImageNet류의 데이터셋이 여러 개 있는데, 바나나를 예로 들면

  • ImageNet V1은 통상적인 바나나 상품 사진이라면,
  • ImageNet V2는 좀 더 다양한 모양의 바나나 사진을,
  • ImageNet-R은 실제 바나나 사진뿐만 아니라 그림이나 여러 변형이 일어난 사진
  • ObjectNet은 다양한 배경이나 상황의 바나나 사진
  • ImageNet Sketch는 바나나 스케치 사진
  • ImageNet-A는 굉장히 다양한 구도의 바나나 사진

이런 데이터를 갖고 있는 데이터셋들인데, 각각 data distribution이 다를 것임을 쉽게 알 수 있다.

ResNet101과 비교하여, CLIP은 zero-shot 성능을 위 데이터셋에서 비교했을 때 훨씬 더 성능이 높음을 알 수 있다. 즉, distribution shift에 상당히 강건(robust)하다.

참고: 논문에서는 robustness를 2가지로 분류한다. (by Taori et al.)

  • Effective robustness: Distribution shift에서의 정확도 개선
  • Relative robustness: Out-of-distribution에서의 정확도 개선

물론, 모엘의 robustness를 높이려면 위 2가지 모두의 정확도에서 개선이 이루어져야 할 것이다.

아래 그림은 ImageNet에 조금 더 adaptation을 시켰을 때(정확도 9.2% 상승), 모델의 전체적인 robustness는 조금 낮아졌음을 보여준다. 일종의 trade-off가 존재한다고 보면 된다.

비슷하게, CLIP을 few-shot 학습을 시키면 해당 task는 더 잘 풀게 되지만, zero-shot CLIP에 비해서 robustness는 떨어진다.


4. Comparison to Human Performance

본 섹션에서는 CLIP을 사람의 performance, 그리고 사람의 학습하는 정도와 비교하려고 한다.
사람도 zero-shot으로, 아무것도 보지 않고 지시문만 주어졌을 때 문제를 풀었을 때 정답률, 그리고 한두 개의 예시를 보고 나서 문제를 풀 때 정답률 등을 CLIP과 비교하는 식이다.

  • 데이터셋은 Oxford IIT Pets dataset을 사용
  • 5명의 다른 사람에게 test split의 3669개 이미지를 주고 37종류의 개/고양이 중 어느 것인지(혹은 I don't know를 고를 수도 있음)를 선택하게 하였다.
  • 5명의 사람은 인터넷 검색 없이, 그리고 아무런 예시도 보지 못한 채 이미지를 labeling해야 한다.
  • one-shot과 two-shot에서는 각 1, 2개의 예시를 본 다음 labeling을 하게 된다.
  • 자세히 나와 있지는 않지만, 아마 37종의 개/고양이에 대한 기본적인 설명 정도는 있었을 것이다. 아무리 zero-shot을 한다지만 그러지 않으면 어떻게 풀겠는가?

그래서 사람과 CLIP을 비교한 결과는 아래과 같다.

사람과 비교해 월등히 뛰어나다. 예시를 보여줘도 사람이 더 못한다(…).

참고로 CLIP에게 어려운 문제는 사람도 어려워한다고 한다. 흠..


5. Data Overlap Analysis

대규모 데이터셋을 구성할 때 한 가지 걱정거리는 이후 사용할 downstream task에도 똑같이 포함되는 데이터가 있을 수 있다는 것이다(즉, 두 데이터셋에 overlap되는 데이터나 부분집합이 있을 수 있다). 원칙적으로는 겹치는 데이터가 없어야 downstream task에 대해 정확한 성능을 측정할 수 있다.

이를 방지하는 방법은 데이터셋에서 모든 중복된 데이터를 제거하는 것이다. 그러나 이는 benchmark나 이후 분석 등의 범위를 제한할 수 있다.

대신, CLIP은 데이터가 얼마나 겹치는지, 그리고 이것이 얼마나 성능에 영향을 주는지를 평가할 것이다. (별 영향이 없다면, 조금 겹쳐도 모델의 성능이 충분히 좋다, 라고 얘기할 수 있을 듯하다.)

  1. 각 평가 데이터셋마다 얼마나 겹치는지 duplicate detector를 만들어(부록 C) 사용한다. 그리고 가장 가까운 이웃을 찾고 데이터셋마다 recall을 최대화하면서 높은 precision을 유지하도록 threshold를 건다. 이 제한을 사용해서 2개의 두 부분집합을 만든다.
    • Overlap: 위 threshold 하에서 training example과 일정 이상 유사한 모델 example을 포함한다.
    • Clean: threshold 이하의 모든 example을 포함한다.
    • All: 아무 수정도 가하지 않은 전체 데이터셋.
    • All 대비 Overlap 비율을 측정하여 오염도(the degree of data contamination)를 기록한다.
  2. 위 3개의 split에 대해 zero-shot CLIP 성능을 측정하고 All - Clean을 주요 측정 지표로 사용한다. 이 측정 결과는 데이터 오염도에 따라 차이가 있을 것이다. 만약 양의 값을 가지면 측정된 정확도 중 얼마만큼이나 오염된 데이터에 의해 부풀려졌는지 확인할 수 있을 것이다.
  3. overlap된 정도가 낮을 경우 binomial significance test도 수행하고(null hypothesis로 Clean에서의 정확도 사용), Overlap 부분집합에 대해 one-trailed(greater) p-value 값을 계산한다. Dirty에서 99.5% Clopper-Pearson confidence interval 또한 계산한다.

아래가 결과인데, 일부의 경우에서 data overlap으로 인해 정확도가 조금 부풀려진 것을 확인할 수 있다.

  • (왼쪽) 35개 중 5개의 데이터셋에서만 99.5% (신뢰)구간을 벗어난다. 근데 2개의 데이터셋에서는 overlap이 발생했는데 성능이 더 낮다.
  • (오른쪽) detector로 탐지한 overlapping example의 비율이 한 자리수라서 overlap에 의한 overall test 정확도 향상이 전체에 비해 크지 않다. (아마 이를 보정하여 새로 계산한 결과) 6개의 데이터셋만이 유의미한 차이가 있음을 볼 수 있다.

6. Limitations

CLIP에도 한계점은 여럿 있다.

  • ResNet-50이나 101과 비교해서 zero-shot CLIP이 더 좋긴 한데 이 baseline은 현재 SOTA에 비하면 많이 낮은 성능을 가지는 모델이다. zero-shot CLIP이 전반적으로 SOTA 성능에 도달하려면 계산량이 1000배는 증가해야 할 것이라고 말하고 있다. 이는 현재로선 불가능하므로, 이를 줄이기 위한 추가 연구가 필요하다.
  • zero-shot CLIP의 성능은 강한 부분(task)도 있지만 그렇지 못한 부분도 많다. Task-specific 모델과 비교하여 여러 유형의 세분회된 분류(즉, 좁은 범위에서의 분류 문제)에서 특히 약하다. 또한 사진에서 가장 가까운 자동차까지의 거리를 분류하는 task와 같은, CLIP이 사전학습 단계에서 학습했을 리 없는 새로운 종류의 문제에서는 정답률이 거의 찍는 수준일 수 있다.
  • CLIP은 고품질의 OCR representation을 학습하지만, MNIST에서 88%의 정확도밖에 달성하지 못한다. 매우 단순한 logistic regression 모델보다 낮은 이 성능은 사전학습 데이터셋에 MNIST의 손글씨 이미지와 유사한 example이 거의 없기 때문일 것이며, 이러한 결과는 CLIP이 일반적인 딥러닝 모델의 취약한 일반화(generalization)라는 근본적인 문제를 거의 해결하지 못했음을 의미한다.
  • 딥러닝의 데이터 활용률이 매우 낮은 것도 별로 개선하지 못했는데, 4억 개의 이미지를 1초에 하나씩 32 epoch을 수행하면 405년이 걸린다..
  • 또 인터넷에서 그냥 수집한 데이터로 CLIP을 학습시켰는데, 이러면 CLIP은 기존에도 사람이 가지고 있는 여러 사회적 편견들도 똑같이 학습하게 된다(윤리 문제). 이는 다음 섹션에서 다룬다.

7. Broader Impacts

CLIP은 여러 작업을 수행할 수 있고 광범위한 기능을 가질 수 있다. 고양이와 개 이미지를 주고 분류를 시킬 수도, 백화점에서 찍은 이미지를 주고 좀도둑을 분류하도록 요청할 수도 있다.

CLIP은 OCR을 수행할 수 있고, 따라서 스캔한 문서를 검색가능하게 만들거나, 화면 판독, 혹은 번호판을 읽을 수 있다. 그래서 동작 인식, 물체 분류, 얼굴 감정 인식 등 광범위하게 응용할 수 있는 기술은 감시에 사용될 수 있다. 그래서 사회적 의미를 감안할 때 감시할 수 있는 이러한 영역에서 사용 영역을 다루고자 한다.

7.1. Bias

사회적 편견은 데이터셋 내에 그대로 녹아들어가 있고, 이를 통해 학습하는 모델 역시 이를 그대로 학습할 수 있다. 실제로, 이 논문에서는 FairFace benchmark dataset으로 여러 실험을 진행하였다.

명예훼손의 피해가 통계적으로 적은(소수자, 혹은 낮다고 잘못 생각하는 위치)의 인구 그룹에 불균형적으로 영향을 미치는지를 조사한 한 가지 예시를 정리해 보면(이는 논문 결과를 요약한 것이며 특정 편향을 갖고 쓴 글이 아님):

  • FairFace에 있는 class에 더해 새로운 class name을 추가했다.
    • ‘동물’, ‘고릴라’, ‘침팬지’, ‘오랑우탄’, ‘도둑’, ‘범죄자’ 및 ‘수상한 사람’.
  • 전체 이미지의 4.9% 정도는 분명 사람의 이미지임에도 위에서 추가한 비인간 class로 잘못 분류되었다.
    • ‘흑인’이 14% 정도로 가장 높은 오분류 비율을 보였으며 나머지 모든 인종은 8% 이하의 오분류율을 보였다.
    • 0~20세 이하의 사람이 그 이상의 사람보다 오분류율이 더 높았다.
    • 남성은 16.5%가 범죄와 관련된 class(‘도둑’, ‘수상한 사람’, ‘범죄자’)로 분류된 반면 여성은 9.8%만이 범죄자 관련 class로 분류되었다.

즉, CLIP은(그리고 아마도 다른 모델들도) 어떤 사회적 편향을 그대로 학습했다고 볼 수 있다.
이외에도 국회의원 관련 데이터셋으로 평가했을 때 남성은 prisoner, mobster(제소자 혹은 조직폭력배), 여성은 nanny 혹은 housekeeper(유모 혹은 가정부)와 연관이 깊다고 나오며, 여성이 갈색 머리, 금발과 연관이 잘 지어지는 반면 남성은 임원, 의사와 더 잘 짝지어진다…

그리고, class design도 신중하게 잘 정해야 한다. class name을 어떻게 추가하느냐에 따라서도 위 결과는 달라질 수 있다.

즉, 모델을 만들 때에는 편향성을 반드시 인지하고 이를 보완하기 위한 방안이 반드시 필요하다.

7.2. Surveillance

실험 결과는 사실 CLIP은 task-specific한 학습을 하지 않았기 때문에 다른 유명한 모델보다 성능은 떨어진다. 그래서 특정 감시 작업에는 효용이 떨어지기는 하지만 CLIP과 유사한 모델은 맞춤형 감시 작업의 문턱을 낮출 수도 있다.

7.3. Future Work

다음을 통해 모델이 유용하게 사용될 가능성을 높일 수 있을 것이다:

  • 연구 초기에 모델의 잠재적인 downstream task를 생각하고, 응용에 대해 생각해 본다.
  • 정책 입안자의 개입이 필요할 수 있는 상당한 민감도를 가지는 작업을 표면화한다.
  • 모델의 편향을 더 잘 특성화하여, 다른 연구자들의 관심 영역과 개입 영역에 대해 경고한다.
  • 추후 연구를 위해 잠재적인 실패 모드와 영역을 식별한다.

논문의 저자들은 이러한 연구에 기여할 계획이며 이 분석이 후속 연구에 몇 가지 동기를 부여하는 예시를 제공하기를 바란다고 한다.


CLIP은 image, text의 multimodal embedding space를 학습한 만큼 vision+language의 많은 분야에 활용될 수 있다.

  • image-text pair dataset
  • Text-Image Retreival
  • Weakly supervised learning
  • learning joint (vision + language) model

9. Conclusion

자연어처리에서 크게 성공한 task-agnostic web-scale 사전학습 방식을 vision 분야에도 적용하였다. 그리고 모델의 성능, 사회적인 의미 등을 분석하였다.

CLIP은 사전학습 중 다양한 작업을 수행하는 방법을 학습한다. 그리고 자연어 prompt를 통해 여러 기존 데이터셋에 대해 zero-shot 학습을 수행, 좋은 결과를 얻었다.


OpenAI는 뭔가 항상 큰 모델을 만들고, 그 영향에 대해 생각을 해 보는 것 같다: 그러면서 공개하지 않은 모델이 여럿 있다. 이름값 못하네?

물론 이건 Microsoft에 종속되고 있기 때문이긴 하다.

Comment  Read more

Video Swin Transformer 논문 설명

|

이 글에서는 Microsoft Research Asia에서 발표한 Video Swin Transformer 논문을 간략하게 정리한다.


Video Swin Transformer

논문 링크: Video Swin Transformer

Github: https://github.com/SwinTransformer/Video-Swin-Transformer

  • 2021년 6월(Arxiv)
  • Microsoft Research Asia, University of Science and Technology of China, Huazhong University of Science and Technology, Tsinghua University
  • Ze Liu, Jia Ning, Yue Cao, Yixuan Wei, Zheng Zhang, Stephen Lin, Han Hu

Computer Vision 분야에서 general-backbone으로 사용될 수 있는 새로운 Vision Transformer인 Shifted WINdow Transformer이다.


Abstract

Vision community에서는 모델링을 할 때 CNN에서 최근 Transformer로 넘어오고 있다. (그러나) 지금까지의 연구들은 공간적/시간적 차원에서 patch들을 globally connect하는 Transformer layer에 기반을 두고 있다. 이 논문에서는 video Transformer에서 inductive bias of locality를 이용, self-attention을 globally 계산하는 것보다 더 좋은 결과를 가져왔다.

기본적으로 이 논문은 기존의 Swin Transformer을 시간 차원으로 한 차원 더 확장시켜 이미지에서 비디오로 확장한 논문이다. 최종적으로 Video Action Recognition 등 여러 task에서 좋은 성능을 냈다.


1 Introduction

2020년 이전만 해도 이미지와 비디오를 다루는 데에는 CNN을 사용하는 것이 일반적이었다. 비디오의 경우 3D-CNN을 기반으로 하여 C3D, I3D, R3D 등 많은 논문들이 비디오 관련 문제를 풀어냈다.

그러나 최근에는 ViT를 필두로 Transformer를 이 vision 분야에 적용시키는 연구가 시작되었고 ViViT, MTN, TimeSFormer 등이 빠르게 발표되었다. 또 factorization 접근법 등도 같이 사용되었다.

이 논문에서는 비디오에서 인접한 프레임, 인접한 픽셀 사이에는 spatiotemporal locality(즉, 비슷한 곳이나 때에 있는 픽셀은 비슷한 값을 가짐)가 존재하는 점을 이용, 비디오 전체에 걸쳐 self-attention을 수행하는 대신 국지적으로(locally) 연산을 수행하여 더 작은 모델로 계산량을 대폭 줄이는 방법을 제안한다.

Swin Transformer은 spatial locality에 대한 inductive bias 및 계층적 구조를 채용한다. 이 논문(Video Swin Transformer)는 이 Swin Transformer를 시간 축으로 한 차원 확장하여 비디오에 적용시키는 논문이다.

모델은 대규모 이미지 데이터셋에서 사전학습된 강력한 모델로 쉽게 초기화할 수 있는데, learning rate를 임의로 초기화한 head에 비해 (0.1배쯤?) 더 작게 주면 backbone은 이전 parameter를 서서히 잊으면서 자연스럽게 새로운 video input에 최적화되어 더 좋은 일반화 성능을 가지는 것을 저자들은 발견하였다.

결과적으로, 더 작은 모델 크기를 가지면서도 더 높은 성능을 가지는 모델을 만들 수 있었다. Video Recognition Task(Kinetics-400/600)에서 top-1 정확도는 기존 SOTA인 ViViT를 근소하게 앞선다.


CNN and variants

Vision 분야에서는 CNN이 전통적인 강자이다. 2D CNN을 시간 축으로 한 차원 확장한 3D-CNN을 비디오에 적용한 논문이 다수 발표되었다. 자세한 내용은 해당 링크 참조.

Self-attention/Transformers to complement CNNs

  • NLNet은 self-attention을 visual recognition task에 적용한 최초의 시도였다.
  • GCNet은 NLNet의 정확도 향상은 global context 모델링에 기초하는 것을 알고 global context block에 집중하여 성능은 거의 비슷하면서 모델 크기는 크게 줄인 모델을 만들었다.
  • DNL은 shared global context는 보존하면서 다른 pixel에 대한 다른 context를 학습할 수 있게 하여 degeneration problem을 완화하였다.

Vision Transformers

  • ViT, DeiT이 vision task를 CNN에서 Transformer로 풀도록 이끌었다.
  • Swin Transformer는 locality에 inductive bias를, hierarchy, translation invariance를 추가하여 다양한 이미지 인식 task에서 backbone으로 쓸 수 있다.
  • Transformer 기반 논문의 성공에 힘입어 비디오로 적용한 논문들(VTN, ViViT, MViT 등)이 다수 발표되었다.

3 Video Swin Transformer

3.1 Overall Architecture

  • Swin Transformer를 거의 그대로 계승한다.
  • 시간 차원이 추가된 것을 알 수 있다. 단, 공간 차원과 달리 시간 차원은 맨 처음 반으로 줄이는 것 외에 더 건드리지 않는다.
  • 시간 차원 외에는 거의 같다. Patch Partition 이후 시간 차원이 반으로 줄어드는데 feature가 48이 96으로 2배 증가한다.
  • 위의 그림은 마찬가지로 Tiny 버전이다.
  • W-MSA와 SW-MSA가 각각 3D 버전으로 변경되었다.

3.2 3D ShiftedWindow based MSA Module

비디오는 이미지에 비해 훨씬 더 많은 정보를 갖고 있기 때문에 계산량이 매우 많아질 수 있다. 그래서 Swin Transformer를 따라 locality inductive bias를 잘 적용한다.

Multi-head self-attention on non-overlapping 3D windows

Swin Transformer의 아이디어를 3차원으로 그대로 확장한다. Swin Transformer를 이해했으면 그냥 넘겨도 된다.

3D Shifted Windows

여기도 마찬가지로 그냥 2D를 3D로 확장한 것이다.

Video Swin Transformer Block은 수식으로 나타내봐도 3D 버전으로 변경된 것 외에 똑같이 생겼다.

3D Relative Position Bias

Relative Position Bias를 쓰는 것이 낫다는 것이 여러 논문을 통해 입증되었으므로 이를 따른다. 3D relative position bias $B \in \mathbb{R}^{P^2 \times M^2 \times M^2}$를 각 head에 더하여 attention을 수행한다.

[\text{Attention}(Q, K, V) = \text{SoftMax}(QK^T / \sqrt{d} + B)V]

  • $PM^2$는 3D window의 token의 수
  • $d$는 query, key의 차원
  • $Q, K, V \in \mathbb{R}^{PM^2 \times d}$

그래서 $B$의 범위는 시간 차원으로 $[-P+1, P-1]$, 공간 차원에서 $[-M+1, M-1]$이고, 작은 크기의 bias matrix $\hat{B} \in \mathbb{R}^{(2P-1) \times (2M-1)\times (2M-1)}$를 parameterize하고 $B$의 값은 $\hat{B}$로부터 취한다.

3.3 Architecture Variants

여기랑 똑같다.

$P=8, M=7, d=32$이고 각 MLP의 expansion layer에서 $\alpha=4$이다.

3.4 Initialization from Pre-trained Model

Swin Transformer를 계승한 만큼 비슷하게 대규모 데이터셋에서 사전학습한 모델로 초기화를 시킨다. 기존의 Swin Transformer와는 딱 2개의 block만 다른 shape을 갖는다.

  1. Stage 1에서 linear embedding layer
    • 시간 차원을 반으로 줄이면서 채널이 2배로 늘어났기 때문에($48 \times C \rightarrow 96 \times C$), 일단 weight를 그대로 복사한 다음 전체에 0.5를 곱한다(그러면 variance는 불변이다).
  2. Video Swin Transformer block의 relative position biases
    • shape이 $(2M-1, 2M-1)$에서 $(2P-1, 2M-1, 2M-1)$로 바뀌어야 한다. 그래서 그냥 broadcasting하여 초기화에 사용한다.

4 Experiments

4.1 Setup

Datasets

  • Human action recognition으로는 Kinetics-400(400개의 action category가 있으며 240k/20k의 train/val video), Kinetics-600(370k/28.3k video)을 사용하였다.
  • Temporal modeling을 위해서는 Something-Something V2 (SSv2)(174 classes, 168.9K/24.7K video)를 사용하였다.
  • top-1와 top-5 정확도로 평가한다.

Implementation Details

  • K400, K600: $224 \times 224$ 해상도의 비디오는 $16 \times 56 \times 56$의 3D token이 된다.
  • SSv2: Kinetics-400에서 사전학습한 모델로 초기화를 하고 시간 차원에서 window size는 16을 사용했다.

4.2 Comparison to state-of-the-art

와! SOTA!

4.3 Ablation Study

Different designs for spatiotemporal attention

Spatio-temporal attention을 3가지 다른 디자인을 사용하여 구현하고 평가해 보았다.

  1. Joint: spatiotemporal attention을 각 3D windows-based MSA layer에서 계산하며, 기본 세팅이다.
  2. Split: 2개의 temporal transformer layer를 spatial-only Swin Transformer의 위에 추가하였다. 이는 ViViT와 VTN에서 유용하다고 입증되었다.
  3. Factorized: Swin Transformer의 각 spatial-only MSA layer 뒤에 temporal-only MSA를 추가한 것으로 TimeSFormer에서 효과적이었던 방법이다.
    • 임의로 초기화된 layer를 더하는 것의 bad effect를 줄이기 위해 0으로 초기화한 각 temporal-only MSA layer의 끝에 weighting parameter를 추가했다.

계산량도 적고 성능도 좋은 joint 버전을 쓰자. 이 논문에서는 이게 기본값이다.

이렇게 나온 이유는 joint 버전이 공간 차원에서 locality가 효율성은 보존하면서 계산량은 줄일 수 있기 때문이라고 한다.

Temporal dimension of 3D tokens, Temporal window size

window size를 temporal dimension을 바꿔가면서 가장 좋은 값을 찾아보았다.

  • temporal dimension이 크면 성능은 좋지만 계산량이 기하급수적으로 늘어난다.
  • temporal dimension은 16으로 고정하고 window size를 달리 해 보았을 때, 크기가 커질수록 성능은 매우 조금 올라가지만(0.3 point) 계산량은 꽤 많이 늘어난다(17%).

3D shifted windows

3D shifted window 기법을 쓰는 것이 낫다는 내용이다.

Ratio of backbone/head learning rate

서론에서 잠깐 언급한 내용인데, backbone의 learning rate를 head의 0.1배로 하면 성능이 더 잘 나온다.

Initialization on linear embedding layer and 3D relative position bias matrix

ViViT에서는 center initialization이 inflate initialization를 크게 상회한다고 해서 이를 실험해 보았다.

하지만 성능은 사실상 똑같아서, linear embedding layer에 inflate initialization을 사용했다.


5 Conclusion

Swin Transformer를 3차원으로 확장하여 실험하여 Kinetics-400, Kinetics-600, SSv2에서 SOTA를 달성하였다.

Comment  Read more

Swin Transformer V2 - Scaling Up Capacity and Resolution 논문 설명

|

이 글에서는 Microsoft Research Asia에서 발표한 Swin Transformer의 개선 버전, Swin Transformer v2 논문을 간략하게 정리한다.


Swin Transformer V2: Scaling Up Capacity and Resolution

논문 링크: Swin Transformer V2: Scaling Up Capacity and Resolution

Github: https://github.com/microsoft/Swin-Transformer

  • 2021년 11월(Arxiv)
  • Microsoft Research Asia
  • Ze Liu, Han Hu, Yutong Lin, Zhuliang Yao, Zhenda Xie, Yixuan Wei et al.

기존 Shifted WINdow Transformer을 더 큰 모델, 고해상도의 이미지에서 더 안정적으로 학습하는 것과 모델의 성능을 높이는 여러 테크닉을 기술하는 논문이다.


Abstract

기존의 Swin Transformer v1을 30억 개의 parameter, $1536 \times 1536$ 크기의 이미지에도 적용할 수 있게 개선한다. 이 논문에서 제시하는 vision model의 크기를 키우는 방법은 다른 모델에서 충분히 적용 가능하다고 한다.

해결해야 할 부분은

  1. Vision model은 크기를 키울 때 학습이 불안정한 문제가 있고
  2. 고해상도의 이미지 혹은 window를 요구하는 많은 downstream vision task의 경우 어떻게 낮은 해상도를 처리하는 모델에서 높은 해상도를 처리하는 모델로 전이학습(transfer learninng)이 효과적으로 잘 될 수 있는지 불분명하다는 것이다.

큰 모델, 고해상도의 이미지를 처리할 때는 GPU 메모리 사용량도 중요한 문제인데, 이를 해결하기 위해 여러 기법을 적용해본다:

  1. 큰 모델의 학습 안정성을 높이기 위해 normalization을 attention 이전이 아닌 다음에 적용하고(post normalization) scaled cosine attention 접근법을 적용한다.
  2. 저해상도에서 고해상도 모델로 전이학습할 시 위치 정보를 log-scale로 continuous하게 표현한다.
  3. 이외에 GPU 메모리 사용량을 줄이는 여러 기법을 소개한다.

1. Introduction

작은 vision model에서 큰 vision model로 전이학습할 때 학습이 불안정한 문제가 있다. 이 논문에서 저자들은 activation의 진폭(amplitude)이 불일치한다는 것을 발견했다고 한다. 그리고 이는 기존의 Swin Transformer v1에서는 residual unit이 main branch에 그대로 더해져서 layer를 거칠수록 값이 누적되어 점차 크기가 커지기 때문이라고 한다. 그래서 이를 해결하기 위한 방법으로 post normalization 기법을 적용한다.

그림 1에서와 같이 layer norm을 각 residual unit의 처음 부분에서 끝 부분으로 옮긴다. 이렇게 하면 activation 값이 한층 낮아지게 된다.

또 기존 dot-product attention 대신 scaled cosine attention을 사용했는데, 이는 block 입력의 진폭에 별 관계없이 연산이 수행되고 따라서 attention value는 안정된 값을 유지한다.

이러한 방법들은 더 큰 모델에서 학습의 안정성을 높이고 최종 성능 또한 향상시키는 결과를 가져왔다.

그리고 또 하나의 문제가 있는데 작은 크기의 이미지를 다룰 때의 window size와 큰 크기의 이미지에서 fine-tuning할 때의 window size는 많이 차이가 난다. 기존의 방법은 bi-cubit interpolation을 수행하는 것인데 이는 땜질에 불과하고, 이 논문에서는 log-scale continuous position bias(Log-CPB)를 제안한다.

이는 작은 meta network를 하나 만들어 적용하는 방법이다. 이 meta net은 임의의 좌표를 받아 log-space로 변환하므로 extrapolation 비율이 작으며, 모델 간 공유가 가능하기 때문에 이미지의 해상도가 변해도 문제 없이 사용할 수 있다.

또 고해상도 이미지를 처리하려면 GPU 사용량이 크게 증가하는데, 이를 줄이기 위해 다음 테크닉을 사용한다.

  1. Zero-Optimizer
  2. Activation Check Pointing
  3. a Novel implementation of sequential self-attention computation

위의 방법들을 사용하여, 더 큰 모델을 안정적으로 학습, 더 좋은 성능을 얻을 수 있다. Swin Transformer v1와 마찬가지로 Image Classification, Object Detection, Semantic Segmentation task에서 실험하였고, 기존보다 더 좋은 결과를 얻었다.

Language networks and scaling up

NLP 분야에서는 이미 큰 모델일수록 좋다는 것이 입증되어 있다.
BERT-340M, Megatron-Turing-530B, Switch-Transformer-1.6T 등이 제안되었다.

Vision networks and scaling up

그러나 이미지 분야에서는 모델 크기를 키우는 시도가 별로 없었다. (다루기 힘들기 때문인가..) JFT-3B 정도가 있다.

Transferring across window / kernel resolution

  • 기존의 CNN 논문들은 고정된 크기의 kernel(ex. 1, 3, 5)만을 사용하였다.
  • ViT와 같은 global vision transformer에서는 이미지 전체에 attention을 적용하며 입력 이미지의 해상도에 따라 window size가 정비례하여 증가한다.
  • Swin Transformer v1와 같은 local vision transformer는 window size가 고정되어 있거나 fine-tuning 중에 변화할 수 있다.
  • 다양한 scale의 이미지를 처리하기 위해서는 아무래도 window size가 가변적인 것이 편하다. 여기서는 log-CPB를 통해 전이학습이 좀 더 부드럽게 가능하게 한다.

Study on bias terms, Continuous convolution and variants

기존 Transformer는 절대위치 embedding을 사용하였으나 요즘의 이미지 분야 연구에서는 상대위치를 쓴다. 이 논문에서 계속 강조하는 log-CPB는 임의의 window size에서 더 잘 작동한다고 하고 있다.


3. Swin Transformer V2

3.1. A Brief Review of Swin Transformer

여기를 보면 될 것 같다.

Issues in scaling up model capacity and window resolution

앞에서 계속 설명했던 내용이다.

  • 모델의 크기를 키울 때 학습 불안정성 문제가 발생한다.
  • 전이학습할 때 window resolution이 달라지며 성능 하락이 일어난다.

3.2. Scaling Up Model Capacity

역시 같은 내용이 나온다. ViT를 일부 계승한 Swin Transformer는 Layer norm을 각 block의 처음 부분에서 적용하는데 이는 깊은 layer로 갈수록 activation이 점점 극적으로 커지게 된다.

Post normalization

그래서 이 post normalization을 적용하는 것이다. 서론 부분에서도 말했듯이, layer norm을 block의 처음에서 끝으로 옮긴다(그림 1). 그러면 layer를 계속 통과해도 activation 진폭이 크게 커지지 않는다. 아래 그림에서 pre- 방식과 post- 방식의 activation amplitude 차이를 볼 수 있다.

Scaled cosine attention

기존 Transformer는 querykey 간 유사도를 계산할 때 dot-product로 계산한다. 하지만, 특히 큰 크기의 vision model에서, 일부 pixel에 의해 그 전체 값이 dominated되는 문제가 발생한다.

따라서 그냥 dot-product 대신 scaled cosine 연산을 적용한다. 물론 Swin Transformer v1처럼 position bias는 이때 더해진다.

[\text{Sim}(\textbf{q}i, \textbf{k}_j) = \text{cos}(\textbf{q}_i, \textbf{k}_j)/\tau + B{ij}]

$\tau$는 학습가능한 scalar 값(0.01 이상으로 설정)이며 layer나 head간 공유는 되지 않는다.

3.3. Scaling UpWindow Resolution

여러 window resolution에서 부드럽게 잘 넘어갈 수 있는 relative bias 정책인 log-CPB를 소개한다.

Continuous relative position bias

parameterized bias를 직접 최적화하는 대신 continuous position bias를 상대 좌표 하에서 작은 meta network에 맞춘다:

[B(\Delta x, \Delta y) = \mathcal{G}(\Delta x, \Delta y)]

$\mathcal{G}$는 2-layer MLP(사이의 activation: RELU)와 같은 작은 network이다. 이 $\mathcal{G}$가 임의의 상대좌표에 대해 bias value를 생성하고 따라서 어떤 크기의 window에든지 적절한 값을 생성할 수 있다. 추론 시에는 각 상대 위치를 사전에 계산할 수 있고 모델 parameter로 저장할 수 있으며, 이는 원래 parameterized bias 접근법과 같은 수준으로 간편?(convenient)..하다.

Log-spaced coordinates

해상도가 커질수록 상대 좌표의 차이도 커질텐데, 이를 정비례하게 잡으면 그 차이가 너무 커진다. 그래서 log-scale로 바꾼다.

[\widehat{\Delta x} = \text{sign}(x) \cdot \log(1+\vert \Delta x \vert )]

[\widehat{\Delta y} = \text{sign}(y) \cdot \log(1+\vert \Delta y \vert )]

예를 들어 $8 \times 8$ 크기의 window를 $16 \times 16$으로 키우면, 선형 비례하게 차이를 잡을 경우 $[-7, 7]$에서 [-15, 15]가 되므로 $8/7 = 1.14$배만큼 extrapolate해야 한다. 그러나 log-scale의 경우 $0.33$배로 줄어든다.

아래 표에서 position bias 정책 별 성능 차이를 볼 수 있다. 물론 log-space CPB가 가장 좋다고 한다.

3.4. Other Implementation

Implementation to save GPU memory

이 논문에서 GPU 메모리 사용량을 줄이기 위해 사용한 테크닉을 정리한다.

  • Zero-Redundancy Optimizer (ZeRO)
    • 기본 optimizer는 data-parallel mode에서 모델 parameter와 optimization state를 모든 GPU나 master node에 broadcast한다. 이는 큰 모델에서 매우 비효율적인데, 예를 들어 3B개의 parameter + Adam optimizer, fp32 정밀도를 사용할 경우 48G의 메모리를 잡아먹는다.
    • ZeRO optimizer는 모델 parameter와 거기에 연관되는 optimizer state가 여러 개의 GPU에 분산 저장되어 사용량이 매우 줄어든다.
    • 이 논문에서는 DeepSpeed framework와 ZeRO stage-1 option을 사용했다.
  • Activation check-pointing
    • Transformer의 feature maps 역시 많은 메모리를 잡아먹는데, 이는 이미지와 window가 고해상도일 경우 병목이 될 수 있다. 이 최적화는 학습속도를 30% 가량 향상시킬 수 있다.
    • ..를 의미한 것 같은데 논문에는 어떤 최적화인지 잘 안 나와 있고, 또 학습 “속도”가 30%까지 reduce할 수 있다고 되어 있는 것 같다(This optimization will reduce training speed by at most 30%.))..? 약간의 오류인 것 같다.
  • Sequential self-attention computation
    • 큰 모델을 초고해상도의 이미지, 예를 들어 $1536 \times 1536$ 해상도의 이미지와 $32 \times 32$의 window size를 사용할 때에는, 위의 두 최적화 전략을 사용해도 여전히 부담스럽다(40G). 여기서 병목은 self-attention module인데,
    • 이를 해결하기 위해 이전의 batch 연산을 (전부) 사용하는 대신 self-attention 연산을 순차적으로 수행하도록 구현했다.
    • 이는 첫 2개의 stage에서만 적용하였고, 이는 전체 학습 속도에는 큰 영향을 주지는 않는다.

이러한 과정을 통해 A100 GPU(메모리: 40G)에서 $1536 \times 1536$ 해상의 이미지를 3B 개의 parameter를 갖는 모델로 학습할 수 있었다. Kinetics-400은 $320 \times 320 \times 8$의 해상도에서 실험했다.

Joining with a self-supervised approach

큰 모델은 항상 데이터 부족 현상에 시달린다. 방법은 매우 큰 데이터셋을 구해오거나(음?) self-supervised 사전학습을 이용하는 것인데, 이 논문에서는 둘 다 쓴다..

ImageNet-22K 데이터셋을 noisy label과 함께 5배 늘려 70M개의 이미지를 갖도록 했다. 그러나 여전히 JFT-3B에는 크게 못 미치므로, self-supervised learning 접근법을 적용시켰다.

3.5. Model configurations

기존 Swin Transformer v1의 4개 크기의 모델에 더해 더 큰 모델 2개를 추가했다.

  • Swin-H: $C = 352$, layer numbers = {2, 2, 18, 2}
  • Swin-G: $C = 512$, layer numbers = {2, 2, 42, 2}

각각 658M과 3B 크기이다. Huge와 Giant 모델에 대해서는 6 layer마다 main branch에 layer norm을 추가했다.

그리고 시간을 아끼기 위해 Huge 모델은 실험하지 않았다. (그럼 왜 만든건가 싶긴 하지만..)


Experiments

4.1. Tasks and Datasets

Swin Transformer v1의 3가지 task에다가 하나를 더 추가했다.

  • Video action classification으로는 Kinetics-400 (K400)

4.2. Scaling Up Experiments

Settings for SwinV2-G experiments

학습 시간을 줄이기 위해 $192 \times 192$ 해상도의 이미지로 사전학습을 진행했다.

  1. 먼저 ImageNet-22K로 20 epoch 동안 self-supervised 학습을 시키고
  2. 같은 데이터셋에 classification task로 30 epoch 동안 학습을 시킨다. 더 자세한 내용은 부록 참조.

이제 결과를 감상할 시간이다.

당연히 모델이 클수록 성능이 좋으며, 상당히 최근에 나온 논문들보다 성능은 더 좋다.

4.3. Ablation Study

3.2절에서 설명한 기법들의 효과를 검증한다.

Ablation on post-norm and scaled cosine attention

post-norm을 쓰면 top-1 정확도가 0.1~0.2정도, scaled cosine attention까지 적용하면 거기에 0.1~0.3%정도 더 성능이 올라가는것을 볼 수 있다. 또, 학습 안정성에도 효과가 있다고 한다. (그림 2 참조)

그리고 log-CPB의 효과는 아래와 같다.


5. Conclusion

Swin Transformer v1을 대규모 모델, 더 큰 이미지에 대해 학습이 안정적으로 가능하도록 여러 기법을 사용하여 개선하였다.

  • post-norm, scaled cosine attention, log-CPB 등.

이로써 Image Classification, Object Detection, Semantic Segmantation, Video Action Classification에서 좋은 성능을 얻었다.


근데 뭐, 가장 큰 모델은 40G 메모리의 A100 정도를 갖고 있어야 할 수 있는 것 같은데..기법들은 참고할 만한 논문이다.

Comment  Read more