본문 바로가기

딥러닝/신규 모델&기술 설명

[DeepLearning] IRB에 관하여

320x100
Inverted Residual Block


이번 시간에는 지난 GPU-Net에서 설명했던 이미지 추론의 진행 과정 중, 분산 검색 프레임워크(Distributed Search Framework)의 진행 단계에서 단순히 residual block의 응용이라고만 설명했던 Inverted residual block(역 잔차 블록)에 대해서 알아보겠습니다.

본 기술이 등장하게 된 시기는 2018년 Mobilenet V2에서 새롭게 개발한 기술을 소개하는 과정에서 등장했으며,
이외에도 Depthwise Seperable Convolution(분할가능 깊이 합성곱) 기법, residual bottleneck기술 등 핵심적인 토대가 되는 신기술들이 다수 등장하는 논문입니다.

이 Depthwise Seperable Convolution은 다음 차시에 다시 한번 다루겠습니다.
아래 해외 개발자들도 이에 대해서 멋지게 설명한 영상이 존재합니다.
https://youtu.be/T7o3xvJLuHk

자 그러면, 역잔차블록은 무엇이냐를 살펴보기 위해 먼저 들어가야 할 단계가 있습니다.
우선 원형이 된 밑그림을 보기 위해 연구의 뒤를 되돌아봐야 합니다.


Bottleneck 블록의 영향

먼저, 이 bottleneck 블록이 어떻게 mobile-net 연구에서 어떻게 활용됬는지 알아볼 필요가 있습니다.

MobileNet V1의 혁혁한 성과는 바로 레이어의 차원을 축소시킴으로서 operating space(작업 공간)의 차원도 감소시키는 것이었습니다. 모바일넷 v1은 효과적으로 width multiplier(너비 승수)에 대한 패러미터를 사용함으로서 계산과 정확도 사이의 트레이드오프를 성공시켰고, Efficient 모델 구조의 다른 신경망과도 잘 통합되었다고 합니다.

연구진들은 이 발견으로 width multiplier 접근을 여기에 접목시킵니다. 활성화 공간의 차원을
manifold of interest가 전체 공간에 펼쳐질때 까지 감소시키는 것이죠.
하지만 이러한 접근을 막는 것이 존재했는데, 바로 DCNN이 좌표 변환 시 non-linear를 갖게 되는 문제였습니다.
ReLU를 예로 들고 있습니다.


❎ 낮은 차원의 매니폴드를 높은 차원의 공간으로 옮긴 ReLU 변환의 사례입니다.

근본적으로 문제는 manifold시 중요한 정보를 어떻게 보존할 것인가 였습니다.

개발진들은 이 문제를 해결하기 위해서 manifold of interest를 계산하는데, 고차원의 활성화 공간인 저차원의 subspace에 놓게 됩니다. 실험을 계속하면서 아래 두 가지 사실을 밝혀내게 됬는데요.
1) 만약 manifold of interest가 ReLU 변형 이후 0이 없는 볼륨안에 남아있다면, 이는 linear transformation에 상응한다
2) ReLU는 인풋 manifold에 대해 정보 보호(preserving)은 가능하나, 인풋 manifold가 인풋 space의 저차원 subspace에 놓이는 경우에만 가능한 것이다.

이 두가지 힌트를 바탕으로 연구진들은 Linear Bottleneck 레이어를 convolutional 블록에 삽입해서
저차원 안에 manifold of interest를 잡아둘 수 있다고 가정하고 이를 밝혀냅니다.

linear 레이어는 non-linearities에서의 "정보 과잉 손실"을 막는데 중요합니다. 연구진들은 경험상, non-linear 레이어가 bottleneck안에 있는 것은 몇 퍼센트 손실을 주긴 하지만 가정을 검증하게 하는 것을 확인했다고 말합니다.

아무튼 bottleneck convolution을 응용하는 것이 효과적이라는 것을 여러번 강조하는 것입니다.

Separable with linear bottleneck

Bottleneck with expansion layer


이 두가지 방법입니다.


bottleneck 블록은 각 블록이 몇몇 확장된 bottleneck에 의해서 input된 것을 포함한 블록들이 존재한다는 점에서 유사합니다.
그러나 bottleneck에서 큰 영향을 받은 것은 사실 필수적인 정보를 포함한다는 점이고, expansion layer가 그저 non-linear 변형을 텐서로 한다는 점에서 개발진들은 bottleneck으로 바로 이동하는 숏컷(residual의 핵심)을 사용하게 됩니다.

논문 이미지가 작아서 직접 옮긴 이미지를 참조합니다.


설명 자체는 복잡하지만 형태는 Bottleneck 을 사용한 확장 layer에서 유사한 형태로 나옵니다.

맨 왼쪽과 맨 오른쪽 레이어는 non-linearities를 사용하지 않습니다. 각 블록들의 두께가 상대 채널의 수를 의미합니다.
residual 기존 모델이 다량의 채널 수를 연결시키는 반면, 역 잔차 블록은 bottleneck형태로 연결합니다.

숏컷을 넣음으로서 기존의 residual block과 유사하며, propagate를 다중 레이어에 넣어도 기울기가 향상되는지 확인하고자 했습니다. 여기서 역으로 바꾼 구조는 꽤 메모리의 측면에서 효율성을 보이며, 이전 모바일넷 연구보다도 약간 상향된 것을 밝혀냈습니다.


bottleneck residual block을 k와 k' 채널로 변형, stride는 s, expansion factor는 t입니다.
기본 구조는 위와 같습니다. 다만 연구진들은 더 작은 인풋과 아웃풋 차원을 사용해서 신경망을 더 작게 구현하는데 성공합니다.
아래는 각각의 resolution 사이즈를 비교한 그림입니다.

잠깐의 특장점 설명

Inverted residual bottleneck layer는 효율적인 메모리를 갖습니다.

- 특히 모바일 어플리케이션에 접목하기에 좋다고 합니다.


이렇게 이전 모델에서 많은 영향을 받아 사용이 되었는데요. Inverted Residual 자체도 추후 나타나는
이미지 분류, 판단 모델에 다양하게 쓰이게 됩니다.

Reference


✅ 본 내용은 <MobileNetV2:Inverted Residuals and Linear Bottlenecks> 의 기본 골자에 따릅니다.

직접 확인하기 : [1801.04381] MobileNetV2: Inverted Residuals and Linear Bottlenecks (arxiv.org)

모바일넷_V2 파이토치 공식 설명
MobileNet v2 | PyTorch

PyTorch

An open source machine learning framework that accelerates the path from research prototyping to production deployment.

pytorch.org

728x90