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를 어디까지 손해보겠냐는 의미를 담는다고 보면 됨
근데 얘는 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시키는게 재밌네
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한다는데 왜???? 어이없네
논문을 찾아보니까 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을 하는 방법은 상당히 많다… 무엇이 가장 좋은지는 아무도 모른다… 나의 상황에 맞는 여러가지를 시도해보면서 찾아나가야겠죠?
'딥러닝 > light weight modeling' 카테고리의 다른 글
딥러닝 경량화의 quantization 개념 소개 (0) | 2024.07.10 |
---|---|
값싼 비용으로 최대 효율을 낼 수 있을까 - lottery ticket hypothesis (0) | 2022.12.31 |
pruning을 하는 여러가지 방법들 (0) | 2022.11.12 |
pruning 기본 알고리즘, regularization과의 연관성 알아보기 (0) | 2022.11.09 |
딥러닝 경량화 기법 pruning은 무엇이고 왜 등장했는가 (0) | 2022.11.09 |