Pruning(가지치기)란, 신경망 모델에서, 노드(뉴런)나 연결(시냅스)을 제거하여 모델의 크기와 계산 비용을 줄이는 기법
High-level illustration of Pruning
(1) 메모리 사용량 줄이고 (2) 연산 속도를 가속하기 위함.
위 이미지를 보면 빨간색의 경우, 90%를 가지치기 했음에도 정확도 손실은 거의 없음을 알 수 있다.
신경망 모델에서 일부분을 잘 가져오면, 원래 모델과 같은 정도의 학습으로 동일한 효과를 얻을 수 있다
그러니까 운이 좋게 가지치기를 하면, 성능을 유지하면서 파라미터는 줄인 모델을 만들 수 있다.
논문: https://arxiv.org/abs/1803.03635
Pruning 단위의 granularity에 따른 구분
Pruning 할 파라미터를 선정하는 방법에 따른 구분
-> score 점수에 따라서 중요한/덜 중요한 파라미터/레이어를 선정해야함. 따라서 중요도를 어떻게 계산하는가가 중요함.
파라미터별로 절댓값을 중요도로 사용
레이어별로 을 중요도로 사용
또한 제거할 레이어를 선정하였으면 그것을 몇% 반영 할 것인지,
로컬/글로벌하게 반영할 것인지 정하기도 해야함.
Pruning 및 fine-tuning을 언제, 얼마나 할 것인지에 따른 구분
One-shot (Single iteration)
Recursive (Multiple iterations)
재학습 및 fine-tuning 할 시 파라미터 초기화를 하는 방법에 따른 구분
pruning 직후엔 학습된 모델 파라미터 중 일부만 잘려나간 상태
=> 이후 최종 모델까지 추가 학습을 어떤 상태(파라미터 값)로 시작할지에 대한 구분
pruning 직후 상태로 그대로 fine-tuning 진행
랜덤값으로 재초기화 후 재학습 진행
Iterative Magnitude Pruning은 중요도가 낮은 파라미터부터 반복적으로 조금씩 제거 하고 fine-tuning 하는 기법으로, 모든 파라미터를 삭제하거나, 추가하거나, 모든 파라미터를 동결하거나, 성능과 무관하게 줄이는것이 목표는 아니다
가장 기본적인 pruning 방법
1.Structured: Unstructured pruning 기법의 일종
2.Scoring:
3.Scheduling: Recursive 방식 활용
4.Initialization: Rewind 방식 활용