iterative pruning의 여러가지 변형 버전 알아보기

1. iterative pruning

 

pruning을 한번에 너무 많이 하여 많은 weight를 한번에 제거하고 retraining을 하면 정확도가 회복이 안된다는 사실이 알려짐

 

그래서 pruning을 조금씩 하고 retraining하고 다시 조금씩 하고 retraining하는 iterative pruning을 수행함

 

 

iterative pruning을 하는 이유는 조금씩 제거해야 retraining으로 정확도가 회복이 되니까

 

 

2. iterative pruning 알고리즘1

 

network의 weight parameter와 모든 원소가 1로 가득찬 mask를 초기화하고

 

mask를 먼저 씌우네 근데 1로 가득찬 초기 mask는 씌우나 마나니까

 

network를 train한다

 

적절한 pruning을 통해 mask를 업데이트

 

pruning하고 나서 validation accuracy가 미리 정한 maximum loss factor와

 

pruning하기 전 validation accuracy의 곱보다 작거나 같을 때까지 위 과정을 반복

 

a' ≥ ka 여야하는거 아니냐 생각이 들었는데…

 

pruning을 하면서 pruning network의 accuracy a'은 분명 점점 떨어질거임

 

ka를 하면 애초에 k가 0과 1 사이니까 pruning을 굳이 하지 않아도 a' ≥ ka 은 그냥 성립한다고 보면 됨

 

pruning을 하면서 최초로 a'이 ka보다 작거나 같을때까지 pruning을 수행하겠다

 

loss factor라는 것이 accuracy loss를 어디까지 손해보겠냐는 의미를 담는다고 보면 됨

 

iterative pruning algorithm 첫번째

 

근데 얘는 dropnet의 알고리즘임...

 

 

3. iterative pruning 알고리즘2

 

neural network의 parameter를 먼저 초기화하고 1로 가득찬 mask도 초기화 생성

 

j iteration으로 training하여 parameter를 update

 

이 중에서 s%의 parameter를 지우겠다고 s를 정의하고 그에 따라 mask를 업데이트

 

지우지 않은 network parameter를 첫단계에 initialization했던 parameter로 reset하고

 

새로 만든 mask를 씌운뒤(물론 새로 만든 mask가 지우는 부분은 이미 지워진걸로 생각하니까 의미는 없을듯?)

 

위 과정을 충분히 원하는 pruning network를 얻을 때까지 다시 반복

 

이 알고리즘의 핵심은 mask로 지우고 남은 parameter를 다시 reset한다음에 training을 한다는 점?

 

training해놨더니 마스크 씌우고 다시 reset시키는게 재밌네

 

iterative pruning reset 알고리즘

 

 

mask로 지우고 남은 부분을 reset한다음에 retrain을 한다는 점

 

 

4. iterative pruning 알고리즘3

 

위와 똑같이 network의 parameter를 initialize 하고 1로 가득찬 mask를 생성하는데

 

j iteration으로 network를 training하여 parameter를 업데이트하고

 

s%의 parameter를 지우겠다고 정의하여 mask를 새로 업데이트

 

그 다음에 mask를 새로 씌우고 충분히 원하는 pruning network를 얻기까지 retraining을 함

 

그리고 나서 mask가 씌우지 않은 weight를 처음에 initialization했던 parameter로 reset한다는데 왜???? 어이없네

 

iterative pruning 알고리즘 3번째

 

논문을 찾아보니까 The difference between these two strategies is that, after each round of pruning, Strategy 2 retrains using the already-trained weights, whereas Strategy 1 resets the network weights back to their initial values before retraining. In both cases, after the network has been sufficiently pruned, its weights are reset back to the original initializations. 이렇게 언급하고 있는데

 

두 케이스 모두 충분히 pruning하면 mask로 씌워지지않은 parameter를 첫단계에서 초기화헀던 parameter로 reset시키나봄

 

이게 정확히 iterative pruning을 설명하려고 했다기보다는 lottery ticket을 찾는 방법을 연구하다가 두가지 iterative pruning 전략을 설명한거임 주제가 안맞는것 같다 이거임...

 

lottery ticket을 찾는 것이 목적인데 원하는 task에 사용하려면 reset시킨 상태의 network를 써야하니까 그런것 같다라고 추측이 됨

 

추가로 랜덤하게 reset시키는줄 알았는데 첫단계에 초기화했던 parameter로 초기화임… 왜 이걸 하는지 뒤에 있는 lottery ticket에 나옴

 

아무튼 결론을 요약하자면 pruning을 하는 방법은 상당히 많다… 무엇이 가장 좋은지는 아무도 모른다… 나의 상황에 맞는 여러가지를 시도해보면서 찾아나가야겠죠?

 

 

 

TAGS.

Comments