본문 바로가기

Deep Learning Papers/Optimization

Pruning 논문 2편 정리

1. 3단계 pruning 학습 pipeline (원본 논문 Link)

1) 개요

신경망 모델의 정확도에 영향을 주지 않고 모델 저장 공간 및 모델 연산량을 절감할 수 있는 방법론을 제안함

3단계 pruning 학습 방법을 이용하여 신경망 모델에서 잉여 연결들(redundant connections)을 가지치기 할 수 있음

2) 3단계 pruning 학습 방법

1단계 : 일반적인 학습 과정을 통하여 어떤 연결들이 중요한지 파악하는 단계임

→ inference용으로 최적화된 모델을 얻기 위한 수준이 아니고 pruning 전에 각 connection의 중요도를 파악할 수 있는 수준으로 수행함

2단계 : weight 값이 threshold 이하인 connection들을 신경망에서 제거함

→ 밀도가 높은 신경망(dense network)을 밀도가 낮은 신경망(sparse network)으로 변환함

3단계 : 밀도가 낮아진 신경망을 retraining하여 정확도 손실(accuracy loss)을 보완함

→ 중요한 단계로, retraining 과정을 거치지 않고 pruned 모델을 사용하면 정확도에 문제가 발생함 

 

3) 구체적인 방법론

Regularization (정규화)

L1 정규화와 L2 정규화를 적용할 수 있으며, 전체적으로 L2 정규화가 좋은 pruning 결과를 도출함 

→ L1 정규화는 많은 연결들이 제거되어 retraining 단계에서 정확도 손실 보완이 잘 되지 않음

L1 정규화는 가중치(weight) 절대값의 합에 비례하여 가중치에 페널티를 부과하며 중요도가 낮은 가중치를 0이 되도록 함

L2 정규화는 가중치 제곱의 합에 비례하여 가중치에 페널티를 부과하며 이상점 가중치를 0에 가까운 값이 되도록 함

Dropout Ratio Adjustment

pruning으로 이미 모델의 capacity가 낮아진 상태이므로, retraining 시에 dropout이 덜 되도록 더 낮은 dropout ratio를 적용해야 함

Local Pruning 및 Parameter Co-adaptation

retraining 시에 특정 layer의 가중치(weight)들을 초기화하지 말고 현재의 값을 보존한 상태에서 retraining을 수행해야 함

Iterative Pruning

원하는 pruning 수준을 달성할 때 까지 pruning과 retraining을 반복적으로 수행함

Pruning Neurons

반복적인 pruning process를 수행하면서 입력 연결이 0이거나 출력 연결이 0인 노드는 제거됨

 

4) 실험 방법

Caffe framework을 사용하여 pruning 실험을 수행함

각 weight tensor에 대하여 pruned 파라미터는 무시되도록 Caffe framework을 수정함

 

2. 점진적(gradual) pruning (원본 논문 Link)

1) 개요

신경망 모델 pruning은 0이 아닌 신경망 모델 파라미터의 개수를 줄여서 신경망 모델의 밀도를 낮추는 작업임

점진적(gradual) pruning technique을 적용하여 정확도 손실을 최소화하면서 (0이 아닌) 모델 파라미터의 개수를 수배~10배까지 줄일 수 있음

 

2) 방법론

 

Sparsity

신경망의 weight들이 0으로 pruning된 비율을 나타내는 지표로서 신경망의 밀도가 낮아진 정도를 나타냄

binary mask를 이용한 pruning

pruning의 대상이 되는 모든 layer에 대하여, binary mask variable을 추가함

binary mask variable은 layer의 weight tensor와 형태(shape)와 크기(size)가 동일하며, 그래프의 inference에 참여하는 weight들을 결정함

Tensorflow 학습 그래프에 operation을 추가하여, 각 layer의 weight들을 절대값에 따라 sorting하고,

원하는 sparsity level이 달성될 때 까지 크기가 가장 작은 weight들을 0으로 masking함

masking된 weight들은 back-propagation 시에도 갱신되지 않음

gradual pruning algorithm

sparsity 초기 값에서 시작하여 sparsity 최종 값(목표 값)에 도달할 때까지 n pruning step에 걸쳐 sparsity를 증가 시킴

pruning step은 training step t0에서 시작하여 일정한 training step 간격에 따라 증가함

 

각 pruning step(training step  간격)에서 목표로 하는 sparsity level이 달성될 때까지 binary weight mask를 갱신하여 pruning을 수행함 

pruning 수행 후 training step들을 통하여 pruning으로 인한 정확도 하락을 회복해나감

신경망에 잉여 연결이 많은 초기 단계에서는 pruning을 빠르게 진행하고 신경망에 남은 연결이 줄어듦에 따라 점진적으로 pruning 속도를 느리게 함

pruning schedule은 learning rate schedule도 고려해서 결정해야 함 (신경망이 일정 수준 converge되었을 때 pruning을 시작해야 함)

pruning 진행 구간에서는 learning rate가 일정 수준 이상이 되어야 pruning으로 인한 정확도 손실을 회복할 수 있음