https://github.com/JiahuiYu/slimmable_networks
현재(24.10.28) Object Detection의 Neck에서 width를 줄이는 연구를 하고 있는데,
다양한 width configuration을 하나의 single network에서 조화롭게 학습시킬 수 있는 방법을 찾고 있는 중이다.
참고로, 이 논문의 이전 버전은 Slimmable Neural Networks 이다.
Slimmable Networks는 runtime width를 즉시 조절할 수 있는 neural networks family로,
predefined widths set 중에서 선택하여 runtime에 accuracy-efficiency trade-offs를 optimize하도록 조정할 수 있다.
이 연구에서는 universally slimmable networks (US-Nets)을 학습시키기 위한 체계적인 approach를 제안하며,
slimmable networks를 임의의 width에서도 실행 가능하게 확장하고,
batch normalization layer가 있는 network와 없는 network 모두에 일반화하였다.
또한, US-Nets의 training process를 개선하고 testing accuracy를 높이기 위해 sandwich rule
과 inplace distillation
이라는 두 가지 improved training techniques을 제안한다.
slimmable networks가 최근에 소개되어 runtime시 서로 다른 widths로 switch할 수 있으며,
이를 통해 instant and adaptive accuracy-efficiency trade-offs 조정이 가능하다.
width는 predefined widths set에서 선택할 수 있으며, 예를 들어 와 같이 설정할 수 있다.
여기서 는 모든 layer의 width가 전체 model의 0.25로 축소됨을 의미한다.
slimmable network를 학습시키기 위해 , 각 sub-network에 대한 bn layers를 개별화하는 switchable bn이 제안되었다.
slimmable network는 같은 width를 갖는 개별 학습된 network와 유사한 accuracy를 가짐.
slimmable network에서 동기된 또 다른 question은 "can a single neural network run at arbitrary(임의의) width?"이다.
이 질문은 feature aggregation의 basic form을 rethink하게 했다.
DNNs에서 a single output neuron은 learnable coefficients로 weighted된 모든 input neurons의 aggregation이다.
즉, 에서 는 input neuron, 는 output neuron, 는 learnable coefficient, 은 input channel 개수이다.
이 공식은 각 input channel 또는 group of channels을 output neurons에 대한 residual component로 볼 수 있다.
따라서 wider network는 slim network보다 성능이 나쁘지 않아야 한다.
(slim network의 accuracy는 new connections을 0으로 학습하여 언제든지 달성할 수 있다.)
즉, single layer를 고려할 때 full aggregation과 partial aggregation 간의 residual error는 감소되며 제한된다 :
여기서 는 처음 개의 channel을 요약한 값이며,
, , 는 constant hyper-parameter이다. (예 : )
이 제한된 inequality(부등식)은 적절하게 학습될 경우, discrete widths set에서 실행가능한 slimmable network가 그 사이의 임의의 width에서도 실행될 수 있음을 시사한다.
이는 width 증가에 따라 residual error가 감소하고 제한되기 때문이다.
또한, 이 부등식은 어떠한 BN layer를 사용하더라도 개념적으로 모든 DNN에 적용될 수 있다.
하지만 [25]에서 제안된 것처럼, BN은 training and testing 간의 inconsistency로 인해 특별한 처리가 필요하다.
이 연구에서는 wide range의 임의의 width에서 실행될 수 있는 universally slimmable networks(US-Nets)을 제안한다.
US-Nets을 training하는 데 세 가지 주요 challenges가 있다.
BN이 포함된 neural networks를 어떻게 처리할 것인가?
US-Nets을 효율적으로 학습시키려면 어떻게 해야 할까?
individual networks를 학습하는 것과 비교했을 때, US-Nets에서 전체 성능을 향상시키기 위해 무엇을 더 탐구할 수 있을까?
제안된 방법을 사용하여 universally slimmable network를 대표적인 과제와 networks(bn 포함 및 미포함, residual network 및 non-residual network 모두)에 적용해 학습했다.
그 결과, 학습된 US-Nets가 개별적으로 학습된 Model과 유사하거나 더 나은 성능을 보임을 확인했다.
sandwich rule과 inplace distillation에 대한 광범위한 ablation studies를 통해 제안된 방법의 효과를 입증했다.
우리의 contributions은 다음과 같다 :
DNNs은 각 layer가 neuron으로 구성된 layer로 이루어져 있다.
DL의 기본 요소인 neuron은 모든 input neuron의 weighted sum을 수행하여 값을 계산하고, layer를 거쳐 최종 prediction을 만든다.
예는 Figure 2.에 나와 있다.
출력 neuron 는 다음과 같이 계산된다 :
여기서 은 input neuron(또는 CNNs의 channels)의 수, 는 input neuron, 은 learnable coefficient, 는 single output neuron이다.
이 과정은 feature aggregation으로도 알려져 있다.
각 input neuron은 특정 feature를 감지하고, output neuron은 learnable transformations을 통해 모든 input feature를 aggregate한다.
network의 channel 수는 보통 수동으로 선택된 hyperparameter(예 : 128, 256, ..., 2048)이다.
이는 deep models의 accuracy와 efficiency에 중요한 역할을 하며, 일반적으로 더 wider network는 더 높은 accuracy를 제공하지만 runtime efficiency가 떨어진다.
flexibility를 제공하기 위해, 많은 architecture engineering 연구는 서로 다른 width multipliers를 사용하여 제안된 network를 각각 학습한다.
여기서 width multipliers는 network의 각 layer를 uniformly하게 줄이는 global hyper-parameter이다.
우리는 임의의 width에서 직접 실행시킬 수 있는 a single network를 학습시키는 것을 목표로 한다.
Figure 2에 보이듯이, feature aggregation은 channel-wise residual learning의 관점에서 명시적으로 해석될 수 있으며,
각 input channel 또는 channel group을 output neuron의 residual componenet로 간주할 수 있다.
따라서 wider network는 그보다 slim network보다 성능이 나빠지지 않는다.
다시 말해, fully aggregated feature 과 partially aggregated feature 간의 residual error 는 감소하고 경계가 생긴다 :
여기서 는 첫 개의 channel을 요약한 값 이며,
이고 는 constant hyper-parameter이다. (예: ).
Equation 3의 bounded inequality(경계 부등식)은 몇 가지 단서를 제공한다 :
하지만, [25]에서 제시된 것 처럼, BN은 training 과 testing 사이의 inconsistency로 인해 특별한 처리를 해줘야 한다.
training 동안, 각 layer의 features들은 현재 mini-batch feature values 의 mean and variance로 normalized된다 :
은 zero-division을 피하기 위한 a small value (e.g. )이고,
와 는 각각 learnable scale and bias이다.
그리고나서 feature mean and variance 값은 moving averages로서 global statistic로 update된다 :
은 momentum (e.g. ), 는 the index of training iteration이다.
우리는 network가 총 iteration 동안 학습된다고 가정하며, 로 표시한다.
inference 중에는 다음과 같은 global statistics가 사용된다 : 와 는 optimized된 scale and bias이다.
training 이후에는, Equation 6은 a simple linear transformation으로 재정의된다는 것을 명심해라 :
그리고 일반적으로 와 는 이전의 conv layer에 fused될 수 있다.
slimmable networks에서는, 서로 다른 channel 수를 축적하면서도 서로 다른 feature mean and variance가 발생하여 공유된 BN의 통계가 부정확해진다.
[25]에서는 각 sub-networks에 대해 BN의 를 개별적으로 사용하도록 하는 switchable BN을 도입했다.
학습 후에는 parameter가 합쳐질 수 있지만(Eq 7), 공유된 를 사용하는 slimmable network도 유사한 성능을 보인다.
그러나 universally slimmable network에서는 switchable BN이 실용적이지 않다.
그 이유는 두 가지이다.
실제로, 모든 training samples에 대해 BN 통계를 축적할 필요는 없으며, 무작위로 sampled된 subset(e.g. 1 images)만으로도 정확한 esimation을 제공한다.
이 option을 통해 BN의 post-statistics 계산을 매우 빠르게 수행할 수 있다(default는 모든 training sample에 대해 계산)
실험에서는 sample sizes별 정확도를 비교할 예정임.
또한, 연구나 개발 과정에서 model의 학습 중 validation accuracy를 추적하는 것이 중요하다.
BN의 post-statistics는 학습 중 validation accuracy 추적을 지원하지 않지만, US-Net을 학습할 때 간단한 engineering trick을 사용할 수 있다.
학습 중 largest and smallest width에서 BN statistics을 추적하는 방법이다.
US-Net을 학습하기 위한 자연스러운 solution은 서로 다른 sub-networks에서 sampling한 loss를 누적하거나 평균화하는 것이다.
예를 들어, 각 training iteration에서 범위에서 개의 width를 무작위로 sampling하고,
누적된 loss로부터 back-propagated된 gradients를 적용할 수 있다.
한 단계 더 나아가, Eq 3의 bounded inequality를 통해 US-Net의 모든 width에서 성능이 최소 width 0.25x와 최대 width 1.0x에서 model의 성능에 의해 제한됨을 알 수 있다.
즉, 성능의 하한과 상한을 최적화하면 US-Net의 모든 sub-networks를 암묵적으로 최적화할 수 있다.
따라서 각 iteration에서 model을 최소 width, 최대 width, 개의 무작위 width로 학습하는 sandwich rule을 제안하며, 이를 통해 더 나은 convergence behavior와 overall performance를 실험에서 확인하였음.
sandwich rule은 두 가지 추가적인 이점을 제공한다.
Inplace distillation의 핵심 아이디어는 각 iteration마다 동일 network 내에서 전체 network에서 sub-network로 knowledge를 전달하는 것이다.
이는 먼저 큰 model을 학습한 후 학습된 knowledge를 예측된 class soft probability를 사용하여 작은 model로 전이하는 two-step knowledge distilling에서 영감을 받았다.
US-Net에서는 sandwich rule에 따라 각 iteration마다 최대 width, 최소 width 및 무작위로 sampling한 width로 model을 학습한다.
주목할 점은 이 학습 방식이 inplace distillation을 자연스럽게 지원한다는 것이다.
최대 width에서 model이 예측한 label들을 다른 width의 학습 label로 직접 사용하며, 최대 width에서는 ground truth를 사용한다.
구체적으로, 최대 width에서 예측된 label tensor의 gradient를 멈추는 것이 중요하다.
이는 sub-network의 loss가 전체 network의 computation graph를 통해 back-propagate되지 않음을 의미한다.
또한, BN을 사용할 경우 예측된 label은 training mode에서 직접 계산되며, 이는 inference mode의 추가 forward cost를 절감해준다.
우리는 sub-networks의 training label로 ground truth label과 predicted label을 함께 사용하는 방식을 시도해봤으며,
두 loss의 일정한 balance 또는 감소하는 balance를 사용하는 경우를 test했으나 결과는 오히려 좋지 않았다.
최대 width network를 inference : y'
randomly sampled network들과 최소 width network를 inference : loss()
optimizer.zero_grad()
y_max = model.forward(max_width)
loss_max = criterion(y_max, y)
loss_max.backward()
y_max = y_max.detach()
y_randomly_sampled_1 = model.forward(randomly_sampled_1)
loss_1 = distill(y_randomly_sampled_1, y_max)
loss_1.backward()
y_randomly_sampled_2 = model.forward(randomly_sampled_2)
loss_2 = distill(y_randomly_sampled_2, y_max)
loss_2.backward()
y_min = model.forward(min_width)
loss_min = criterion(y_min, y)
loss_min.backward()
optimizer.step()
training end -----------------------------------------------------------
bn_calibration_init() # calculating post-statistics of batch normalizations