1503.02531v1 Distilling the Knowledge in a Neural Network

  1. 배경
    대규모 신경망 모델의 지식을 작은 모델로 효과적으로 이전하는 방법에 대한 연구가 진행되고 있는데, 이는 모델의 효율성과 성능을 동시에 개선하는데 목적이 있다.
  2. 문제점
    기존의 Knowledge Distillation 방법은 단순한 Label 기반 학습에 의존해서 Soft Target 분포의 유연성과 정확도 사이에서 균형을 맞추는데 어려움이 있다. 복잡한 모델의 Probability Distribution 을 효과적으로 전달하는 방법이 부족하다.

  3. 제안 기법
    Temperature Scaling: Logit을 확률로 변환하는데 사용되는 온도 T 파라미터를 도입해서 경도를 조절한다.

    Soft Target based learning:

    KL Divergence:

  4. 실험 결과

2510.03012v1, PocketSR: The Super-Resolution Expert in Your Pocket Mobiles

  1. 배경
    이 연구는 모바일 기기에서의 Super Resolution 성능 향상을 목표로 하며, 특히 효율적인 모델 압축 기법인 Channel Pruning과 Multi layer feature distillation 을 결합한 방법을 제안한다. 기존 연구는 복원 과정에서 계산 비용이 높거나, 실제 이미지에서 구조적 세부 정보를 정확히 복구하지 못하는 한계가 있었다.
  2. 문제점
    기존 Multi Step Super Resolution 방법은 생성 능력이 좋지만, 가상의 내용을 생성하는 할루시네이션 문제가 있고, 실제 데이터와의 유사성을 떨어뜨리는 문제가 있었다. 채널 정제 비율이 높아질수록 성능 저하가 발생하고 효율성과 정확성 사이에 균형을 맞추는데 도전 과제가 된다.
  3. 제안
    Multi layer feature distillation 을 최종 구성해서 channel pruning 모델의 성능을 보완한다. 이 기법은 정제된 모델이 원본 모델의 다중 레이어 특징을 학습하게 함으로써 효율성과 정확성을 동시에 달성한다.



    3-1. LiteED
    3-2. Online Annealing Pruning
    3-3. Multi-Layer Feature Distillation Loss

  4. 실험 결과
    모델 크기는 146M Parameter로 매주 작으며, 4K 이미지를 0.8초 만에 처리할 수 있다.

    정성적 결과로는 PocketSR은 건축물 구조나 규칙적인 패턴을 정확히 복구하는 반면, 다른 방법들은 텍스처가 흐릿하거나 할루시네이션된 결과를 생성했다.

    정량적 결과로는 50% 정체 비율에서 Multi layer distillation 적용한 모델은 11.24ms, MACs 186G 감소하면서 FID 126.53이 0.2865로 유지되었다.

    DIV2K 데이터셋 평가 결과로 다양한 저해상도 품질 데이터 조건에서도 제안 기법의 안정성을 입증하였다.

  5. 결론
    제안된 기법은 Channel Pruning과 Multi layer feature distillation 기법을 결합하여 Mobile Device 환경에서의 Super Resolution 성능과 효율성을 동시에 향상시켰다. 특히 정성적 평가에서 실제 이미지 복구 능력이 우수한 결과를 나타냈다.

ResNet34

ResNet34는 딥러닝에서 가장 중요한 CNN Architecture 중 하나이다.

2015년 Microsoft 에서 발표된 논문 “Deep Residual Learning for Image Recognition”에서 소개된 Residual Network(ResNet) 이다.

  1. Background
    -> 왜 나왔을까?
    기존 Deep Network는 층이 깊어질 수록 Vanishing Gradient Problem 으로 학습이 잘 되지 않았다. 그래서 Skip Connection을 도입해서 Residual 을 학습하게 만들었다.

    이로 인해 100층 이상의 매우 깊은 네트워크에서도 효과적으로 학습을 할 수 있게되었고, ImageNet 대회에서도 큰 성과를 나타냈다.

  2. ResNet32 Structure
    ->
    34개의 Layer로 구성되어 있다.
    VGG19에서 영감을 받아 Basic Block을 사용하고, ResNet50 이상에서는 Bottleneck Block을 사용한다.


    (그림)


  3. Performance
    -> ImageNet 에서 Top-5 Error 5.71%
    -> ResNet18보다 깊고 정확도가 높다.
    -> ResNet50보다 학습과 추론 속도가 빠르다.
    -> Transfer Learning 에서 backbone으로 사용한다.

  4. Approach Paper
    -> 1512.03385 논문.
    -> Skip Connection이 왜 Vanishing Gradient를 해결하는지 직관적인 이해.
    -> Residual Block
    -> Implement Code
    ->

