본 포스팅은 NIPS2019에 발표된 Pruning 및 Architectural Search 연구 결과를 리뷰하도록 하겠습니다. 포스팅에 앞서, 주제와 관련된 모든 연구 내용은 Network Pruning via Transformable Archietcture Search 참조했음을 먼저 밝힙니다.

 

Preliminary


딥러닝 모델을 경량화하기 위한 노력은 현재까지 다양한 논쟁 중에 있습니다. 대표적인 방법으로 크게 4가지가 소개되고 있으며 다음과 같습니다. -Pruning, Matrix decomposition, Knowledge distillation, Architectural search-. 본 논문은 Pruning과 Architectural Search를 접목한 방식의 경량화 기술로써 Searching 알고리즘을 통해 얻은 가벼운 모델의 성능 향상을 위해 Knowledge distillation을 함께 적용한 연구 결과입니다. 한편, 위의 4가지 범주는 여러 져널이나 학회지를 통해 쉽게 이해하고 접할 수 있으니, 소개를 생략하도록 하겠습니다.

 

Summary


논문에서 제안하는 큰 Control flow는 아래의 그림과 같습니다. 과거 전통적으로 수행했던 Pruning 방식과는 다르게, 첫 째, Network search를 활용하여, 주어진 Architecture 내에서 필요하다고 고려되는 Node와 Depth 사이즈만 도출함으로써 경량화된 topology를 확보하고, 둘 째, 이를 통해 얻어진 Network를 Student 모델, Original Network를 Teacher 모델로 채택하여 Knowledge disitillation으로 학습합니다. 이 과정은 Original Network에서 학습된 파라미터는 필요한 Node와 Depth 사이즈를 발견하는 것에만 활용될 뿐, 과거의 방식처럼 Fine-tuning의 Initialization을 위한 도구로는 전혀 활용되지 않는 것을 주목할 필요가 있습니다.

 

따라서, 본 논문은 크게 3가지 스텝에 걸쳐 우리가 원하는 경량화 모델을 얻을 수 있다고 말하는데요.

1. Large network를 standard 방식으로 학습한다.

2. 이들이 제안하는 TAS (Transformable Architectural Search)를 활용해 depth와 width를 searching한다.

3. Searching한 Topology를 갖는 Small network를 Knowledge distillation을 이용해 학습한다. (Hinton 방식 사용)

 

본 포스팅에서는 1. 과 3. 은 쉽게 기타 블로그나 논문을 통해 이해할 수 있으므로 2. 에 관하여 짧게 서술하겠습니다.

 

2. 에서는 크게 3가지 searching을 수행합니다. (1) Searching for width (2) Searching for depth (3) Searching for objectives

(1) Searching for width

위의 그림 예시처럼 총 3개의 depth를 갖고 각 layer마다 총 4개의 node를 갖는 network가 있다고 가정할 때, layer마다 적합한 width를 찾기 위해 softmax probability를 활용합니다. 예를 들면, 1번 layer에 node개수는 총 4개 이고, 이에 따라 구성 가능한 # of nodes는 C=1, 2, 3, 4, 총 4가지가 되기 때문에 이들에 대해 모두 softmax probability를 구하고, 해당 layer에서 설정하고자 하는 node 수 (즉, C)를 선택할 경우의 수를 하이퍼파라미터 I로 설정합니다. 서술이 쉽지 않은데요. 만약 I=2라면, 총 (1, 2, 3, 4) 중 (1, 2), (1, 3), ... , (3, 4)하여 6가지의 channel 조합을 만드는 파라미터로 이해하시면 됩니다. 정의한 I에 따라서 위의 그림처럼 각 채널을 활용하여 feedforward하는 경우에 softmax probability를 이용하여 가중합을 하여 다음 layer로 전파합니다. C의 집합을 구성할 때 trainable variable을 사용하는데, 위의 예시와 같은 경우는 variable이 4개가 되고, feedforward 시 발생하는 Cross-entropy loss를 backpropagation하여 각 variable을 업데이트 함으로써 softmax probability의 분포가 달라지게 합니다. 한편, I에 따라서 사용되는 채널의 확률값이 sampling되기 때문에 미분 불가능한 이슈를 보완하기 위하여 기존의 softmax를 gumbel-softmax 분포로 모델링을 하고, 기존의 채널 4개에서 채널 3개 혹은 2개로 줄인 경우결과값의 벡터가 mis-matching되는 현상을 보상하기 위해 CWI (Channel-wise interpolation)을 사용하는 디테일이 있습니다.

 

(2) Searching for depth

Searching for width과 같은 방식으로 depth 전체에 대한 softmax probability를 구한 후 Cross-entropy loss로 해당 variable을 update하며 최적화된 depth를 찾아가는 방식을 활용합니다.

 

(3) Searching for objectives

Accuracy 및 경량화 효과를 모두 확보한 모델을 Searching하기 위해 Cross-entropy loss에 Architectural cost term을 loss로 추가하였는데요. 본 논문에서는 다양한 Configuration에서 발생 가능한 FLOPs의 Exepectation을 cost로 활용했다고 말하고 있습니다.

 

본 논문의 TAS은 아래의 알고리즘 테이블로 요약될 수 있습니다.


서술한 내용 외에 본 논문에 대한 궁금한 점은 댓글로 남겨주세요.

 

감사합니다.

Mincheol Park

댓글을 달아 주세요

  1. xeskinn 2020.01.30 01:08 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 포스팅 감사합니다.