[논문 리뷰] A Battle of Network Structures: An Empirical Study of CNN, Transformer, and MLP (2021)
나의 정리
- Vision에서 주로 사용되는 구조 Convolution, Transformer, MLP 이 세 가지 구조에 대한 실험을 동등하게 하지 않아 비교가 어려웠다.
이를 동일한 환경에서 실험을 해보고 각 구조마다 특성을 알아보자 - Convolution의 장점
local connection을 사용하여서 다른 구조보다 spatial 한 정보를 잘 사용한다.
generalization capability가 강하다. - Transformer의 장점
Global receptive field를 가지고 dynamic weight를 사용하여서 model capacity가 높다. - MLP의 장점
Global receptive field를 가진다.
보완해야 할 점으론 parameter 수가 매우 많아서 overfitting을 잘 관리해야 더 높은 성능을 달성할 수 있을 것이다. - Conv, Trans, MLP 이 세 가지 구조가 왜 잘되고 어떤 게 더 좋은지 모르겠어서 읽게 된 논문이었고 그에 대한 insight를 얻을 수 있었다.
앞으로 연구를 할 때도 각 구조를 왜 쓰는지 잘 알고 모델을 설계하는 것이 중요할 것 같다.
Abstract
DNN 구조에 대한 실험과 각 구조에 대한 장단점에 대해서 설명을 해주는 논문이다.
CNN과 Transformer를 합쳐서 만든 Hybrid model을 제시한다.
Introduction
Computer Vision에서 CNN 구조가 지배적으로 연구가 되고 있었지만 ViT의 등장으로 Transformer가 Computer Vision에서 사용되기 시작하였다. 또한 MLP-Mixer가 등장하면서 mlp만으로도 위에서 언급한 구조들에 근접한 성능을 낼 수 있다는 것을 밝혀냈다.
CNN, Transformer, MLP 세 가지 구조가 나오면서 어떤 구조가 Vision 분야에서 제일 적합한지 결론이 나지 않았다. 그 이유 중 하나는 기존 논문들은 높은 score를 내기 위해서 다양한 trick과 철저한 parameter tuning을 하기 때문에 공정한 비교를 하기가 어렵다는 이유도 있다. 따라서 하나의 통합된 framework SPACH(SPAtial + CHannel)를 개발하여 같은 환경에서의 실험 결과를 구조 별로 비교한다.
위 구조에서 보듯 mixing block을 convolution layer, Transformer layer, MLP layer로 대체가 가능한 plug-and-play module로 구성된다. (mixing block을 제외한 다른 component는 고정!)
3가지 구조 모두 classification task에서 좋은 성능을 냈고 각 구조는 네트워크가 커짐에 있어 서로 다른 반응을 이끄는 뚜렷한 특성을 가지게 된다.
→뒤에서 3가지 properties에 대해서 설명할 예정!
실험의 결과 간단 요약
- multi-stage는 CNN에선 보편적이지만 Transformer, MLP에선 간과되어 잘 사용되지 않는다. 실험을 통하여 multi-stage가 어떤 구조를 사용하건 single stage를 능가하는 성능을 냈다.
- local modeling은 효율적이고 중요하다. MLP와 Transformer에 local modeling을 추가하니까 상당한 성능 gain을 얻었다.
→ local modeling이 뭔지 모르겠다면 추후에 있을 설명을 다시 보자 - MLP는 model의 크기가 작을 때 좋은 성능을 냈지만 모델이 커지면서 심각한 overfitting이 일어났다.
→MLP의 성능 개선에 있어서 가장 큰 장애물이 된다. - Convolution과 Transformer는 상호 보완적이다. Convolution은 가장 좋은 genalization capability를 가지고 Transformer는 큰 model capacity을 가진다.
→ light weight 모델은 Convolution 구조가, large model의 경우 Transformer가 좋은 선택이 될 수 있다.
⇒ Convolution과 Transformer를 hybrid로 사용해서 SOTA 달성하였다.
Background
Convolution Vision models
기본 Convolution은 두 개의 spatial과 하나의 channel dimension을 가진 filter로 학습을 진행한다. (HxWxC)
(filter = kernel)
따라서 기본 Convolution의 경우는 spatial, channel correlation이 하나의 convolution filter에 존재하는 것이다. 추후 연구로 depth-wise convolution layer를 통해서 spatial correlation만 학습하고 1*1 convolution을 추가해서 channel correlation을 구하는 것으로 진행되었다.
→ depth-wise convolution을 통해서 연산량의 이득을 가져오는 것 같다.
Transformer-based vision models
기존에 NLP에서 사용되던 Transformer를 vision 분야에서 사용하기 위해서는 2가지 Challenge가 존재한다.
- image로 token을 만드는 것
→이전 MLP-Mixer 논문 리뷰 때 언급했듯 text와 다르게 image는 high resolution을 가지고 있으므로 token을 어떻게 만들 것인가가 challenge이다. - Transformer는 모든 token을 동등하게 다루지만 image는 local 구조의 중요성이 높다.
→Transformer는 전체 token을 모두 사용하여 global 한 부분이 있지만 이전에 Transformer관련 논문들도 이러한 문제 때문에 positional embedding을 통해서 완화했다.
Swin-Transformer의 경우 local mechanism을 통하여 locality를 살려 성능 gain을 얻었다.
MLP-based vision models
ResMLP는 large dataset 없이 transformer 모델과 비슷한 결과를 얻었다.
A Unified Experimental Framework
Overview of the SPACH Framework
single stage는 낮은 해상도로 down sampling을 하여 진행하는 반면 multi stage는 시작 단계에서 고해상도를 유지하고 점차적으로 down sampling을 진행하는 방식으로 진행을 한다. (down sampling ratio = [4, 8, 16, 32]
computational cost 때문에 모든 구조의 처음 stage는 convolution을 사용해서 구성한다.
→결국 Convolution, Transformer, MLP 구조 모두 Convolution을 사용하긴 했다는 말이다. pure한 실험이 되진 못한 것 같아 아쉽기도 하고 알맞은 실험이었나 의문이 드는 부분
모든 구조는 동일하게 처음엔 image를 patch embadding layer에 넣어준다. patch size는 single stage에선 16x16, multi-stage에서는 4x4를 사용한다.
model size는 XXS, XS, S 3가지로 구성을 하고 model size 별로 block의 개수, channel 수, channel mixing MLP Fc의 비율을 결정하게 된다. (Fc는 channel mixing function)
Mixing Block Design
Spatial mixing function Fs는 공간적인 위치에 대한 context 정보에 집중한다. Channel mixing function Fc는 channel의 정보를 합치는데 집중한다.
→각 mixing function의 역할
Convolution 구조는 3*3 depth-wise convolution으로 구성하고 나중에 channel mixing을 해준다. (연산량에서의 이득을 위해서)
또한 Swin-T에서 언급되었듯 absolute positional embedding은 translation variance 문제 때문에 image에 적합하지 않다. 따라서 여기선 Convolutional Positional Encoding (CPE)를 진행한다.
Convolutional Positional Encoding이란?
Transformer와 MLP 구조 모두 image를 patch 단위로 잘라내 token으로 만들어서 사용하게 된다.
이 token에는 spatial 정보를 담기 위해서 진행하는 것이다. 진행 과정은 token을 다시 2D 형태로 변환하여 3*3 같은 크기의 depth-wise convolution을 사용해 spatial 한 정보를 한번 mixing 해주는 것이다.
이는 간단하고 연산량도 많이 늘어나지 않아 좋은 방법이라고 한다!
spatial mixing function Fs는 3가지 중요한 속성을 가지게 된다.
- Convolution은 계산 효율을 위해 local connection만 포함을 한다.
→유일하게 local correlation을 사용한다. - Self-attention은 모델의 capacity를 늘리기 위해 dynamic wieght를 사용하고 global receptive field를 가진다.
- MLP는 global receptive field를 가지지만 dynamic weight는 사용하지 않는다.
self-attention의 dynamic weight란?
self-attention의 경우 input에 의해서 key, query가 정해지게 된다.
그 값을 softmax를 취해 weight로 사용하므로 input에 따라서 weight의 값도 변하게 된다.
따라서 dynamic weight를 사용한다고 할 수 있는 것!!
위 속성을 보면 Convolution과 self-attention 구조는 서로 상호보완적인 관계임을 알 수 있다.
Empirical Studies on Mixing Blocks
- Multi-stage is Superior to Single-stage
- multi-stage의 성능이 어떤 구조를 사용하던 single-stage 보다 훨씬 좋다.
- Local Modeling is Crucial
local modeling이 vision task에서 매우 중요한 부분이다. 특히 MLP-Mixer에서는 positional embedding을 사용하지 않았는데 실험적으로 사용하는 것이 더 좋음을 알아냄
→이 논문에서는 Convolution positional embedding으로 사용하여서 적은 연산량 증가로 높은 성능 gain을 얻었다.
local modeling이란?
→ spatial mixing bock과 같이 공간 정보를 활용하는 것으로 positional embedding으로 사용되는 방법!
- A Detailed Analysis of MLP
MLP는 다른 구조와 비교했을 때 parameter 수가 너무 많다. 이로 인해서 심한 overfitting이 날 수 있다.
따라서 MLP로 높은 성능을 내기 위해 overfitting을 피하기 위한 mechanism 2가지를 소개한다.- multi-stage를 사용한다.
앞선 실험의 결과로 multi-stage를 통해 genalization capability를 얻을 수 있다는걸 알 수 있다. - weight sharing을 통해 parameter 수를 줄인다.
single-stage에서는 모든 mixing block에서 Fs를 공유하고 multi-stage에선 N stage에서의 mixing block에서 해당 stage N의 Fs를 서로 공유한다.
이 것의 효과는 parameter를 줄이고 정확도를 올릴 수 있었다. (Table 5 참고)
- multi-stage를 사용한다.
- Convolution and Transformer are Complementary
Convolution이 generalization capability가 가장 높고 Transformer가 model capacity가 가장 크다.
figure 5를 보면 train loss가 클 때는 convolution의 성능이 더 좋은 걸 볼 수 있다.
→light weight일 때는 convolution 구조가 더 좋다.
하지만 train loss가 줄어들수록 정확도가 높아지는 것을 볼 수 있다.
→Transformer의 model capacity가 더 높다.
Hybrid Models
최종적으로 상호 보완적인 Convolution과 Transformer를 사용하여 Hybrid model을 설계하였다.
multi-stage convolution을 base-line으로 선택된 몇 개의 layer를 Transformer layer로 고쳐준다.
layer를 선택하는 조건
- Hybrid-MS-XS
base - Conv-MS-XS stage 1, 2는 바꾸지 않고 그대로 둔다.
stage 3의 마지막 10개의 layer, stage 4의 마지막 2개 layer를 Transformer layer로 교체한다. - Hybrid-MS-S
base - Conv-MS-S stage 1은 바꾸지 않는다.
stage 2의 마지막 2개 layer, stage 3의 마지막 10개 layer, stage 4의 마지막 2개 layer를 Trasformer layer로 교체
결과적으로 다른 모델들과 비교했을 때 좋은 성능을 냈다