본문 바로가기

Deep Learning Fundamental

Learning both Weights and Connections for Efficient Neural Networks

먼저 해당 포스팅은 NIPS 2015 논문 Learning both Weights and Connections for Efficient Neural Networks을 참고하여 작성하였음을 밝힙니다. The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks 논문을 읽던 중 앞서 게재된 위 논문을 참조할 필요가 있다고 느꼈기에 이렇게 포스팅하여 정리해보았습니다.

 


1. Introduction

그림 1. Three-Step Training Pipeline(좌),  Synapses and neurons before and after pruning(우)

Neural network는 computer vision, speech recognition, NLP 등에 걸쳐서 많은 분야에 사용되고 있습니다. 그 중 Computer vision 분야의 복잡한 문제들을 해결하는 과정에서 nueral network가 가지는 파라미터의 수는 점차적으로 증가하였으며, capacity 또한 커져나갔습니다. Large neural network는 강력한 성능을 발휘하지만, 그것이 요구하는 자원의 크기는 매우 큽니다. 그러므로 embedded mobile application과 같이 제한적인 메모리와 연산 능력을 가지는 환경에서 이를 충족시킬 수 없습니다. 이 논문에서는 이러한 nueral network가 대체로 over-parameterized 되어있으며, 연산 비용과 메모리를 낭비하고 있다고 주장합니다. 이에 따라서 large network을 mobile device에서 real-time으로 작동할 수 있도록 network를 pruning 하는 방법을 제안하고, 그 과정을 그림 1.(좌)과 같이 세 가지로 나누어 설명합니다. 첫 번째 과정은 initial training을 의미합니다. 이를 통해서 training connectivity를 찾아나가며 network의 topology를 학습하게 됩니다. 두 번째 과정에서는 앞서 학습된 layer의 weight 중에서 threshold에 미치지 못하는 값들을 제거하여 dence한 layer를 sparse하게 만듭니다. 이 과정을 거친 dense network는 그림 2.(우)와 같이 neuron간 connection 또는 node이 제거된 sparse network가 됩니다. 이렇게 만들어진 sparse network을 retrain 함으로써 제거된 connection을 보상해주는데, 이것이 세 번째 과정이라고 할 수 있습니다. 추가적으로 두 번째 과정과 세 번째 과정을 iterative 하게 진행하여 sparse network의 성능을 더욱 끌어낼 수 있습니다. 이에 대하여 Experiment 파트에서는 layer들이 첨차적으로 right capacity를 찾아가며, over-fitting을 감소시켰기 때문이라고 주장합니다.

 


2. Learning Connections in Addition to Weight

제안한 pruning 방법론에 따라서 sparse network는 그림 1.(우)와 같이 three-step을 통해 normal network의 connection을 학습하게 됩니다. 기존의 학습들과는 다르게 이 논문에서는 학습된 weight에 저장된 값보다 conncection이 더욱 중요하다고 주장합니다. 그러므로 세 번째 과정에서 retrain이 진행되는 것이며, 이 단계가 accuracy에 큰 영향을 준다고 합니다.

 

2.1 Regunarization

어떠한 정규화 방법을 선택하는 지에 따라서 pruning과 retrain의 성능이 크게 좌우 됩니다. L1 정규화는 0에 가까운 파라미터들을 늘립니다. 이렇게 하면 pruning 후 retrain 전에 더 높은 정확도를 얻을 수 있습니다. 그러나 connection을 유지하는 측면에서는 L2 정규화에 비해 좋지 않아 retrain 후 정확도가 떨어집니다. 이는 Experiment 파트에서 설명하도록 하겠습니다.

 

2.2 Dropout Ratio Adjustment

수식 1. The number of connections in Layer(좌), Dropout ratio adjustment(우)

