딥러닝 경량화 기법 pruning은 무엇이고 왜 등장했는가
0. weighted sum model
원소들에 어떤 가중치들을 곱하여 선형결합을 한 형태
원소들의 가중평균
decision theory에서 무언가를 결정하고자 할 때 중요한 요소는 가중치를 크게 부여하고
덜 중요한 요소는 가중치를 적게 부여한다는 것에서 의미를 가짐
neural network에서 학습에 중요한 parameter도 있고 중요하지 않은 parameter도 있는데
안중요한 parameter를 지우겠다는 pruning의 핵심 원리와도 일맥상통
cross entropy도 일종의 weighted sum이다.
1. motivation
태어날 때 50조개의 neuron이 있는데 1년 뒤에는 1000조개의 neuron이 있다고함
이제 어른이 되면서 자주 쓰는 neuron은 보존하면서 자주 쓰지 않는 neuron은 없어지면서 500조개로 줄어든다고함
비슷한 원리로 막 설계한 machine learning model을 training하면서 complexity를 늘려가는데
자주쓰는 parameter는 살리고 자주 쓰지 않는 parameter는 제거
중요한 parameter는 살리고 중요하지 않은 parameter는 제거하는 기법
neural network뿐만 아니라 decision tree에서도 주로 사용해왔다
2. pruning을 왜 하는가?
network의 parameter를 잘라내니까 복잡도가 감소함
복잡도가 감소하면서 inference speed가 증가함
세밀하고 복잡하게 튜닝된 network를 덜 복잡하게 만들어 일반화시키는 regularization효과를 얻음
반대로 parameter를 잘라내면서 정보가 손실
어떻게 pruning을 하느냐에 따라 hardware에 올려 optimization을 할 때 까다로워질 수 있다고 함
보통 sparse하게 tensor를 만들면 까다로워진다고 함
3. optimal brain damage
30년전 1989년에 이미 ‘by removing unimportant weight from a network, several improvements can be expected: better generalization, fewer training examples required, and improved speed of learning and/or classification’라고 언급하여 pruning 개념이 등장했음
4. pruning의 효과
pruning 전에 weight value 분포가 0 주변에 상당히 많이 위치했는데
pruning을 하면 오른쪽 weight value 분포로 변하면서 0 주변의 weight들이 상당히 많이 없어짐
어느정도냐면 오른쪽 그래프를 왼쪽으로 옮겨보면 빨간색 선으로 1/10 수준
왼쪽이 pruning 전, 오른쪽은 pruning 후
scale이 달라서 scale을 맞추면 오른쪽 그래프는 왼쪽의 빨간선에 맞춰짐…
pruning을 하면 0 주변의 weight를 거의 대부분 없앤다는 사실을 알 수 있다
왜 그러냐면 network의 forward pass중에 0 주변의 weight는 중요하게 영향을 끼치지 않으니까 없앤다는 것이다.
5. pruning과 dropout의 차이
두 기법 모두 weight를 제거한다는 점, regularization 효과를 얻는다는 점에서 비슷하다
그렇다면 둘의 차이점은? pruning같은 경우는 한번 제거한 weight는 영원히 제거한다.
inference time에도 제거한 weight를 더 이상 복원하지 않음
dropout은 regularization이 목적이고 epoch 돌아가면서 꺼진 weight는 다시 켜질수 있고 추후 inference time에는 모든 weight를 다 키고 inference를 수행함
(최근에 수능영어모델링 하면서 배우긴했지만 꼭 그럴 필요는 없더라..)
dropout같은 경우는 training epoch이 돌아가면서 weight를 랜덤하게 끄고 켤때마다 서로 다른 모델들의 앙상블 효과를 얻는다는 설명도 있다
dropout으로 랜덤하게 weight를 끄고 켠 subnetwork들이 오른쪽
training중 오른쪽의 subnetwork를 전부 학습하게되고 마지막 inference time에 왼쪽의 전부 합쳐진 network로 수행
'딥러닝 > light weight modeling' 카테고리의 다른 글
pruning을 하는 여러가지 방법들 (0) | 2022.11.12 |
---|---|
pruning 기본 알고리즘, regularization과의 연관성 알아보기 (0) | 2022.11.09 |
CPU,GPU,TPU,.... 여러가지 processing unit 알아보기 (0) | 2022.11.07 |
컴퓨터 과학에서 말하는 compression의 개념 (0) | 2022.11.06 |
경량화 모델하면 가장 먼저 떠오르는 MobileNetV1의 핵심 아이디어 (0) | 2022.11.05 |