이번 글에서는 CVPR 2021에 accept된 Pruning 논문 중 하나인 Manifold Regularized Dynamic Network Pruning 을 리뷰하도록 하겠습니다. 

 

먼저 Dynamic pruning에 대해 알아보겠습니다. 기존의 channel pruning 방식들은 channel을 static하게 제거하기 때문에 모든 sample에 같은 구조의 network를 사용합니다. 하지만 실제로는 filter/channel의 중요도는 input에 따라 매우 다릅니다. 아래 그림은 Dynamic pruning을 처음 제안한 Dynamic channel pruning: Feature boosting and suppression 에서 가져왔습니다.

Pretrained ResNet-18로 imagenet sample을 추론해 보면, 특정 채널(114, 181)의 아웃풋은 이미지에 따라 많은 차이를 보입니다. 또한 (c)에서 볼 수 있듯이 20개 channel의 maximum activation의 분포를 그려보면, 채널 간에 큰 편차가 있는 것을 알 수 있습니다. 

 

기존 Dynamic pruning 방법들은 개별 instance마다 channel을 독립적으로 pruning 했기 때문에 instance간의 관계를 고려하지 않고, 또한 instance의 복잡도(complexity)에 상관없이 모두 같은 sparsity constraint를 사용한다는 단점이 있습니다. 저자들은 이러한 문제점을 극복하기 위해 임의의 instance에 상응하는 network redundancy를 극대화할 수 있는 dynamic pruning 방법론인 ManiDP를 제안합니다. 

 

이 논문의 핵심 아이디어는 각 input image의 manifold 정보를 학습 과정에서 활용하여 image간의 관계가 각각에 대응하는 sub-network 간에도 유지되도록 하는 것입니다. 학습 과정에서 두 가지 관점, complexity와 similarity 측면에서 manifold 정보를 활용합니다.

 

Manifold Regularized Dynamic Pruning

Preliminaries

논문의 수식을 이해하기 위해 먼저 기존 channel pruning과 dynamic pruning의 formulation을 소개하겠습니다. 기존 channel pruning의 optimization objective는 다음과 같습니다.

첫 번째 term은 각 sample의 cross entropy loss이고 두 번째 term은 convolution filter간의 channel-sparsity를 만들기 위한 식입니다. $\lambda$값을 증가시킬수록 더 sparse한 network가 생성됩니다.

 

Dynamic pruning에서는 output channel의 중요도가 어떤 input이 들어오는지에 따라 달라지게 됩니다. 따라서 개별 input(sample/instance)마다 다른 sub-network를 가집니다. input $x_i$에 대해 $l$번째 layer의 상황을 가정하겠습니다. input feature를 $F^{l-1}(x_i)$라 하고 channel saliency를 control하기 위한 모듈은 $G^l$라고 notation합니다. 그러면 channel saliency $\pi(x_i, w)\in \mathbb{R}^{c^l}$을 $G^l(F^{l-1}(x_i))$라고 할 수 있습니다. 

따라서 dynamic channel pruning의 optimization objective는 다음과 같습니다.

Complexity

직관적으로 생각해보면 간단한 sample을 분류하기 위해서는 작은 network로 충분할 것이고, 복잡한 sample을 분류하기 위해서는 더욱 복잡한 network가 필요할 것입니다. 따라서 이 논문에서는 instance와 sub-network의 complexity를 각각 측정하고 이를 정렬하기 위한 adaptive objective function을 제안했습니다.

 

Instance의 complexity를 측정하기 위해서는 Task-specific (i.e., Cross entropy) loss를 사용합니다. CE loss가 클수록 그 instance를 잘 학습하지 못했다는 뜻이고, 따라서 복잡한 instance로 볼 수 있습니다.  Sub-network의 sparsity를 측정하기 위해서는 channel saliencies($\pi$)의 sparsity를 사용합니다. 즉 network의 channel 중요도를 나타내는 벡터가 sparse할수록 적은 channel이 존재하므로 간단한 network라고 볼 수 있습니다.

 

앞에서 설명했다시피 기존 연구들에서는 모든 instance에 대해 같은 weight coefficient, 즉 $\lambda$가 사용되었습니다. 하지만 여기서는 CE loss가 높으면 더 낮은 $\lambda$값을 사용하고, CE loss가 낮으면 더 높은 $\lambda$값을 사용함으로써 각 instance마다 adaptive하게 sparsity penalty를 적용합니다. 또한 $\beta = \{\beta\}_{i=1}^{n} \in \{0,1\}^N$이라는 binary learnable parameter를 사용하는데 이는 $i$번째 instance에 대응하는 sub-network가 pruning 되어야 하는지 여부를 의미합니다. 최종적으로 optimization objective는 다음과 같이 정의됩니다. $C$는 instance complexity threshold로서 사전에 정의됩니다. 실험적으로 이전 epoch에서 구한 전체 dataset에 대한 cross entropy 평균을 사용한다고 합니다.

따라서 sparsity loss의 coefficient $\lambda(x_i)$는 다음과 같이 정의됩니다.

