|
|
1번째 줄: |
1번째 줄: |
| 가지치기(영어: Pruning)는 딥 러닝에서 신경망의 불필요한 파라미터(가중치나 뉴런 연결)를 제거하여 모델의 크기를 줄이고 연산 효율을 높이는 기법이다. 이는 나무의 불필요한 가지를 잘라내는 원예 작업에서 유래한 용어로, 신경망의 성능은 유지하면서도 경량화를 달성하기 위해 사용된다.
| | #넘겨주기 [[신경망 가지치기]] |
| ==개요==
| |
| *딥 러닝 모델은 수백만~수십억 개의 파라미터를 가지며, 이 중 일부는 학습 결과에 크게 기여하지 않는다.
| |
| *가지치기는 중요도가 낮은 파라미터를 제거하여, 계산량(MACs, FLOPs)을 줄이고 메모리 사용량을 절감한다.
| |
| *모델 압축, 지연 시간(latency) 단축, 에너지 절약 등을 위해 활용된다.
| |
| ==방법==
| |
| 가지치기(pruning)는 크게 두 가지 측면에서 분류할 수 있다.
| |
| *'''평가기준(criteria)''' : 어떤 가중치를 제거할지 결정하는 기준
| |
| *'''적용 형태(method)''' : 실제로 어떤 단위로 가지치기를 적용할지에 대한 방식
| |
| ===평가기준===
| |
| 가중치의 중요도를 평가하는 기준에 따라 다음과 같은 방식이 있다.*'''가중치 크기 기반 (Magnitude pruning)'''
| |
| **원리: 가중치의 절댓값이 임계치보다 작은 경우 중요하지 않다고 보고 제거한다.
| |
| **장점: 단순하고 구현이 쉽다.
| |
| **단점: 입력의 중요도를 반영하지 못하여 성능 저하 위험이 있다.
| |
| | |
| *'''기울기 기반 (Gradient pruning)'''
| |
| **원리: 학습 시 기울기가 작은 파라미터를 제거한다.
| |
| **장점: 학습 동역학을 고려할 수 있어 정교하다.
| |
| **단점: 시점과 데이터 분포에 따라 불안정할 수 있으며 계산량이 증가한다.
| |
| | |
| *'''헤세 행렬 기반 (Hessian pruning)'''
| |
| **원리: 손실 함수의 2차 미분(헤세 행렬)을 통해 손실 변화가 작은 파라미터를 제거한다.
| |
| **장점: 이론적으로 손실에 미치는 영향을 근사할 수 있다.
| |
| **단점: 대규모 신경망에서는 계산 비용이 매우 크다.
| |
| | |
| *'''학습 손실 변화 기반 (Training loss change pruning)'''
| |
| **원리: 특정 파라미터를 제거했을 때 학습 손실의 변화를 직접 평가한다.
| |
| **장점: 성능 저하를 최소화할 수 있다.
| |
| **단점: 계산량이 매우 크며, 대규모 데이터셋에서는 적용이 어렵다.
| |
| ===적용 형태===
| |
| 평가기준을 통해 중요도가 낮다고 판단된 파라미터를 실제로 어떤 단위로 제거할지에 따라 다음과 같이 구분된다.
| |
| *'''비구조적 가지치기 (Unstructured pruning)'''
| |
| **원리: 개별 가중치를 독립적으로 제거한다.
| |
| **장점: 매우 높은 희소성(sparsity)을 달성할 수 있다.
| |
| **단점: 메모리는 절약되지만, 하드웨어 가속기(GPU, NPU 등)에서 병렬화 최적화가 어렵다.
| |
| | |
| *'''구조적 가지치기 (Structured pruning)'''
| |
| **원리: 뉴런, 채널, 필터, 또는 레이어 단위로 제거한다.
| |
| **장점: 하드웨어에서 효율적인 실행이 가능하다.
| |
| **단점: 모델 구조 자체가 변하므로, 정확도 유지가 더 어렵거나 재설계가 필요할 수 있다.
| |
| ==가지치기의 일반적인 장단점==
| |
| *'''장점'''
| |
| **모델 크기 감소 및 저장 공간 절약
| |
| **추론 속도 향상, 지연 시간 단축
| |
| **저전력 디바이스(모바일, IoT)에서 실행 가능
| |
| *'''단점'''
| |
| **잘못 가지치기하면 정확도가 크게 하락할 수 있음
| |
| **재학습(fine-tuning)이 필요한 경우가 많음
| |
| **최적의 가지치기 기준을 찾는 것이 어렵다
| |
| ==관련 기법==
| |
| *[[양자화 (딥 러닝)]] : 파라미터를 저비트 정밀도로 변환하여 모델 크기를 줄임
| |
| *[[지식 증류]] : 큰 모델의 지식을 작은 모델로 전이
| |
| *[[희소 데이터]] : 가지치기 결과 모델은 희소 행렬 형태가 되므로 관련 알고리즘과 밀접한 연관
| |
| *[[모델 압축]]
| |
| ==응용==
| |
| *모바일 및 임베디드 장치에서의 경량 신경망
| |
| *대규모 언어 모델(LLM) 경량화
| |
| *에너지 효율적 인공지능 시스템 설계
| |
| ==같이 보기==
| |
| *[[모델 압축]]
| |
| *[[양자화 (딥 러닝)]]
| |
| *[[지식 증류]]
| |
| *[[희소 데이터]]
| |
| ==참고 문헌==
| |
| *Song Han, Jeff Pool, John Tran, William J. Dally. ''Learning both Weights and Connections for Efficient Neural Networks''. NeurIPS 2015.
| |
| *Molchanov, P., et al. ''Pruning Convolutional Neural Networks for Resource Efficient Transfer Learning''. ICLR 2017.
| |
| ==각주==
| |
| <references />
| |
| [[분류:인공지능]]
| |
| [[분류:딥 러닝]]
| |