1806.08342v1, Quantizing Deep Convolutional Networks for Efficient Inference: A WhitePaper

  1. Background
    -> Deep NeuralNetwork(CNN)은 Edge Device나, Embedded Device에서 점진적으로 사용되고 있지만 모델 크기, 추론 속도, 전력 소비가 높은 점이 문제이다. FloatingPoint(32bit) 모델은 메모리와 계산 비용자체도 높아서 실시간 적용이 어렵다. 이 논문은 Quantization 방법을 사용한 Google의 Tensorflow, Tensorflow Lite에서 실제 적용 가능한 기술을 정리한 Whitepaper이다.

    목표는 Post-Training Quantization(PTQ), Quantization Aware Training(QAT)를 통해서 8bit 정수로 변환하면서 FloatingPoint 대비 정확도를 높이고 손실을 최소화하며, 실제 하드웨어에서 2~10배 SpeedUp을 달성하는 것이다.

  2. Problem

  3. Method
    -> Quantization 기법의 종합 가이드
    3-1. Quantizer Design

    3-2. Post Training Quantization(PTQ)

    3-3. Quantization Aware Training(QAT)

    3-4. Best Practices Recommendations

  4. Result
    -> Accuracy(ImageNet Top-1):
    8bit PTQ:
    8bit QAT:
    4bit Weights(QAT):
    SpeedUp:

  5. Conclusion
    ->

ICLR2017, 1611.06440v2, Pruning Convolutional Neural Networks for Resource Efficient Inference

  1. Background
    -> CNN은 Computer Vision에서 뛰어난 성능을 보이지만 Inference 비용이 매우 높아서 모바일, 임베디드와 같은 저사양 장치에서 실시간 Application으로 배포하기 어렵다. 특히 Transfer Learning 상황에서 ImageNet 대규모 데이터로 Pre-Trained 된 대형 (i.g., VGG16, AlexNet) 모델을 작은 도메인 데이터 셋(Birds200, Flower102)으로 Fine-Turning하는 경우가 많다.

    전체 FeatureMap을 구조적으로 Pruning하여 계산량(FLOPs)와 Inference time을 크게 줄이면서 정확도의 손실을 낮추자는게 이 연구의 목표이다.
  2. Problem
    -> Unstructured pruning(Han et al., 2015): Irregular sparsity 일반 하드웨어에서 speedup이 제한적이다.
    -> Regularization-based pruning: 학습이 오래 걸리고(원래 학습보다 3배 이상), Layer-wise sensitivity의 분석이 필요하다.
    -> Second-order methods:
    ->
  3. Method
    -> Greedy Iterative Pruning + Taylor Expansion 기반 Saliency Criterion. 제안

    Pruning Procedure
    -. Target task로 Network fine-tuning until convergence.
    -. Pruning+Fine-Turning을 번갈아 가면서 반복한다(한번에 하나의 FeatureMap만 제거)
    -. 목표로하는 Flops, Accuracy에 도달하면 종료한다.

    Contribution은 Taylor Criterion

  4. Result
    ->


  5. Conclusion

Structured Pruning of Deep Convolutional Neural Networks

  1. Background
    -> CNN은 Image Recognition, Voice Recognition 분야에서 뛰어난 성능을 보였다. 하지만 높은 비용의 연산량과 메모리 엑세스 때문에 모바일, 임베디드 기기에서 적합하지 않다. 기존 연구들은 CNN을 학습한 후, 중요하지 않은 Weight를 제거하는 Pruning 방법을 사용한다. 그러나 이러한 방법은 대부분 Weight 단위로 제거하는 방법이다 보니 불규칙한 희소 문제가 있다.

    즉,
    Sparsity matrix 저장 방법 필요,
    Index 관리 방법 필요,
    GPU parallel process 효율 저하,
    의 문제가 있다고 개선하고자 한다.

  2. Problem
    2-1. Unstructured Sparsity

    2-2. Reduced weight

    2-3. CNN

  3. Method
    -> 3-1. Channel-level Pruning

    3-2. Kernel-level Pruning

    3-3. Intra-Kernel Strided Sparsity

    3-4. Particle Filter Pruning

    3-5. Evolutionary Particle Filter(EPF)

    3-6. Fixed-point Quantization

  4. Result

  5. Conclusion
    -> Structured Pruning 제안

    -> 불규칙이 아닌, 규칙적인 Sparsity 사용

    -> Particle Filter 기반 탐색

    -> Quantization과 결합

    ->

