Pruning vs Dropout?
- 추론 중에 Dropout은 가중치가 복원되지만, Pruning은 복원되지 않음.
Unstructured Pruning
- Network Optimization Technique 중 하나 (크기나 중요성에 따라 각각의 가중치를 제거하는 기술)
- 네트워크에서 낮은 크기의 가중치를 0으로 설정하는 것으로 일부 연결을 끄고 그 효과를 무시하는 것과 같음
- 개별 가중치 요소들을 선택적으로 0으로 설정 (제거)하여 sparse 매트릭스(행렬)을 만드는 방식
- 모델의 전반적인 아키텍처 (레이어 크기)는 바뀌지 않고, 단지 가중치 행렬 내에 0이 많이 삽입되어 희소 행렬(sparse matrcis)로 변할 뿐
- 입력과 가중치 행렬의 출력 모양을 변경하는 결과를 낳음
- 전체 뉴런이나 필터의 구성을 제거하는 structured pruning과는 다르게 unstructured pruning은 각각의 weight 파라미터를 타겟으로 함 (sparse weight matrics → 희소 가중치 행렬)
Unstructured Pruning의 경우 신경망 네트워크 상에서 낮은 크기의 가중치를 0으로 설정해서 가중치를 제거하는 효과를 보이기 때문에, 전체 네트워크 구조를 덜어내거나 변경하지 않아도 다른 layer들이나 architecture들 사이에서 적용이 가능하기 때문에 낮은 크기의 가중치를 찾기 위한 오랜 시간이 걸리고 보다 미미한 Pruning 효과가 있을 수 있겠지만,
네트워크 구조의 일부를 아주 덜어내는 Structured Pruning 에 대비하여 비교적 성능저하가 적을 것이라는 것을 유추할 수 있음
Structured Pruning
- 신경망의 전체 구조적인 요소 (뉴런, 필터, 채널 등)을 제거함
- 중요도가 낮은 전체 구조를 골라 내 제거함 (ex. Transformer 구조라면 중요도가 낮은 Attention Head를 아예 제거하는 방식)
- 모델의 크기와 연산량을 줄이면서 성능을 유지하는 것이 목표
- 실제 추론 속도 향상에 큰 도움이 됨
- 일반적인 딥러닝 프레임워크와 호환성이 좋음
Method
- Filter Pruning : CNN에서 중요도가 낮은 전체 필터를 제거
- Channel Pruning : CNN에서 덜 중요한 전체 채널을 제거
- Block / Layer Pruning : 유전 알고리즘을 사용하여 전체 블록이나 층을 삭제
- Pruning 후 모델의 성능을 회복하기 위해 fine-tuning이 필요할 수 있음
- 과한 Pruning은 모델의 성능을 저하시킬 수 있으므로, 적절한 압축율을 찾는 것이 중요
Pruning 연구 동향
- Pre-trained 된 언어 모델의 파인 튜닝 과정에서 가중치 중요도를 학습하여 제거하는 방식 적용
- Movement Pruning : first-order (1차 미분) 정보를 활용해 파인튜닝 중 가중치 값이 줄어드는 방향으로 변화하는 경우 해당 가중치를 제거
- Movement Pruning 기법은 Knowledge Distillation 과 결합하여 성능을 더욱 향상시킴
- 가중치의 변화 방향을 기반으로 중요도를 판다하는 기법 (Magnitude Pruning과 달리 가중치의 절대값 크기가 아닌 훈련 중 변화 추세를 고려)
'후기 및 회고💦' 카테고리의 다른 글
[가짜연구소] 10기 러너 시작! 🔥 (2) | 2025.03.07 |
---|---|
조금 늦은 감이 있지만 2024년 회고록 (2) | 2025.02.02 |
2024 서울 프롬프톤 후기 및 회고 (12) | 2024.09.08 |
[GDG] Build with AI United 2024 후기 (0) | 2024.05.13 |
포스코 청년 IT 전문가 아카데미 8기 면접 후기 (10) | 2024.04.22 |