이번에는 ICLR 2022에 accept된 Naver clova 논문인 Learning Features with Parameter-free Layers 을 리뷰하도록 하겠습니다. 해당 논문은 accuracy성능은 유지하면서 latency을 상당히 줄일 수 있는 (operation)layer를 제안하는 데 기여하였습니다.
1. Introduction
기존의 많은 논문들이 efficient한 operation 또는 layer들을 제안하였습니다. 여기서 efficient의 의미는 accuracy성능은 향상시키거나 유지하면서 적은 parameter와 낮은 latency를 도달할 수 있다라는 것입니다. (기존의 efficient한 operation 또는 layer는 뒤에서 더 자세히 설명드리겠습니다.)
해당 논문은 기존 논문들에서 제안한 operation 또는 layer의 단점을 보완할 수 있는 operation(layer)을 제안하게 됩니다. 그래서 parameter를 사용하지 않는 parameter-free operation을 제안합니다. 제안한 parameter-free operation을 적용했을 때 trainable layers을 사용했을 때만큼의 accuracy 성능을 도달할 수 있는 지 많은 실험하였고 증명하였습니다.
더하여 제안한 Parameter-free operation이 search space에 포함되었을 때 Neural Architecture Search(NAS)에서 해당 operation이 잘 찾아지는 지 보아 제안한 operation의 효용성을 판단하였습니다.
2. Preliminaries
해당 논문에서 제안한 parameter-free operation을 설명하기전에 알아야할 기본적인 convolution layer(or block)부터 기존 논문들에서 제안한 efficient한 layer까지에 대해 설명드리겠습니다.
2.1 Basic block
2.1.1 Convolution layer
기본적인 convolution operation은 matrix multiplication으로 표현가능합니다. \(f \in \mathcal{R}^{c_{in} \times H \times W} \)을 input feature, kernel size \(k\), stride \(s\)가 주어 질 때 convolution operation은 다음과 같습니다.
\[
y_{o, i, j} = \sigma ( \sum^{ \lfloor k/2 \rfloor}_{ h,w = - \lfloor k/2 \rfloor } \sum^{ c_{in} }_{u=1} W_{o, u, h, w} \cdot f_{u, r*i+h, r*j+w} ), \quad Eq. (1)
\]
위에서 \(W\)는 weight matrix를 의미하고 \( \sigma \)는 activation function(e.g. ReLU)을 의미합니다. 여기서는 BN layer는 표현하지는 않았습니다.
2.1.2 Bottleneck block
Bottleneck block부터는 efficiency를 목적으로 제안된 것입니다. 아래의 그림과 같이 conv 1x1 operation을 통해 채널 수를 줄인 다음 conv3x3 operation을 진행하는 것이 1x1 conv없이 홀로 큰 채널을 가지고 conv 3x3 operation을 수행하는 것보다 효율적(efficiency)임을 보여줍니다.
위의 bottleneck block을 수식적으로 표현하면 다음과 같습니다.
\[
y_{o, i, j} = \sigma ( \sum^{ \rho c_{in} }_{v=1} P_{o,v}\cdot \sigma ( \sum^{ \lfloor k/2 \rfloor}_{ h,w = - \lfloor k/2 \rfloor } \sum^{ \rho c_{in} }_{u=1} W_{v, u, h, w} \cdot g_{v, r*i+h, r*j+w} )), \quad Eq. (2)
\]
여기서 \( g_{v, r*i+h, r*j+w} = \sigma ( \sum^{c_{in}}_{u=1} Q_{o,u} \cdot f_{u,i,j} ) \), 행렬 \( P \)와 \(Q\)는 1x1 convolution의 weight를 의미한다. 1x1 conv에서 height, width은 유지한채 오직 output channel수를 \(\rho c_{in}\)만큼으로 줄이도록 하여 3x3 conv가 처리해야할 channel연산을 줄이게 됩니다. 그래서 해당 bottleneck 구조에서 efficiency는 3x3 conv에서 연산해야할 channel개수인 \(\rho c_{in}\)으로 결정됩니다. 저자들은 efficiecny가 오직 \(\rho c_{in}\)으로 결정된다는 것을 문제점으로 삼습니다.
2.2 Efficient Building Blocks
2.2.1 Inverted Bottleneck
bottleneck구조안에 depthwise convolution을 추가한 구조인 inverted bottleneck은 기존 bottleneck의 3x3 conv가 depthwise로 변경되면서 채널에 대한 연산수가 줄게 되고 accuracy성능은 높아집니다. 추가적으로 기존과 다르게 적은 channel수의 feature map을 입력으로 1x1 conv로 channel수를 늘리게 되고 그 다음 depthwise conv를 거친다는 특징을 가집니다.
Inverted bottleneck을 수식적으로 표현하면 아래와 같습니다.
\[
y_{o, i, j} = \sigma ( \sum^{ \rho c_{in} }_{v=1} P_{o,v} \cdot \sigma ( \sum^{ \lfloor k/2 \rfloor}_{ h,w = - \lfloor k/2 \rfloor } W_{v, h, w} \cdot g_{v, r*i+h, r*j+w} )), \quad Eq. (3)
\]
수식에서 알수 있듯이 Eq (2)와 다르게 channel에 대한 summation 연산이 제거되었습니다. 이 작은 차이가 generalization 효과를 더 극대화 시켜 좋은 성능을 얻은것입니다. 해당 inverted bottleneck도 efficient하지만 narrow에서 wide로 갈때 channel수가 늘어나는 정도(expansion ratio)에 따라 efficiecny가 결정된다는 문제점은 여전히 똑같습니다.
2.2.1 Variants of Inverted Bottleneck
Inverted Bottleneck보다 더 효율적인 layer또는 module을 제안한 기존 논문들은 다음과 같습니다.
- VersatileNet: 기존의 conv를 여러개의 convolutional filter로 구성된 filter로 교체
- GhostNet: 기존 layers들을 regular conv와 추가적인 depthwise conv의 concatenate로 교체
- EfficientNetv2: pointwise와 depthwise conv를 하나의 regular conv로 fusing시킴
- ShiftNet: depthwise operation을 shift operation으로 대체함
ShiftNet의 수식은 다음과 같습니다.
\[
y_{o, i, j} = \sigma ( \sum^{ \rho c_{in} }_{v=1} P_{o,v} \cdot \sigma ( \sum^{ \lfloor k/2 \rfloor}_{ h,w = - \lfloor k/2 \rfloor } W_{v, h, w} \cdot g_{v, r*i+h, r*j+w} )), \quad Eq.(4)
\]
해당 수식에서 Eq (3)과 다른점은 여기에서 \(W_{v, h, w}\)은 각 채널 \(v\)에 대해 \(h\)와 \(w\)가 1과 0의 값을 가진다는 것이다. 해당 operation을 shift라 명칭하였으며 해당 shift operation은 parameter-free으로 즉, parameter를 사용하지 않는다는 efficiency를 가진다. 하지만 문제점으로는 여전히 expansion ratio가 커야 accuracy성능이 보장되고 실제로 해당 operation을 구현했을때 최적화 되지 않음을 보였다고 합니다. (CUDA 구현에서도 똑같이 최적화 안된다고 하네여)
3. Efficient Building Block with Parameter-free operations
이제부터 논문에서 제안한 parameter-free operation에 대해 설명드리도록 하겠습니다.
3.1 Motivation
기존 연구에서 ResNet의 layer들은 학습에 기여하지 않기 때문에 해당 layer들을 제거해도 된다는 사실을 근거하여 저자들은 기존 residual block중 몇 개를 parameter free operation으로 대체하기로 합니다.
3.2 Rethinking parameter-free operations
ShiftNet의 Eq (4)는 그저 \(W_{v, h, w}\)을 1또는 0의 값으로 할당하였는데요. 본 논문에서는 그렇게 하지 않고 함수 \( s(\cdot) \)을 제안 및 적용하여 \(W\)가 feature map \(g \)의 의존성을 가지도록 합니다. (i.e., \( W_{v, h, w} = s(g_{v, r*i+h, r*j+w} ) \))
여기서 의존성을 가지게 하기 위해 함수 \(s(\cdot) \)는 각 channel \(v\)에 대해 모든 \(h\), \(w\) 범위 안에서 feature map \(g\)의 가장 큰값만 취하도록 하였습니다. 마치 impulse 함수처럼 말이죠. 수식적으로 표현하면 \( W_{v,h^{\ast},w^{\ast}}= 1 \) , \((h^{\ast}, w^{\ast}) =argmax_{ (h,w) } g_{v, r*i+h, r*j+w} \) 이며 다른 이외의 \( W_{v,h,w} \) 의 값은 0으로 할당합니다. 실제로 함수 \(s\)는 max pooling layer으로 대체하여 사용하였다고 합니다.
즉, parameter-free을 만족시키며 feature map의 의존성을 고려한 operation을 제안하는 것입니다.
3.3 Empirical Studies
3.3.1 On a Single Bottleneck
ResNet의 하나의 bottleneck block에 대해 제안한 parameter-free operation을 사용했을 때 효용성이 있는 지 실험하였습니다. 다음과 같은 서로 다른 조건으로 학습시킨 모델들의 성능을 비교합니다.
- Channel expansion ratio: [0.25, 0.5, 1.0, 2.0]
- Base channel width: [32, 64]
- Optimizer: [SGD, AdamW, AdamP]
- 비교 operation: [conv, dwconv, max]
- max: 논문에서 제안한 Parameter-free operation
즉, 4x2x3x3=72개의 모델을 비교했을때 아래와 같은 결과를 보았습니다.
위의 결과에서 알 수 있듯이 channel expansion ratio가 작을때 regular conv와 parameter-free operation이 거의 비슷한 성능을 냄을 알 수 있다는 것을 보여주었다. 이는 parameter-free가 regular conv를 대체가능하다는 것을 의미한다.
3.3.2 On Multiple Bottlenecks
이번에는 여러개의 bottleneck에 parameter-free operation을 적용했을때도 효과적인지 검증하는 실험입니다. ResNet-26기반으로 depthwise conv와 parameter-free operation을 비교하였다고 합니다.
결과적으로 비슷한 top-1 accuracy를 보이지만 inference speed차이에 있어서 parameter-free operation이 월등히 빠름을 보여주고 있습니다. (parameter 수와 FLOPs는 비슷하지만요!)
3.3.3 On Neural Architecture Searches (NAS)
NAS의 search space에 parameter-free operation을 넣었을때 해당 operation이 search되는지 확인하고 성능을 검증하는 실험입니다. 실험을 위해 DARTS라는 NAS방법을 사용하였으며 CIFAR10 dataset에 대해 진행하였습니다. 실험 환경은 다음과 같습니다.
- 모든 normal cell을 각각 찾도록 하였음.
- DARTS의 operation search space를 아래와 같이simplify시킴
- search space: [MAX_POOL 3x3, AVG_POOL 3x3, CONV 1x1, CONV 3x3, DW_CONV 3x3, ZERO, SKIP_CONNECT]
- simplify시켜도 위의 operation들의 조합으로 DARTS의 operation search space를 만들수 있으므로 이렇게 진행
- search를 3번을 진행하여 지속적으로 parameter free operation이 선택되는 지 확인
3번 search했을 때 모두 normal cell에 parameter-free operation(max pooling)이 선택되었음을 알 수 있고 DARTS와 유사한 결과인 첫번째 행과 비교했을때도 성능이 비슷함을 볼 수 있다. 또한 재밌는 것은 node의 수가 증가할 수록(모델이 커질 수록) parameter-free cell이 많이 선택됨을 알 수 있다. 즉, NAS에서도 parameter-free operation이 효과적으로 사용될 수 있음을 알 수 있다.
4. Designing Efficient Deep Neural Networks
위에서 parameter-free operation의 효용성은 실험적으로 확인하였으니 이제 CNN과 ViT에서 parameter-free operation이 들어간network design을 해보죠.
4.1 Efficient CNN Architecture
4.1.1 Hybrid Architecture with Efficient Bottlenecks
기존의 연속적인 3x3 conv, BN와 ReLU 연산을 parameter-free operation인 max pool operation으로 대체시켜 공간적인(spatial) feature를 추출하도록 한다. Base가 되는 모델은 ResNet50이며 기존의 bottleneck과 max pool operation이 들어간 efficient bottleneck의 조합으로 새로운 모델을 제안한다.
위의 NAS실험에서 알 수 있듯이 normal cell에서만 parameter-free operation이 사용되었으므로 여기서도 downsampling block이 아닌 오직 normal block에만 parameter-free operation이 사용되도록 하였습니다. 해당 모델을 Hybrid architecture라고 명칭하네요!
4.1.2 Architecture Study
ResNet50을 기준으로 efficient block을 여러가지의 경우의 수로 나누어 실험했을 경우 측정한 accuracy, latency 성능을 비교하였습니다.
\( B \rightarrow B \rightarrow B \rightarrow B \)는 regular bottleneck만 사용한 baseline ResNet50모델이고 \( E / B \)는 regular bottleneck과 efficient bottleneck을 번갈아가며 사용한 것을 의미한다. 또한 \( E \rightarrow E \rightarrow E \rightarrow E \)는 오직 efficient bottleneck만 사용한 것을 의미한다. 그결과 \( E / B \)인 hybrid architecture가 baseline 모델과 비슷한 성능을 도출해내면서 latecny 성능 향상을 이뤗음을 보여준다. (모든 모델은 ImageNet dataset으로 90epochs학습함.)
4.2 Efficient ViT Architecture
ViT 구조에서 self-attention layer를 대신하여 parameter-free operation을 적용하였다고 합니다. 그리고 ViT의 classification token을 사용하지 않고 global average pooling (GAP)를 사용하였는데 이는 classification token은 self-attention layer없이는 사용이 불가하기 때문입니다. 기본적인 ViT말고도 Pooling-based Vision Transformer (PiT)에도 Parameter-free operation을 적용하였습니다.
5. Experiments
Classification task용 dataset인 ImageNet과 object detection용인 COCO2017 dataset을 사용하여 제안한 efficient architecture의 성능결과를 보여줍니다.
먼저 ImagNet에 대한 성능 비교입니다. max는 parameter-free operaion만 사용하는 efficient block만 있는 것이고 hybrid는 regular와 efficient block을 번갈아 사용한것이고 deform_max는 deformable max pool operation만 사용한것이다. ( \(\dagger \)는 training trick을 쓴 결과입니다.)
COCO dataset에 대한 성능 비교입니다.
'AI paper review > Model Compression' 카테고리의 다른 글
Learning Low-Rank Approximation for CNNs (0) | 2022.03.12 |
---|---|
Few Sample Knowledge Distillation for Efficient Network Compression (0) | 2022.03.11 |
Knowledge Distillation via Softmax Regression Representation Learning (0) | 2022.03.10 |
EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning (0) | 2022.03.10 |
Data-Free Knowledge Amalgamation via Group-Stack Dual-GAN (0) | 2022.03.09 |