ICLR 2016, 1510.00149v5, Deep Compression: Compression Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding

  1. By Pruning the unimportant connections.
  2. Quantizing the network using weight sharing.
  3. Applying Huffman Coding.
  1. Background or Motivation
    -> 2012년 이후 AlexNet, VGG와 같은 대규모 Conv NN 모델이 높은 성능을 달성했지만 모델의 크기가 너무 커서 모바일 장치에는 적합하지 않다고 판단.
    e.g., AlexNet 240MB,
    VGG-16 552MB
    수백 메가 바이트의 모델을 스마트폰에 넣는다는 것은 앱의 용량, 메모리 사용량, 저장공간, 전력소비 등의 문제를 야기 시킨다.
    특히, DRAM 접근은 연산하는것 보다 훨씬 많은 에너지를 소비한다.
  2. Problem
    -> “모델 정확도는 유지하면서 저장공간, 메모리 대역폭을 크게 줄일 수 없을까?” 를 문제 대상으로 이를 해결하고자 한다.

    2-1. 기존 CNN에서는 Redundancy 중복이 많다.
    대표적으로 Parameter수가 너무 많다 (e.g., AlexNet 61MB, VGG16 138MB parameters) 대부분의 Parameter가 Fully Connected Layer에 집중되어 있다.

    2-2. 저장공간 부족
    모바일 장치에서의 저장공간은 PC보다 저장공간이 제한적이다.(메모리 램도 제한적이다)

    2-3. 에너지 소비
    -> FP32에서 Add는 0.9 pJ
    SRAM Access 5.0 pJ
    DRAM Access 640 pJ
    즉, 메모리 접근이 연산보다 훨씬 비싸다.
    따라서 Parameter의 수를 줄이는 것이 중요하다고 설명한다. 강조한다.



  3. Method
    -> 이 논문에서의 핵심은 Deep Compression 이다 (3steps pipeline)


    Step1. Pruning
    중요하지 않은 연결을 제거한다.
    Dense Network 학습 -> Smallest weight delete(=Prune) -> Retraining
    결과: AlexNet은 약 9배 감소, VGG16은 약 13배 감소됨.

    Step2. Quantization + Weight Sharing
    Pruning 후에 weight를 압축한다.
    학습된 모델에서 Threshold 값을 정한 뒤, 이 값 보다 작은 weight의 연결을 제거.

    e.g., “0.49, 0.51, 0.48, 0.50” 의 weight 경우 0.50으로 요약해서 공유 한다.
    비슷한 값을 가진 weight이기 때문에 라는 아이디어.

    K-means Cluster
    weight를 k개의 cluster로 묶는다.
    w1 -> cluster1
    w2 -> cluster2
    w3 -> cluster1
    w4 -> cluster2

    Bit 수 감소
    32 bit floating point를 Conv에서는 8bit, FC에서는 5bit로 감소시켜서.

    Retraining
    Cluster의 Centroid를 학습한다. Quantization -> FineTune 과정을 의미함.

    Step3. Huffman Coding
    Quantization 이후 weight index의 분포가 균등하지 않아서
    자주 등장하는 값 000
    자주 등장하지 않는 값 111111
    즉, Lossless Compression을 적용한다.


    Total Pipeline

    Original Network -> Pruning -> Retraining -> Quantization -> Weight sharing -> FIneTune -> Huffman Coding -> Compressed Network 완성
  4. Conclusion
    Pruning 해서 9~13배 압축
    Quantization + Weight Sharing 해서 (k-means) 27~31배 압축
    Huffman Coding 해서 35~49배 압축

    최종 성과로는
    LeNet 의 경우 39~40배 Compressed
    AlexNet 의 경우 35배 Compressed
    VGG16 의 경우 49배 Compressed

    정확도 손실 없고, 추론 속도 증가, 에너지 소비량 감소, 모바일 배포가 가능하다고 보여짐.