Dropout은 over-fitting을 방지하기 위해 널리 사용되는 방법입니다. 이 방법은 sparse network를 retrain할 때에도 적용됩니다. 하지만 dropout ratio는 점차적으로 작아지는 model의 capacity에 고려되어야 합니다. 이에 따라서 수식 1.과 같이 dropout ration를 조정하여 사용합니다.$N_i$는 $i$번째 layer의 connection의 수를 나타내며, $C_{io}$는 original network의 connection 수를 나타냅니다. 그리고 $C_{ir}$는 retrain된 network의 connection 수를 나타냅니다. 그러므로 수식 1.(우)를 보면 알 수 있듯이 capacity가 작아질 수록 dropout ratio 또한 작아질 것임을 알 수 있습니다.

 

2.3 Local Pruning and Parameter Co-adapation

retrain 중에는 pruning 에서 남아있는 connection에 대해 initial-training에서 사용된 가중치를 유지하는 것이 pruning 된 layer를 다시 초기화하는 것보다 낫다고 주장합니다. 경사 하강법은 network가 처음 training 될 때는 좋은 결과를 얻게 하지만, 일부 layer만을 re-initialize 한 후에 retrain 한 경우에는 그렇지 않기 때문입니다. 이는 How transferable are features in deep neural networks? 논문에서 찾아볼 수 있습니다. 그러므로 pruning 된 layer를 retrain 할 때, re-initialize 하지 않고 남아있는 파라미터들을 사용합니다. 전체 network를 학습할 필요가 없기 대문에 연산 비용을 줄일 수 있습니다. Neural network는 vanishing gradient 문제에 빠지기 쉬운데, 이를 해결하기 위하여 FC layer를 pruning 할 때는 Conv layer의 파라미터를 고정하고 오로지 FC layer 만을 학습합니다. 반대의 경우도 그러하게 학습을 진행합니다.

 

2.4 Pruning Neurons

Connection에 대한 pruning을 진행한 후에 retrain 과정을 진행하게 되면 죽은 뉴런들에 대한 입출력 conncetion이 0을 갖는 결과를 가지게 됩니다. 따라서 이에 대응하는 뉴런의 그래디언트 또한 0이 될 것입니다. 그러므로 죽은 뉴런들은 자동으로 학습에서 배재될 것입니다.

 


3. Experiments

3.1 Pruning on Representative Networks

앞서 설명한 절차에 따라서 위 논문에서는 LeNet-300-100(on MNIST)과 AlexNet, VGG-16(on ImageNet) 모델에 대한 실험 결과를 보여주고 있습니다. 위 모델들을 이용하여 각각 MNIST 데이터 셋과 ImageNet 데이터 셋을 학습 시킨 후 error rate을 측정한 결과는 표 1. 과 같습니다. (LeNet-300-100은 2개의 은닉층을 가진 FC layer로 이루어진 간단한 모델입니다.)

 

표 1. Network pruning can save 9× to 13× parameters with no drop in predictive performance

Network pruning을 통하여 각 모델의 크기를 12x, 9x, 13x를 압축한 것을 살펴볼 수 있습니다. 여기서 특이한 점은 모델의 압축률은 향상되면서 error rate은 감소했다는 것 입니다. 이러한 결과는 pruning을 통해 각각의 layer가 right capacity를 가지게 됨으로써 overfiting을 완화하는데 도움을 줌으로써 나타나는 효과라고 이야기 합니다.

 

표 2. For Lenet-300-100, pruning reduces the number of weights by 12× and computation by 12×.

표 2. 는 LeNet-300-100 모델에 대한 pruning의 결과 중 압축률과 연산 비용을 나타냅니다. pruning을 통해서 크기과 연산 비용 모두 12x로 축소되는 것을 살펴볼 수 있습니다. 이때 모델의 첫 번째 FC layer의 sparsity pattern을 시각화 한 결과는 그림 2. 와 같습니다. MNIST 데이터 셋은 28 x 28 크기를 가지므로 이를 일렬로 나열하면 총 784 크기의 벡터로 표현할 수있습니다. 이에 따라서 아래 그림 2.의 x축 눈금은 28 단위 되어있습니다. pruning 과정을 수행하며 살아남은 뉴런들이 보라색으로 표현된다고 보시면 됩니다. 이를 살펴보면 해당 모델이 MNIST의 데이터 특성에 따라 상하좌우에 위치한 불필요한 정보들보다 가운데에 위치한 정보에 더욱 집중한다는 것을 알 수 있습니다. 