$\lambda(x_i)$의 값은 항상 $[0,\lambda']$의 범위 안에 있고, 값이 커질수록 $x_i$가 간단한 instance라는 것을 의미합니다.

 

Similarity

ManiDP의 두번째 목표는 instance간의 similarity를 sub-network간에도 잘 유지하는 것입니다. 즉 두 instance가 비슷하면 상응하는 sub-network도 비슷해야 합니다. 이를 반영하는 loss term을 만들기 위해 먼저 instance간, sub-network간의 similarity를 측정합니다.

 

Instance similarity는 intermediate features $F^l(x_i)$간의 similarity로 정의됩니다. intermediate features가 input sample $x_i$의 특징을 잘 대표한다고 할 수 있기 때문입니다. $F^l(x_i)$를 average pooling으로 flatten한다음 cosine similarity를 측정하여 similarity matrix $R^l$을 만듭니다. 이 matrix는 $N \times N$의 shape을 가집니다.

한편 Sub-network similarity는 어떻게 측정할 수 있을까요? $\pi(x_i)$는 특정 sub-network의 channel saliency, 즉 sub-network의 architecture를 표현합니다. 따라서 $\pi(x_i)$간의 cosine similarity를 sub-network similarity로 사용합니다. 이 matrix는 instance similarity와 마찬가지로 $N \times N$의 shape을 가지고 식은 다음과 같습니다. 

최종적으로 추가되는 loss term은 instance similarity $R^l[i,j]$와 sub-network similarity$T^l[i,j]$간의 Frobenius norm으로 정의됩니다.

Final Objective

최종 학습 objective는 다음과 같습니다. 2번째는 instance와 sub-network간의 complexity를 정렬하기 위한 term이고 위에서 소개한 $\lambda(x_i)$에 의해 통제됩니다. 세번째는 similarity를 유지하기 위한 term이고 hyperparameter $\gamma$에 의해 통제됩니다. 

추론 시에는 $\pi^{l}(x_i)$의 각 element값이 threshold보다 큰 경우에만 channel을 남깁니다. 각 instance마다 다른 $\pi^{l}(x_i)$ 값을 학습하기 때문에 모두 다른 sub-network를 갖게 됩니다. 

 

Experiments

ImageNet으로 학습했을 때 ResNet과 MobileNet 모델 성능

ManiDP-A와 ManiDP-B는 각각 다른 pruning rates를 가지는 모델입니다. ManiDP는 다른 방법론들과 비슷한 수준으로 FLOPs를 줄이면서도 가장 좋은 성능을 보입니다. 

 

CIFAR-10으로 학습했을 때 ResNet 모델 성능

 

Effectiveness of Manifold Information

또한 complexity와 similarity를 고려하는 것이 얼마나 효과적인지를 알아보기 위해 ablation study를 수행했습니다. 두 경우에서 complexity와 similarity를 모두 고려하는 것이 가장 좋은 성능을 보였습니다.

 

Visualization

이 논문에서 의도한 대로 간단한 instance에 가벼운 sub-network가 대응되는지를 확인하기 위해 visualization을 수행했습니다. 

FLOPs가 적은 sub-network일수록 그에 대응되는 이미지가 간단한 것을 볼 수 있습니다. FLOPs가 높아질수록 object가 명확하지 않고 어려운 이미지를 판별하게 됩니다.

 

이상으로 Manifold Regularized Dynamic Network Pruning 논문 리뷰를 마치겠습니다. 궁금한 점은 댓글로 달아주세요. 감사합니다.

 

Woojeong Kim 

이번 글에서는 CVPR 2021에 oral로 선정된 Representative Batch Normalization with Feature Calibration”이란 논문을 소개합니다. 본 논문은 기존의 Batch normalization의 문제를 분석하고 이를 보완하는 Representative Batch normalization을 제안합니다. 

 

Introduction

Batch Normalization의 효과를 감소시키는 요인

 Batch Normalization(BN)은 convolution 연산의 결과로 나온 feature들을 mini-batch의 통계 정보를 사용하여 normalize 된 분포로 제한하는 과정을 수행합니다. 이 과정은 학습의 어려움을 낮춰 CNN 모델의 성능을 가져왔습니다. 하지만, BN이 가정하는 "서로 다른 인스턴스 feature의 채널별 분포가 모두 같다"는 2가지 문제점이 존재합니다.

  1. Training 단계에서의 mini-batch statistics와 testing시 사용하는 running statistics 사이의 불일치.
    • training 단계에서 mini-batch 단위로 누적 계산되는 statistic은 추론 시에 사용할 running statistics에 완벽하게 적합하지 않습니다.
  2. testing dataset의 인스턴스가 항상 훈련 세트의 분포에 속하지는 않을 수 있음.

이러한 두 가지 불일치 문제는 BN의 효과를 감소하게 합니다.

 

기존의 연구들

몇몇 연구들에서는 이를 해결하기 위해 normalize 단계에서 mini-batch 단위의 statistic 정보 대신 instance 단위의 statistic 정보를 활용하였습니다. 하지만 이는 batch 정보의 부족으로 학습의 불안정을 발생시켜 많은 경우에서 기존의 BN보다 안 좋은 성능을 보였습니다. 또 다른 연구에서는 여러 개의 normalize 기법을 조합하거나 attention 메커니즘의 도입으로 해결하였으나 많은 overhead를 도입하여 실용성을 떨어트리게 됩니다. 따라서 본 논문은 적은 비용으로 feature의 normalize 과정에서 mini-batch 이점과 instance 별 representation을 향상시키는 방법을 제안합니다.

 

Statistic의 불일치로 인한 문제 

Batch Normalization(BN)은 feature standardization과 affine transformation 동작으로 이루어져 있습니다. 본 논문은 centering과 scaling 동작으로 이루어진 standardization에 집중하였으며, centering과 scaling 과정은 각각 mini-batch의 statistics(mean, variance)를 기반으로 feature들이 zero-mean property(평균 값이 0)와 unit-variance(분산 값이 1)를 가지도록 합니다. 이때 testing instance와 training 시에 계산된 running mean, variance의 불일치는 몇 가지 문제를 발생시킵니다.

  1. running mean의 불일치
    • running mean > instance mean: 유익한 representation의 손실.
    • running mean < instance mean: feature에 noise의 증가.
  2. running variance의 불일치
    • 특정 채널의 값의 scale을 너무 크게 혹은 작게 만들어 feature의 분포를 불안정하게 만듦.
    • (예를 들어, 특정 channel에서의 running variance의 불일치는 해당 채널의 scale을 다른 channel에 비해 크게 만들어 다음 convolution에서 연산 결과가 그 채널에 지배적(dominant)이게 만듭니다.)

제안하는 Representative Batch Normalization은 feature의 채널별로 3개의 weight를 추가하여 centering, scaling calibration 과정을 수행합니다. 이는 기존의 BN 보다 training loss와 test accuracy를 작게 만들며 기존 BN을 손쉽게 대체 할 수 있습니다.

BN과 RBN의 training loss/test error 그래프

Proposed Method

Revisiting Batch Normalization

제안하는 Representative Batch Normalization(RBN)에 앞서 기존의 Batch Normalization(BN)의 standardization, affine transformation 과정을 수식화하면 아래와 같습니다.

Centering : $ X_m =X-E(X) $

Scaling : $ X_s= \frac{X_m}{\sqrt{Var(X)+\epsilon}} $

Affine : $ Y = X_s\gamma + \beta $

 

$X\in \mathbb{R^{N\times C\times H\times W}}$는 input feature이며 $E(X), Var(X)$는 각각 running mean과 variance를 의미합니다. training 과정에서 running mean과 variance는 dataset으로 부터 mean과 variance를 누적하여 계산됩니다. 이 과정은 아래와 같습니다.

 

$\mu _B=\frac{1}{NHW}\sum_{n=1}^{N}\sum_{h=1}^{H}\sum_{w=1}^{W}X_{(n,c,h,w)}$

$\sigma^{2}_B=\frac{1}{NHW}\sum_{n=1}^{N}\sum_{h=1}^{H}\sum_{w=1}^{W}(X_{(n,c,h,w)}-\mu_B)^2$

 

$E(X)\Leftarrow mE(X)+(1-m)\mu_B$

$Var(X)\Leftarrow mVar(X)+(1-m)\sigma^2_B$

 

Representative Batch Normalization

  • Statistics for Calibration

제안하는 RBN에서 Batch Normalization(BN)의 running statistic을 보정하기 위해 사용한 instance-specific feature의 statistic은 channel 별 정보를 사용하였으며 이는 다음과 같습니다.

$\mu_c = \frac{1}{HW}\sum_{h=1}^{H} \sum_{w=1}^{W} X_{(n,c,h,w)}$

$\sigma ^2 _c = \frac{1}{HW} \sum_{h=1}^{H} \sum_{w=1}^{W}(X_{(n,c,h,w)}-\mu _c)^2$

  • Centering Calibration

BN의 Centering 과정에서  feature 값 중 running mean보다 큰 부분은 유지되어 다음 레이어로 넘어가게 됩니다. 이때 잘못된 running mean은 feature의 유용한 정보를 지우거나 추가적인 noise를 추가하게 됩니다. 이를 해결하기 위해 centering calibration은 BN의 centering 과정 전에 feature의 추가적인 statistic($K_m$)을 채널 별 learnable weight($w_m$)을 통해 feature를 calibration 합니다. 수식으로 표현하면 다음과 같습니다. (논문의 실험에서 $K_m$은 $\mu_c$를 기본값으로 사용하였습니다.)

$X_{cm(n,c,h,w)}=X_{(n,c,h,w)} + w_m\odot K_m$ 

$\odot$: $w_m$과 $K_m$을 같은 shape로 만들고 dot product 수행.

 

Centering calibration이 적용된 X와 적용되지 않은 X의 centering operation 결과 차이를 수식화하면 아래와 같습니다. $w_m$ > 0 그리고 $K_m > E(X)$와 같은 조건에서 centering calibration은 feature의 유용한 정보를 살려주며 $w_m$ < 0 그리고 $K_m > E(X)$와 같은 조건에서는 feauture의 noise를 줄여주는 방식으로 동작하게 됩니다.

$X_{cal}-X_{no} = w_m\cdot (K_m-E(X))$

  • Scaling Calibration

유지할 특징을 조절하는 centering과 다르게 scaling 과정에서는 feature의 명암을 조절합니다. 이때 부정확한 running variance는 특정 channel의 강도를 크게 만들게 됩니다. 이를 해결하기 위해 scaling calibration은 scaling operation 과정 후에 instance statistic($K_s$)을 채널별 learnable weight($w_v,w_b$)를 사용하여 feature를 calibration합니다. 

$X_{cs(n,c,h,w)}=X_{s(n,c,h,w)}\cdot R(w_v\odot K_s+w_b)$

$R()$: out-of-distribution feature 억제용 restricted function($0<R()<1$)

 

Scaling calibration 후 feature의 variance는 아래와 같이 표현됩니다.

$Var(X_{cs})=Var(X\cdot R(w_v\cdot K_s+w_b))$

 

Scaling calibration은 feature의 variance를 작게 만들고 이를 통해 채널 간의 안정적인 distribution을 유지하게 합니다. $w_v$가 작을수록 $Var(X_{cs})$는 작아지며 $w_b$를 통해 restricted function의 제한 위치를 조정하게 됩니다.

 

Centering/Scaling Calibration을 통한 Feature 변화

Experiments

다른 방법들과의 비교 / scaling calibration 전후의 채널별 표준편차

제안하는 RBN은 분류에서의 다른 방식들에 비해 더 나은 성능을 보였으며 scalling calibration이 적용되었을 때 채널간의 분포를 보다 안정적이게 만들어주는 것을 확인 할수 있습니다.

Centering/Scaling Calibration 효과 시각화

Conclusion

Representation Batch Normalization(RBN)은 기존 BN의 장점인 Batch statistic 정보를 유지하며 적은 추가적인 파라미터를 통해 효과적으로 instance의 statistic을 적용합니다. centering calibration은 feature의 유용한 representation을 강화하고 noise를 감소시킵니다. Scaling calibration은 feature의 강도를 제한함으로써 채널간의 안정적인 feature 분포를 형성하게 합니다. RBN은 BN의 centering/scaling operation을 사용하는 기존의 방식들에도 쉽게 적용 가능하다는 장점 또한 가집니다.

 

이상으로 논문 리뷰를 마칩니다.

자세한 내용이나 궁금하신점은 full paper를 참고하시고나 댓글로 남겨주세요.

 

감사합니다.

Dongjin Kim

 

 

이번에는 CVPR 2020에 Oral session에 발표된 논문인 Revisiting Knowledge Distillation via Label Smoothing Regularization을 리뷰하려고 합니다. 논문은 링크를 참조해주세요

Background

 

Geoffrey Hinton 이 2014년 NeurIPS에 발표한 Distilling the Knowledge in a Neural Network 이후로 분야가 개척되어왔습니다.

Knowledge Distillation에서 Hinton이 발표한 방식은 pretrained teacher model의 logits과 student모델의 logits의 soft-target을 구해서 KL Divergence를 취해서 서로 분포간의 거리를 좁히는 방식으로 학습이 진행되어 왔습니다.

$$ L=L_{CE}(y|x;\theta)+L_{KD}(y,y'|x;\theta_{stu},\theta_{teacher})$$

 

그 이후 많은 Knowledge Distillation Method(이하 KD)들이 발표되고 있으며, 기존의 logits(neural network output)들을 가지고 KD를 어떻게, 무엇을 하는 지에 대해서 연구가 진행되고 있습니다.

 

Knowledge Distillation에는 구성요소가 여러가지가 있는데, Knowledge 종류, learning scheme, architecture 등등이 있습니다. 간단히만 설명하자면, Knowledge 종류에는 logits을 활용한 response-based knowledge, intermediate layer output을 활용하는 feature-based knowledge, 그리고 instance를 활용한 relation-based knowledge가 존재합니다.

[1] Knowledge Distillation: A Survey, Gou et al., International Journal of Computer Vision(2021)

또한, learning scheme은 Distillation을 누구와 언제 하는지에 관한 것인데, pretrained model을 갖는 것은 offline KD, teacher와 student가 동시에 학습하는 것은 online KD, teacher와 student가 같은 것이 self KD라고 할 수 있습니다.

[2] Knowledge Distillation: A Survey, Gou et al., International Journal of Computer Vision(2021)

이중에서 논문은 response-based knowledge, 즉 logits을 활용하여 teacher와 student가 같은 self knowledge distillation에 대해서 집중적으로 다룰 예정입니다.

 

- Response based Knowledge Distillation

logits $z$ vector를 활용하여 $p(z_i,T)=exp(z_i/T)/{\sum_{j}exp(z_j/T)}$인 soft-target은 teacher로 부터 student에게 informative dark knowledge를 전달한다는 것이 일반적인 통념이었습니다.

 

하지만, 저자는 이러한 common belief에 대해서 혹시 regularization method중 하나인 label smoothing regularization과 유사하게 생겼다는 의문을 품고 2가지 실험을 구성하여 이를 검증해보려고 합니다. 만약 두 실험이 성립하는 경우, dark knowledge가 정보를 전달하기 보다는 그냥 label들을 정규화(regularize)하는 method중에 하나임을 실험적으로 증명할 수 있기 때문입니다.

1번째 실험은 student model로 사용되는 light model과 teacher model로 사용되는 deep model의 역할을 바꾸어 학습을 시켜보는 것입니다. (Reversed KD, Re-KD)

2번째 실험은 teacher model을 덜 학습시킨다음(low accuracy) student에게 knowledge transfer를 진행하는 것입니다. (Defective KD, De-KD)

 

Cifar100 data를 활용한 해당 Exploratory Experiment의 결과는 다음과 같습니다.

1번째 실험은 Re-KD와 일반적인 Normal KD의 결과 비교 입니다.

표를 보면 T->S 에서 Student의 성능향상이 뚜렷하게 높긴하지만, Re-KD에서 S->T에서의 학습 향상을 볼 수 있습니다.

 

2번째 실험은 De-KD의 결과입니다.

개인적으로는 이 실험결과가 엄청 놀라웠는데요. Teacher를 poorly-trained model로 구성하여 student를 학습시킨 결과 student가 눈에 띄게 증가하는 것을 확인할 수 있었기 때문입니다. 이를 통해서 

실험 1의 Normal KD와 실험2의 De-KD를 비교해보면 대체로 NormalKD만큼은 아니지만 De-KD에서도 성능향상이 이루어진다는 사실을 확인할 수 있었고, 심지어는 ResNet50을 teacher로 활용하는 MobileNetV2를 학습시키는 경우, normal KD보다 높은 성능을 보이기도 하는 등, 실제로 dark knowledge가 아니라 regularizer의 역할을 할 수도 있을 것 같다 라는 생각이 드는 실험이었습니다. 2번째 실험과 1번째 실험의 normal KD를 같이 비교하지 않은점은 좀 아쉬웠습니다.

 

Motivation

 

이러한 실험적 확인 이후, 본 논문에서는 KD를 regularization method중에 하나인 Label Smoothing Regularization(LSR)과 유사하기 때문에 이를 수학적으로 유사함을 증명하려고하였습니다. Normal Classification에서 output distribution은 $p(k|x)=p(k)=softmax(z_k)=exp(z_k)/{\sum_{i=1}^{k}exp(z_i)}$ 를 사용하여 ground truth에 대해서 cross-entropy loss를 활용합니다.

$$H(q,p)=-\sum^{K}_{k=1}{q(k|x)log(p(k|x))}$$

 

Label Smoothing Regularization (LSR)에서는 cross-entropy loss에서 사용되는 ground truth q(k|x)를 바꾸어 q'(k|x)를 사용합니다. 정답 label을 확률 1로 보는 것보다 낮은 값을 선택한 후 남은 값을 다른 label에 분배하는 것입니다.u(k)=1/K로 uniform distribution입니다.

$$q'(k|x)=(1-a)q(k|x)+au(k)$$

 

Knowledge distillation에서의 loss function은 다음과 같습니다.($\tau$는 temperature)

$$L_{KD}=(1-a)H(q,p)+aD_{KL}(p^t_{\tau},p_{\tau}) $$

LSR에서의 loss function은 다음과 같습니다.

$$H(q,p)=-\sum^{K}_{k=1}{q'(k)log(p(k))}$$

$$L_{LS}=(1-a)H(q,p)+aD_{KL}(u,p)$$

이 두식을 정리해서 풀면 다음과 같이 굉장히 유사한 식으로 구성이 됩니다.

q'(k) in LSR: $q'(k)=(1-a)q(k|x)+au(k)$

q'(k) in KD: $q'(k)=(1-a)q(k|x)+ap^{t}_{\tau}(k) when \tau =1$

이를 통해서 $\tau$를 조정하면 $p^{t}_{\tau}(k)$가 $u(k)$와 유사하기 때문에 이를 저자는 KD가 LSR의 특별한 케이스로 보고 있습니다. 왜냐하면 temperature $\tau$가 커지면 커질 수록 유사한 값이 나오기 때문입니다.

 

이러한 사실들을 기반으로 그렇다면 KD가 regularizer의 한 종류로 볼 수 있기 때문에 이를 통해서 Teacher-free Knowledge Distillation이라는 새로운 방법론을 제시합니다.

 

Proposed Method

1) Teacher-free Knowledge Distillation (self-training)

간단한 pipeline은 student를 학습시킨 후, 그 student model을 복사하여 student model을 teacher로 사용하는 방법입니다.  아래 사진에서 teacher model로 student 자신을 사용하는 방법입니다. 나머지는 normal KD와 동일합니다. 개인적으로는 이 부분은 2015년 이후 한 번쯤은 생각해볼 방법론이라 간단하게 넘어가겠습니다.

[3]  Knowledge Distillation: A Survey, Gou et al., International Journal of Computer Vision(2021)

2) Teacher-free Knowledge Distillation (self-regularization)

개인적으로는 이 부분이 엄청 많이 추가가 된 것은 아니지만 성능 향상이 나름 인상적이었습니다. LSR의 방식을 도입한 후, 해당 label을 soft-target을 취해서 student의 logits과 KD Loss를 취하는 방식입니다. 한마디로 ground truth에 대해서 fake teacher처럼 soft를 취해서 KD를 진행한다는 것이죠. 

KD에서 사용하는 fake teacher에 대한 output distribution은 다음과 같습니다.

$$ p^{d}(k)=\begin{cases}a &if     k = c \\ {1-a}/{k-1} & if     k \neq c \end{cases} $$

LSR과 Tf-KD(reg)

Pipeline을 보기 쉽게 설명하면 다음과 같습니다.

[4] Knowledge Distillation: A Survey, Gou et al., International Journal of Computer Vision(2021)

Teacher를 쓰는 것이 아니라 가상으로 두고 target값을 label smoothing(by softmax with temperature)하여 KD Loss를 취할 수 있게 하는 것이 이 논문의 핵심 방법론이라고 볼 수 있습니다. 

 

Experiment

 

cifar100에 대한 self-training Tf-KD의 결과는 다음과 같습니다.

사실 이 부분은 더 큰 모델을 사용할 필요 없이 Tf-KD_self가 유사하거나 높은 성능을 냄을 확인함으로서 더이상 big teacher가 필요 없다는 데 의의가 있는 실험결과입니다. 통념적으로 믿어온 잘 가르치는 선생님은 친구이기도 하다는 것과 같습니다.

 

두번째 Tf-KD_reg 방법에 대한 실험 결과는 다음과 같습니다.

Normal KD에 대해서 유사한 성능을 보여주고 있고, LSR에 대해서는 더 좋은 성능을 통해 Soft-target을 취했을 때 성능 향상에 도움이 됨을 확인할 수 있습니다. 이 방법의 의의는 선생님 조차도 없이 스스로 distillation을 통해 성능 향상을 꾀할 수 있다는 것을 확인하였고, 엄청 큰 모델을 스스로 학습시킬 때에도 자유롭게 사용가능하다는 점을 생각해보면 의미있는 실험결과임을 알 수 있습니다.

 

Conclusion

 

결론은 Dark Knowledge라고 부르는 부분은 사실 Regularization Term으로 볼 수 있다 라고 말하고 있습니다. 이를 통해서 스스로 distillation 하는 self-distillation이 teacher-student관계가 존재하는 learning scheme만큼의 성능을 보여줄 수 있다는 것을 실험, 수식으로 설명한 강력한 논문이라고 생각합니다. 하지만, De-KD에서 15%의 accuracy를 갖는 ResNet을 teacher로 하는 결과와 normal KD와 비교해볼 때, 눈에 띄게 성능저하가 존재하는 경우가 있다는 점을 고려해보면 Dark Knowledge가 존재할 수 있지 않을까? 라는 생각이 들었습니다. 

 

자세한 내용은 논문(full paper)을 참조하거나 댓글로 남겨주시기 바랍니다

 

Minsoo Kang

이번에는 NIPS 2020 Poster session에 발표된 논문인 AdaShare: Learning What To Share For Efficient Deep Multi-Task Learning 을 리뷰하려고 합니다. 논문은 링크를 참조해주세요

Background and Introduction

우선 Mutli-task learning이라는 게 어떤 것일까요?
Multi-task learning
 task가 여러 개라는 것인데 큰 dataset $D$ 아래에 다른 dataset $D_{i}$로 구분된 $D=\{D_1, ... , D_i \}$ 를 사용하는 learning method를 말합니다.

 

Multi-task learning의 종류에는 크게 두 가지 기준인 feature method으로 분류합니다.
feature
로 구분하는 경우
- Homogeneous-feature MTL: 
다른 dataset에서 동일 feature space를 갖는 것(동물만 분류)
- Heterogeneous-feature MTL: 
다른 dataset에서 다른 feature space를 갖는 것(동물, 기계 분류)

Method로 구분하는 경우
- Homogeneous MTL: 
다른 dataset이지만 동일 method를 다루는 경우(only classification, only regression)
- Heterogeneous MTL: 
다른 dataset에서 다른 method를 다루는 경우(Depth Prediction Semantic Segmentation을 다루는 경우)

 

보통의 Multi-task learning(MTL)에서는 Homogeneous MTL MTL이라고 부르지만, 이 논문에서는 Heterogeneous MTL을 다루고 있습니다.

 

다른 Learning Method와 비교할 때 MTL과 다른 점은 다음과 같습니다.

[1] A survery on Multi-task learning(IEEE Transaction KDE,2021)

 

Transfer Learning source task를 통해 학습한 후, Knowledge transfer를 통해 target task를 학습시키지만, MTL source task target task가 동일하게 knowledge를 공유하여 성능을 높이는데 그 목적이 있습니다.

Multi-label learning과 같은 경우, 노트북을 관찰할 때, 키보드와 화면이라는 label을 동시에 분류해내는 것을 의미하지만 MTL task에 맞게 노트북만을 혹은 키보드만을 분류해냅니다.

Multi-view learning과 같은 경우는 각각의 특징 앞서 말한 키보드와 화면이라는 관점을 가지고 이를 조합하여 data로 인지하여 노트북으로 분류해내는 것을 말하지만, MTL은 노트북을 보면 각각의 관점을 조합하는 것이 아니라 그냥 단순히 노트북 하나만을 분류해내는 것을 말합니다.

 

Single-task learning과 비교할 때, 장점은 dataset이 늘고 related data를 사용하는 경우, feature extraction이 잘되기 때문에 training time을 줄일 수도 있고, overfitting을 피하기 용이하여 일반화 성능이 높게 나타납니다.

 

하지만, Multi-task learning에서도 아직 해결해야하는 난제가 있는데요. 바로 Negative Transfer 현상입니다. 사람이 보기에는 related data일지라도 neural network입장에서는 아닌 것입니다. 그래서 각 task가 서로의 성능향상에 악영향을 끼치는 경우도 상당수 존재합니다. 이러한 점들을 해결하기 위해서 knowledge sharing을 적재적소에 하는 것이 중요한데, 대부분의 논문들은 다음의 3가지 관점에서 이를 관찰합니다.

-When: 학습 이전,  iteration,  epoch부터 sharing할지
-What: parameter(weight, bias), feature, and instance
-How: 
어떻게 (selection of what to share, related feature analysis)

이 논문에서는 어떤 parameter를 어디서 share할지에 관한 논문입니다.

 

Parameter Sharing Method
 Sharing Method
는 크게 weight를 모두 공유하는 hard-parameter sharing feature weight의 정보를 공유(그대로 복사x)하는 soft-parameter sharing이 존재합니다.
- Hard-parameter sharing: Shared feature network + task-specific network
로 구성이 되며, task가 서로 많이 다를 경우, shared feature network의 깊이가 얕아져서 다른 task-specific하게 동작하게 합니다. Negative Transfer 현상이 빈번히 발생하며, 해당 network는 그 task끼리의 조합에만 유효한 경우가 대부분입니다. (Adhoc network)

[2] An Overview of Multi-Task Learning in Deep Neural Networks(arXiv,2017)


- Soft-parameter sharing: 
주로 feature sharing을 하며, task 별로 network를 각각 가지기 때문에 메모리를 많이 먹고, 적절한 network를 구성하였을 때, task별로 capacity가 달라 overfitting이 특정 task에만 일어나는 단점이 존재하기도 한다. 다음 사진은 CVPR 2016년에 게재된 Cross Stitch Network activation map task-specific network에서 공유하여 학습을 진행하는 방식이다.

[3] Cross-stitch Networks for Multi-task Learning(CVPR 2016)

 

이를 넘어서 parameter sharing하는 node를 선택하여 학습을 진행하는 논문이 2019 ICCV에 게재된 Deep Elastic Network입니다. Deep Elastic Network에서는 별도의 task-specific한 노드를 고르는 selector network RL로서 가장 좋은 성능을 내는 node를 골라 동작할 수 있도록 하였습니다. Model distribution에서 network를 골라 행동하게 하는 것을 의미합니다. Pipeline은 다음 사진과 같습니다.

[4] Deep Elastic Network with Model Selection for Multi-task Learning (ICCV 2019)

 

, 이런 Network search하는 과정을 Neural Architecture Search(NAS)라고 부릅니다. 이는 AutoML 즉 자동으로 적합하게 학습하는 방법론중의 하나입니다. NAS를 하는 방법에는 두 가지가 존재하는데 첫번째는 Reinforcement Learning을 통해서 구조를 search하는 방식입니다. Action으로 적합한 architecture를 생성하고, network performance reward로 부여하여 finetuning을 진행합니다. 두번째로는 Evolutionary Computation을 활용합니다. Genetic Algorithm을 통해서 network들의 집합을 골라 거기서 진화하는 방식(layer생성이나 hyperparameter tuning)을 택하고, skip connection등을 생성하는 것이 있습니다. 이 논문에서는 Gradient-based optimization을 통해 최적의 architecture를 찾을 수 있다고 말을 하고 있습니다. (Genetic Algorithm에서도 optimization을 사용하지만, 이 논문에서는 해당 사항에 대해 언급하고 있지는 않습니다)

 

기존까지는 Task-specific Knowledge sharing하는 part manually하게 구성해야 했고, 그랬기에 항상 task 종류에 맞는 network를 주로 제작하여 다른 task 조합에서는 해당 network가 제대로 동작하지 못하는 현상이 있었습니다. 그래서 이 논문에서는 다음과 같이 말하고 있습니다.

Multi-task learning을 위해서 task share할지 task-specific layer를 결정할지 자동으로 선택하고 싶고, 이를 통해서 Negative Transfer할 때는 해당 layer skip하고, Positive Transfer일 때는 layer share하여 성능을 높일 수 있지 않을까라고 제시하고 있습니다.

[5] AdaShare Method

 

Proposed Method

논문에서는 Residual Network(ResNet, ResNeXt, DenseNet)등의 shortcut connection의 성공에 주목하여, feature extraction할 때, 특정 task skip하여 negative transfer를 막을 수 있지않을까 라는 idea를 주목하였습니다. Shortcut connection여부를 residual block마다 결정하면 task-specific block knowledge share block을 나눌 수 있다고 생각하였습니다.

해당 block $l$ task $k$에서 select-or-skip random variable  $u_{l,k}=[0,1]$라고 하고, policy를 ${U}$라고 할 때, ${n(U)}$가 $2^{N\times K}$로 기하급수적으로 늘어납니다. 그렇기 때문에 Reinforcement Learning으로는 해결하기 어려울 것이라 여겨졌고, 또한 discrete하기에 non-differentiable하여 gradient-based optimization하기 어렵다고 여겨졌습니다. 하지만 binary r.v.$u_{l,k}$ distribution vector $\pi_{l,k}$ Gumbel Softmax Sampling을 통해서 differentiable하게 만들었습니다.

 

Gumbel Softmax Sampling VAE(Variational AutoEncoder)에서 generative model output $x$를 생성할 때의 sampling 또한 미분이 불가능하여 sampling대신에 sampling function을 구현하여 back propagation을 하게한 Reparameterization Trick중 한 방법입니다.
Reparameterization Trick
 Stochastic  Node Stochastic input Deterministic input으로 구별하여 이 조합을 function화 하여 deterministic node로 흐르게 하여 back propagation을 가능하게 하는 것을 말합니다.

 

Gumbel-Softmax Sampling Gumbel-Max Sampling에서 argmax를 통해 sampling하는 것을 softmax로 바꾸어 differentiable하게 만든 것을 의미하며, Gumbel-Max Sampling에서 Gumbel distribution$\pi_{l,k}$ term에 더해서 Sampling하게되면 gradient가 흐를 수 있게됩니다. 이를 통해서 를 결정하는 logit $a_{l,k}$ update할 수 있게되는 것입니다.

 

이러한 update를 위해 사용하는 Loss term은 다음과 같습니다.

$l_k$는 각 task가 갖는 고유의 loss term입니다. (classification의 경우, cross entropy)

Sparsity Regularization term$L_{sparsity}$ logit $a_{l,k}$ minimize하여 model compact하게 해주는 효과를 일으킵니다.

Sharing loss term$a_{l,k}$에서 같은 $l$간의 격차를 줄여 모두 task-specific block만 남지 않게함이고, 맨 뒤 block부터 가중치를 낮게 부여하여 앞으로 갈수록 높게 부여하는 형식으로 앞 block은 최대한 sharing을 하고,  block에서 task-specific하게 구성되도록 하였습니다.

 

이러한 Model의 전체적인 pipeline은 다음과 같습니다.

 

1.     맨처음부터 distribution parameter($\pi_{l,k}$)를 학습시키면 학습이 잘 되지 않으므로 curriculum learning을 도입하여 hard-parameter sharing을 통해서 network를 먼저 학습 시킵니다.

2.     이후 매 $l$ epoch에서 끝에서부터 $l$ block까지의 distribution parameter를 학습시킵니다. (Curriculum Learning)

3.     모든 policy distribution parameter train되면, select-or-skip decision을 하여 finetuning합니다.

Experiments

기존까지의 state-of-art method basline과 비교한 실험입니다. Single-task는 동일 network에 한개의 task learning을 각각 진행하여 표에 기재하였고, multi-task의 경우 마지막 fully-connected layer만 분리시켜서 사용하였습니다. ResNet18을 사용하여 NYU를 학습한 결과이며, Segmentation Surface Normal Prediction의 두 가지 task에서 사용한 결과입니다.

현재 sota MTAN method와 비교할 때 엎치락 뒤치락하는 성능을 보여줍니다.

ResNet18 Policy Visualization

위 사진은 Task logit $a_{l,k}$ graph를 통해서 sampling하였을 때 실제 select-of-skip connection들입니다. 대체로 logit이 동일 image를 사용하기에 낮지는 않지만, surface normal prediction segmentation은 물체 구분과 표면각을 구분하는 다른 task여서 비교적 낮게 나오는 것을 뒤에 나올 실험을 통해 확인할 수 있습니다.

다른 dataset Tiny-Taskomony에서 ResNet34를 사용하여 실험한 내용입니다. 다음은 dataset ground truth의 예시입니다.  task의 서로 다른 feature 추출을 통해서 대략적인 task related가 되어있는지 여부를 추측해볼 수 있습니다.

Tiny-Taskomony Dataset tasks

5가지 task Segmentation, Surface Normal Prediction, Depth Prediction, Key-point Detection, Edge Detection에 대해서 비교 실험을 하였고 결과는 다음과 같습니다.

아래의 policy visualization을 통해서 depth prediction이 다른 task와 달리 상대적으로 unrelated되어있음을 추측해볼 수 있고, 위의 사진결과를 봐도 depth prediction 성능이 다른 task와 비교할 때, 상대적으로 낮게 나오는 것을 확인할 수 있습니다.

ResNet34 Policy Visualization

 

다른 실험은 논문에서 제시한 policy strategy가 있을 때와 없을 때 사이의 성능 차를 비교한 실험입니다.
1. Stochastic Depth(ECCV,2016) 
방식과의 비교 (선택적 layer drop방식이므로 이와 비교)
2. Random Policy (AdaShare
논문에서 제시한 Sampling이 합리적인지 비교)
3. 
각각의 sparsity sharing loss term의 중요성 검증 실험
4. NAS
기반 MTL sota논문인 Deep Elastic Network(ICCV,2019)방식을 도입하여 policy를 결정하는 것과의 비교와 RL(REINFORCE algorithm)을 사용하여 search했을 때와의 비교

 

Conclusion

MTL보다는 Neural Architecture Search(NAS) 논문이지만, negative transfer 현상을 회피하고 positive transfer를 보강하여 MTL에 있어서 network parameter 수를 유지하면서 성능을 끌어올리고자 노력한 논문입니다. RL을 적용할 경우, search space가 커지는 현상을 Gumbel Softmax Sampling을 통해서 optimization problem으로 변환하였고, 이를 통해 computational resource를 절약할 수 있는 방법을 제시한 연구라고 할 수 있겠습니다.

 

자세한 내용은 full paper를 참고하거나 댓글로 남겨주세요.

감사합니다.

 

Minsoo Kang

 

이번 글에서는 CVPR 2021에 oral로 선정된 “Knowledge Evolution in Neural Networks”란 논문을 소개합니다. 본 논문은 적은 수의 데이터 셋에서 모델을 효과적으로 학습시킬 수 있는 Knowledge evolution이라는 학습 방법론을 제안합니다. 

 

History

 본 논문은 “The lottery ticket hypothesis: Finding sparse, trainable neural networks” 논문을 이론 배경으로 가집니다. The Lottery ticket hypothesis는 dense network에 적은 iteration 수에서 자신보다 높은 성능을 가지지만 파라미터 수는 더 적은 subnetwork가 존재한다 라는 것입니다. 

 

이러한 가설에 맞는 subnetwork(winning ticket)를 찾기 위해 다음과 같은 과정을 거칩니다.

  1.  Dense network를 random weight($\theta_0$)로 초기화
  2.  j iteration만큼 weight ($\theta_j$)를 학습.
  3.  $\theta_j$에 pruning을 진행하고 mask를 생성.
  4.  3에서 생성한 Mask를 사용하여 생성한 sparse network를 $\theta_0$으로 초기화하여 winning ticket 생성.

이렇게 찾은 winning ticket을 학습시켜 기존의 dense network보다 적은 iteration에서 적은 parameter 수로 높은 성능을 가진 network를 얻게 됩니다. 

 

Proposed Procedure

 

1. Knowledge Evolution Training Approach

Knowledge evolution은 다음과 같은 방식으로 진행됩니다.

 

  1.  먼저 개념적으로 deep network($N$)를 2개의 배타적인 hypothesis(sub-network): fit-hypothesis($H^\triangle$), reset-hypothesis($H^\triangledown$)로 나누는 마스크($M$)를 생성합니다. ($H^\triangle = MN$, $H^\triangledown=(1-M)N$)
  2.  $N$을 $e$ epochs 동안 학습하여 $N_1$을 생성합니다. (첫 번째 generation 과정)
  3.  다음 generation에서의 더 나은 네트워크 학습을 위해, $N$을 $H^\triangle _1$로 re-initialize 하고 $H^\triangledown$부분은 random initialize 합니다. (re-initialize 과정)
  4.  3 과정에서 reinitialize 된 $N$을 $e$ epochs동안 다시 학습하여 $N_2$를 생성합니다. (re-train 과정)
  5.  3 과정(re-initialize)과 4 과정(re-train)을 $g$ generation만큼 반복하여 $N_g$를 생성합니다.

 

2. Split-Networks

 KE에선 $N$을 $H^\triangle$와 $H^\triangledown$을 나누는 과정이 필요합니다. 이때 저자는 대부분의 네트워크에 KE를 적용할 수 있는 $weight-level$ splitting(WELS)나 CNN에 특화되어 KE를 통해 추론 비용 또한 낮출 수 있는 $kernel-local$  $convolutional-aware$ splitting(KELS)를 사용합니다.

  1.  WELS
    • 각각의 layer($l$)의 가중치($W_l$)를 주어진 split-rate($s_r$, $0 < s_r < 1$) 에 따라 마스크($M_l$)를 랜덤 하게 생성합니다.
    • $sum(M_l) = s_r × |W_l|$
  2.  KELS
    • convolution filter ($F_l$, $F_l ∈ R^{C_o×K×K×C_i}$)를 앞에서부터 $s_r$만큼 $C_o$와 $C_i$을 포함하도록 마스크를 생성합니다.
    • The first $\left \lceil s_r×C_i  \right \rceil$ kernel inside the first $\left \lceil s_r×C_o \right \rceil$ filters.

Toy residual network에서의 KELS를 통한 fit/reset-hypothesis 표현

 

 

3. Knowledge Evolution Intuitions

 KE의 이해를 위해 2가지 직관을 보여줍니다. 이때 KELS는 필수적이지 않으며 아래의 figure들에서는 시각적 표현을 위해 KELS를 사용하여 보여주었습니다.

 

3.1 Dropout Intuition

Dropout에서는 뉴런들을 랜덤 하게 껐다 키는 과정을 통해 각 뉴런들이 독립적인 representation을 생성해내게 합니다. KE는 각 generation이 시작될 때 reset-hypothesis를 랜덤 하게 initialize 하는 과정을 통하여 fit-hypothesis와 reset-hypothesis를 각각 독립적인 representation을 학습하게 합니다. 

 

3.2 Residual Network Intuition

ResNet에서는 identity shortcut과 residual subnetwork로 네트워크를 나누고 residual subnetwork의 activation을 zero-mapping시킴으로 regularization의 효과를 얻을 수 있습니다. 첫 generation 이후 수렴에 가까운 fit-hypothesis로 인해 이후의 generation이 진행될 때 reset-hypothesys 또한 zero-mapping이 됩니다.

 

 

 

 아래의 실험 결과를 보면 generation이 진행될수록 fit-hypothesis는 전체 network와 유사한 성능으로 수렴하고 reset-hypothesis는 zero-mapping이 되는 것을 확인할 수 있습니다.

 

Conclusion

 본 논문은 상대적으로 적은 데이터로 딥 뉴럴넷을 학습할 때 효과적인 방법인  knowledge evolution을 제안하였습니다. KE는 랜덤한 subnetwork(fit-hypothesis)를 선정하고 generation이 진행됨에 따라 이 부분의 knowledge를 진화시켜나갑니다. 또한 kernel-level convolution-aware splitting(KELS) 기술과 KE를 함께 적용하였을 때 추론 비용을 감소시키는 slim한 네트워크를 학습시킬 수 있고, weight-level splitting(WELS) 기술과 KE를 함께 적용한다면 다양한 네트워크 아키텍처에 적용 가능합니다. 

 

이상으로 논문 리뷰를 마치겠습니다.

자세한 내용 paper를 참고해주세요.

 

감사합니다.

Dongjin Kim