1506.02626, Learning both Weight and Connections for Efficient Neural Networks

  1. Background or Motivation
    -> Neural Network는 Computer Vision, Voice Recognition에서 큰 성공을 거두었으나, 모델 크기와 계산량이 폭발적으로 증가하면서 모바일 기기에는 배포하기가 어렵다. Network의 불필요한 연결(Connection)을 제거하여 Model의 크기와 Inference 비용을 크게 줄이면서 정확도는 유지하게 한다.

  2. Problem
    -> DNN은 Over Parameterized 되어서 Redundancy 중복이 많다.
    저장공간, 메모리 대역폭, 계산 자원 낭비
    -> 기존 Model Compression 기법은 정확도 손실이 발생하거나 Convolutional Layer 효과가 제한적이다.
    -> 단순 magnitude-based pruning은 retraining없이는 정확도가 좋지 않다.
    -> Unstructured Sparsity는 일반 dense 라이브러리에서 SpeedUp이 어렵고, saving overhead가 발생한다.
  3. Method
    -> 중요한 connection만 남기고 불필요한 연결을 Pruning하는 Iterative Pruning + Retraining 을 하는 방법을 제안함.

ICLR 2017, 1608.08170v3, Pruning Filters for Efficient ConvNets

Background or Motivation:
CNN은 ImageNet 대규모 데이터셋에서 큰 성공을 거두었으나, 네트워크가 점점 더 깊어지고 복잡해지면서 FLOPs 계산 비용과 Parameter 저장 비용이 크게 증가했다. 모바일 기기나 실시간 이미지 처리 서비스에서는 정확도뿐만 아니라 추론 속도와 모델 크기가 매우 중요하다. 기존 연구에서 Weights Pruning 이나 Low Rank Approx., Quantization, Compression 기법을 통해서 모델을 압축했으나, Fully Connected Layer에 효과적이었고 Convolution Layer의 실제 계산 비용이 낮아지는 것은 제한적이다.
즉, Convolution Layer의 계산 비용을 효과적으로 줄이면서, 불규칙한 희소를 만들지 않는 방법을 찾는 것이 이 연구의 배경이다.

Problem:
-> Magnitude-based weight pruning(Han et al., 2015) FC Layer에서 많은 파라미터를 줄였지만, Conv Layer에서 Irregular sparsity가 발생해 실제 계산 속도 향상이 미미함.
-> Conv Layer의 계산 비용이 전체 FLOP의 대부분을 차지하는데 이를 구조적으로 줄이기는 어렵다.
-> Layer by Layer의 Iterative pruning과 Fine-tuning은 시간이 많이 소요된다.
깊은 네트워크를 가진 모델, ResNet에서는 비효율적이다.
-> 기존 연구에서 작은 가중치를 제거하는 방식은 Filter 전체를 제거하지 않아 계산량 감소가 제한적이다.

Proposal:

전체 Filter와 Feature Map을 한 번에 제거하는 Structured Pruning 방법.
주요 기법은
1. Filter 중요도 평가
-> 방법은 각 Filter의 L1-Norm. 을 구해서 작은 Filter를 제거.
2. Pruning 효과
-> 하나의 Filter를 제거하면 Feature Map과 next layer에서 Feature Map, Kernel도 제거되므로 =>계산량이 감소됨.
3. Pruning 전략
-> Independent vs Greedy
-> Stage-wise pruning
4. ResNet 대응
-> Residual block의 projection shortcut 등을 고려한 pruning 규칙
5. ReTraining
-> One-shot pruning(여러 layer를 동시에 pruning 하고 재학습) 하는 방법은 iterative한 방법보다는 빠르다. 다만 sensitive layer는 pruning을 skip 할 수 있다.

기대효과는 Sparsity가 발생하지 않아서 기존 Dense Matrix Multiplication도 사용 가능하고 계산속도 향상과 Pruning ratio를 쉽게 조절할 수 있음.

Conclusion:

VGG-16 (CIFAR10) : 34.2% Flops 감소(파라미터가 64% 감소)
ResNet-56 : 27.6% 감소
ResNet-110 : 38.6% 감소
ResNet-34(ImageNet): 24.2% 감소

Filter Level의 Structured Pruning은 Sparsity 없이 Conv Layer의 계산 비용을 크게 줄일 수 있음을 입증했다.

My opinion:
Irregular sparsity가 생기는 이유는?
선행연구에서 모델을 압축했는데 FC에서는 효과가 좋았지만, Convolution Layer에서 좋지 않은 이유는? = Sparsity Layer