그림 2. Visualization of the first FC layer’s sparsity pattern of Lenet-300-100.

3.2 Trade-off between accuracy and number of parameters

아래의 그림 3.은 pruning을 통한 파라미터의 축소와 정확도 감소의 trade-off 관계와 L2 정규화가 retrain에 미치는 영향을 나타냅니다. 이를 살펴보자면 pruning 한 network를 retrain 하지 않았을 경우에는 L1 정규화를 적용하였을 때 결과가 더 좋은 것을 확인할 수 있습니다. 반면에 retrain을 진행할 경우에는 L2 정규화가 더 향상된 결과를 가져오는 것을 볼 수 있습니다. 이는 ---- 결과 해석 필요! 

그림 3. Trade-off curve for parameter reduction and loss in top-5 accuracy.

Pruning 과정에서 Convolution layer와 FC layer는 각각 다른 민감도를 가집니다. 아래의 그림 4.는 AlexNet의 Convolution layer와 FC layer에 대한 pruning 민감도를 나타냅니다. Convolution layer는 FC layer보다 pruning에 더민감한 하며, 특히 첫 번째 convolution layer가 가장 취약한 것을 볼 수 있습니다. 이는 원래 모델의 layer가 얼마나 over-parameterized 되어있었느냐에 따라 결정되는것으로 판단됩니다. FC layer는 convolution layer에 비하여 압도적으로 많은 파라미터들을 가지고 있기 때문에 pruning에 강건하지만, convolution layer는 비교적으로 민감할 것입니다. 또한 3 채널을 가지는 학습 데이터를 입력으로 받는 첫 번째 convolution layer는 더욱 그러할 것입니다.

 

그림 4. Pruning sensitivity for CONV layer (left) and FC layer (right) of AlexNet

 

3.3 Weight Distribution Before And After Parameter Pruning

Pruning을 수행함에 따라 모델의 각 layer가 가지는 파라미터의 분포 또한 변화합니다. 그림 5.는 AlexNet의 첫 번째 FC layer에 대하여 pruning을 수행하기 전과 후의 파라미터 값을 히스토그램으로 표현한 것입니다. 두 히스토그램은 각각 다른 y축 단위를 가집니다. 원래 모델의 파라미터 값들은 [−0.015, 0.015] 범위에 분포합니다. 하지만 Pruning을 수행을 수행하게 되면 0에 가까운 가운데 범위의 값들이 사라지고, retrain을 하게 되며 나머지 파라미터들의 값이 자리를 잡아가게 됩니다. 이에 따라 모델의 파라미터 값들은 x축을 따라 더욱 넓게 분포하여 [-0.025, 0.025] 사이에 위치하게 됩니다.

그림 5. Weight distribution before and after parameter pruning


4. Conclusion

위 논문에서는 정확도에 대한 영향 없이 neural network의 올바른 connection을 찾을 수 있으며, 연산 비용의 효율성 또한 향상시킬 수 있는 방법론을 제안하였습니다. 또한 이를 AlexNet 과 VGGNet(on ImageNet)을 통하여 실험하였으며, 정확도에 대한 타협 없이 Convolution layer와 FC layer을 각각 9x, 13x 크기로 pruning 가능하다는 것을 살펴보았습니다. 이는 모바일 디바이스와 같이 적은 메모리 용량을 가지거나 real-time 영상처리에서 유용하게 사용될 수 있을 것입니다.


이렇게 Learning both Weights and Connections for Efficient Neural Networks 논문을 살펴보았습니다. 질문이나 지적 사항은 댓글로 남겨주시면 감사하겠습니다.