MobileNet 은 저전력/저용량 디바이스인 모바일에 deep neural networks 를 디플로이하기 위해 설계된 대표적인 lightweight model 중 하나입니다. MobileNet V1, V2가 2018년도에 제안되었고 최근에는 NAS와 (Neural Architecture Search) 결합된 MobileNet V3까지 발표되었습니다. 이번 포스트에서는 MobileNet V1, V2 에서 사용된 모델의 경량화를 달성하기 위한 설계 기법들에 대해 살펴보도록 하겠습니다.
MobileNet V1
MobileNet V1 은 기존 convolution 을 depth-wise separable convolution 으로 치환한 것으로 요약할 수 있습니다. Depth-wise separable convolution 은 먼저 각 채널별로 depth-wise convolution 을 진행하고 이후 각 픽셀 별로 1x1 convolution 을 (point-wise convolution) 진행합니다. 기존 convolution 이 $h_i\times w_i\times d_i$ 입력텐서를 받아 $K\in R^{k\times k\times d_i\times d_j}$ 커널로 convolution 을 적용하여 $h_i\times w_i\times d_j$ 크기의 텐서를 출력한다고 했을 때의 소요되는 연산량은 $h_i\cdot w_i\cdot k\cdot k\cdot d_i\cdot d_j$ 입니다. 하지만 depth-wise separable convolution 을 사용하면 연산량이 $h_i\cdot w_i\cdot d_i (k^2 + d_j)$로 되어 대략 $k^2$ 배만큼 감소하게 됩니다. 채널간 correlation 과 공간 correlation 을 1x1 / depth-wise convolution 으로 분해함으로써 파라미터를 줄이면서 성능을 최대한 유지하는 기법이죠.
MobileNet V2
MobileNet V2의 설계 요소는 1) linear bottleneck, 2) invertible residual block 으로 구성되어 있습니다.
Linear bottlenecks
먼저 $n$개의 layer 로 이루어진 deep neural networks 에 대해서 각 layer 가 "manifold of interest" 를 구성하고 각 "manifold of interest" 는 저차원의 subspace 로 매핑이 가능하다고 가정합니다. 이 가정하에서 deep neural networks 를 보면 고차원에서 저차원으로 매핑하여 feature 를 추출하는 인코더와 같이 생각할 수 있습니다만, 각 layer 사이에 ReLU 라는 비선형 활성화함수가 존재하기 때문에 정보 손실이 필연적으로 발생하게 됩니다.
입력 $x\in R^{n}$, 선형변환 $B\in R^{m\times n}$에 대한 $ReLU(Bx)$를 생각해볼 때, $Bx$가 음수가 아니어서 non-zero volume $S$를 가진다면 입력 공간의 일부분이 출력 공간으로 선형변환 되었다고 생각할 수 있습니다. 즉, ReLU 의 정의에 따라 양수인 입력값들은 그대로 정보손실 없이 다음 layer 까지 전파되겠죠. 하지만 음수인 입력값들에 대해 ReLU 는 0을 출력하기에 필연적으로 입력의 정보손실이 발생합니다. 하지만, 충분히 많은 채널을 가진 상황이라면 ($m\gg n$) ReLU 를 거친다 하더라도 정보를 유지할 수 있습니다.
논문에서는 굉장히 수학적으로 설명하고 있고 이해하기가 굉장히 어려운 부분이긴 하지만 말하고자 하는 바는 저차원으로 선형변환을 하였을 때 ReLU 를 적용하면 정보손실이 일어나고 고차원으로 선형변환을 하였을 때는 정보가 유지된다는 것입니다. Figure 1에서 보다시피 차원을 각각 2,3,4,15,30 으로 매핑하고 ReLU 를 거친 후 다시 2차원으로 복원한 경우에 중간에 매핑된 차원이 적은 경우는 정보가 많이 손실된 것을 볼 수 있습니다.
논문에서는 supplement 의 Lemma 2에 (Invertibility of ReLU) 소개하고 있습니다. 즉, ReLU 함수는 기본적으로 surjective 함수이지만 (surjective 함수란 하나의 출력에 여러 개의 입력이 매핑된 함수를 말합니다.) 매핑된 $y_0$에 대해 ReLU 가 역변환이 가능하려면 $x_0$에서 $y_0$로 매핑될 때의 정보를 보존할 $n$개의 선형독립인 행이 $B$에 존재할 확률이 올라가게 하기 위해서 $m\gg n$ 이어야 한다는 것입니다. 여기서 파생되는 corollary 는 $m\gg n$일 경우 $Bx$의 일부분만 양수이면 $ReLU(Bx)$ 가 역변환이 가능하다는 것입니다. (역변환이 가능하다면 ReLU 의 surjective 성질을 최소화하여 정보가 그만큼 유지된다고 생각할 수 있습니다.)
논문의 supplement 부분은 $A \times ReLU(Bx)$, $A\in R^{n\times m}, B\in R^{m\times n}, x\in R^n$ 에 대해 $m \leq n$이면 정보 손실이 일어나고 $m\gg n$일 경우 높은 확률로 invertible 가능해져 정보손실이 없다는 내용을 증명하고 있습니다.
정리하면 1) ReLU 함수를 거친 값이 non-zero volume manifold 에 위치하면 이는 선형변환이라 볼 수 있고, 2) 저차원으로 매핑될 수 있는 충분히 고차원 공간 하에서는 정보손실이 없다는 결론을 얻을 수 있습니다. MobileNet V2 에서는 이를 채널을 저차원으로 매핑한 이후에는 ReLU 를 사용하지 않는 linear bottleneck layer 를 사용함으로써 구현합니다. Figure 2에서와 같이 두꺼운 고차원에서 저차원으로 매핑할 시에는 ReLU 를 사용하지 않는 것이죠.
Inverted residuals
일반적인 residual block 은 Figure 3(a)와 같이 채널 수가 wide -> narrow -> wide 형태를 가지며 가운데 narrow 형태가 bottleneck 구조를 만들어 줍니다. 하지만 MobileNet V2 에서는 linear bottleneck 을 통해 필요한 정보를 다 가지고 있다고 전제하므로 skip-connection 을 통해 입력과 출력을 이어주고 Figure 3(b)와 같이 narrow -> wide -> narrow 형태의 inverted residual block 을 사용합니다. 따라서 입력과 출력의 채널 수가 작으니 메모리측면에서 더 효율적이겠죠.
이를 그림으로 보면 Figure 4와 같습니다. 처음 1x1 convolution 을 통해 $t$ 배만큼 채널 수를 확장하여 wide 하게 만듭니다. ($t$를 expansion factor) 라 합니다. 그 이후에 depthwise convolution 을 수행하고 skip-connection 을 위해 다시 1x1 convolution 을 수행하는데 주목할 점은 다시 저차원으로 매핑하므로 정보손실을 막기 위해 ReLU 함수를 사용하지 않습니다.
Figure 4의 Table 1을 통해 소요되는 연산량을 정의해보면 입력, 출력 채널 $d', d''$에 대해 $h\cdot w\cdot d'\cdot t(d'+k^2+d'')$ 로 정의할 수 있습니다. 이를 일반적인 depth-wise separable convolution 의 연산량 $h_i\cdot w_i\cdot d' (k^2 + d'')$ 과 비교해보면 추가적인 1x1 convolution 으로 인해 연산량이 더 많으나 invertible residual blocks 으로 인해 $d', d''$ 자체를 작은 값으로 가져갈 수 있습니다.
다음 포스트
'Machine Learning Models > Covolutions' 카테고리의 다른 글
Temporal Convolutional Network (TCN) (2) | 2021.06.28 |
---|---|
MobileNet (2) (0) | 2021.05.29 |
Convolution 의 종류 (0) | 2021.05.27 |
Slimmable Neural Networks (0) | 2021.03.14 |
Learning Efficient Convolutional Networks through Network Slimming (0) | 2021.03.13 |