개요
논문 링크: https://arxiv.org/abs/2101.03697
ResNet같이 residual block을 사용하거나 GoogLeNet같이 inception module를 사용하면 성능이 좋아지는 것은 잘 알려져 있지만 계산의 효율이 떨어진다. 이런 구조의 공통점은 다음 그림과 같이 정보가 여러 branch로 쪼개진 후 다시 합쳐진다는 것이다 (residual block, inception module 같은 구조들이 왜 도움이 되었는지는 해당 논문들 참고).
계산 효율성에서 이런 구조들의 단점은 한 residual block / inception module이 병렬적으로 한방에 계산이 안된다는 것이다. RepVGG 논문에서는 이러한 이점들을 살리면서 계산이 효율적으로 이뤄지도록 하는 것이 목표다.
핵심 내용
핵심적인 아이디어는 다음 그림이 잘 표현해준다. 주목해야 할 점은 RepVGG에서 training 할 때는 (b) 같은 구조를 사용하지만 inference 할 때는 (c) 같은 구조를 사용한다는 것이다. 사실 같은 함수를 다르게 표현한 것이라서 말장난 같지만, pytorch 같은 패키지에서는 계산을 (b)처럼 해야 학습이 편하고, 계산을 (c)처럼 해야 inference engine에서 효율적이기 때문에 유의미하다 (matrix multiplication은 병렬화가 잘 되기 때문). (b)와 (c)는 동일한 함수를 다르게 표현 (reparametrize) 한 것이기 때문에, RepVGG라고 이름을 붙였다. 참고로 (a)에 표현된 ResNet에 있는 블록 같은 경우, 한쪽 경로는 두 개의 convolution과 한 개의 ReLU를 거치는 방면 다른 경로는 한 개의 convolution (identity도 결국 convolution이기 때문에)을 거치기 때문에 두 개의 경로로 나눠진 계산을 한 개의 operation으로 바꾸기 힘들다. 반면에 (b)에 있는 블록 같은 경우 ReLU 사이에 나눠진 경로가 모두 linear operation이라서 (c)처럼 결국 한 개의 linear operation으로 묶을 수가 있다. 학습할 때 경로를 나눠서 계산하는 것은 3x3 conv, 1x1 conv, identity operation을 한 개의 3x3 conv로 묶어서 학습하는 것이 학습 엔진에서 지원되지 않기 때문이다.
'논문 리뷰 > others' 카테고리의 다른 글
기초 diffusion probabilistic model 이론 공부 로드맵 (1) | 2024.06.16 |
---|---|
[간단 리뷰] RepOptimizer (RepOpt-VGG) (0) | 2023.06.29 |
[논문 리뷰] Sinkhorn Distances: Lightspeed Computation of Optimal Transport (2) | 2023.02.18 |
[논문 리뷰] 잡다한 지식 모음 (0) | 2023.02.01 |