2018년 8월 9일 목요일

MnasNet

Mobile platform에 최적인 넷 구조를 NAS로 찾는다.

1. 최적화할 목적함수를 accuracy와 실제 폰에서 측정한 latency(지연시간,연산시간) 2개를 합쳐 사용한다.
1-1. 실측 이유는 연산시간은 폰 의존적이고 폰 사양은 매우 다양하다. 필드에서 직접 관찰이 중요하다. 실험에 쓴 구글 픽셀 one 폰은 단일 쓰레드 CPU 환경이다.
1-2. accuracy와 latency 둘 다를 목적함수 하나로 합치기 위해 Pareto optimal을 사용한다. hard와 soft constraint 2가지를 정의하고 soft를 사용했다.

2. 기존 NAS는 동일 cell 타입을 층으로 쌓았다. 같은 3x3 conv라도 입출력 shape이 달라지면 지연량이 다름을 고려치 않았다. MnasNet은 block별로 구조나 연결이 다른 넷을 구성한다.

3. 후보 샘플링->넷 구성->reward 계산->RNN 학습. 절차는 기존 sampling기반 NAS와 동일하다.




넷 구조 형성에는 Factorized Hierarchical Search 공간을 정의하고 탐색한다.
CNN은 Net 앞 단이 더 큰 data를 처리하므로, 동일한 Block(또는 cell) 구조를 누적 사용할 경우, 뒷 단 보다 latency에 끼치는 영향이 크다.  Block에 들어가는 data 크기에 따라 구조나 연결이 달라야 한다.
MnasNet은 data shape에 따라 Block 구조도 달라진다.


References
[1] MnasNet paper
[2] Google AI BLog: MnasNet
[3] Pytorch-MnasNet





댓글 1개:

  1. $\underline{Depthwise Conv}$

    Conv는 (3x3xM) 커널을 입력 맵에 한번에 적용한다. N개 출력 맵을 얻기 위해서는 서로 다른 (3x3xM) 커널을 N번 적용한다.

    DC는 (3x3) 커널을 깊이 별로 적용한 결과 M개에 (1x1xM)필터를 적용한다. 서로 다른 (1x1xM) 필터를 N번 반복 적용한다.

    연산 량은

    H*W*M*(K*K+N)

    이다.

    여기서 (H,W)는 입력 이미지 크기, M은 입력 맵, N은 출력 맵 수, K는 커널 크기이다. 식을 두 부분으로 분리하면

    H*W*M*K*K,
    H*W*M*N

    이다. 연산량 제어를 위해 앞 부분이 커지면 뒷 부분을 줄여야 한다. K가 커지면 N을 줄인다.

    답글삭제