
신경망 절단 및 최적화
최신 신경망은 언어, 수학적 추론 및 시각과 같은 다양한 응용 분야에서 놀라운 성능을 달성했습니다. 그러나 이러한 신경망은 종종 많은 계산 리소스를 필요로하는 대규모 구조를 사용합니다. 이로 인해, 휴대용 기기나 스마트폰과 같은 리소스가 제한된 환경에서 이러한 모델을 사용자에게 제공하는 것은 비실용적일 수 있습니다. 사전 훈련된 신경망의 추론 비용을 줄이기 위해 널리 사용되는 접근 방식 중 하나는 가중치 일부를 제거하여 가지고 있는 가중치 중요도에 큰 영향을 주지 않는 방식으로 가지치기(pruning)하는 것입니다. 표준 신경망에서 각 가중치는 두 개의 뉴런 사이의 연결을 정의합니다. 따라서 가중치가 가지치기된 후 입력은 더 작은 연결 세트를 통해 전파되므로 계산 리소스가 적게 필요합니다.
가지치기 방법은 신경망의 훈련 과정의 다양한 단계에서 적용될 수 있습니다: 사후(past), 동안(during), 또는 훈련 이전(before)에 (즉, 가중치 초기화 직후) 적용될 수 있습니다. 이 글에서는 사후 훈련 설정에 초점을 맞추어 사전 훈련된 신경망에서 어떤 가중치를 가지치기해야 하는지를 결정하는 방법에 대해 설명합니다. 가장 인기 있는 방법 중 하나는 최소 크기의 가중치를 제거하는 ‘크기 기반 가지치기(magnitude pruning)’입니다. 이 방법은 효율적이지만, 가중치 제거가 네트워크의 성능에 미치는 영향을 직접 고려하지는 않습니다. 다른 인기 있는 패러다임은 손실 함수에 영향을 주는 정도에 따라 가중치를 제거하는 ‘최적화 기반 가지치기(optimization-based pruning)’입니다. 개념적으로 매력적이지만, 기존의 최적화 기반 접근 방식은 성능과 계산 요구 사항 사이에 심각한 트레이드오프가 있는 것으로 보입니다. 대강의 근사치(예: 대각 헤시안 행렬을 가정함)를 사용하는 방법은 규모가 크게 확장할 수 있지만 성능이 상대적으로 낮습니다. 반면, 더 적은 근사치를 사용하는 방법이 더은 성능을 보이지만 확장성이 훨씬 낮아 보입니다.
2023년 ICML에서 발표된 “Fast as CHITA: Neural Network Pruning with Combinatorial Optimization”에서는 사전 훈련된 신경망을 대규모로 가지치기하기 위해 최적화 기반 접근 방식을 개발한 방법을 설명합니다. CHITA(Combinatorial Hessian-free Iterative Thresholding Algorithm)는 고차원 통계, 조합 최적화 및 신경망 가지치기와 같은 여러 분야의 발전을 활용하여 성능과 확장성 측면에서 기존의 가지치기 방법보다 우수한 성과를 보입니다. 예를 들어, CHITA는 ResNet의 가지치기에 대해 최신 기법보다 20배에서 1000배 더 빠르며, 여러 설정에서 정확도를 10% 이상 향상시킵니다.
CHITA는 인기 있는 방법과 비교하여 두 가지 주목할만한 기술적 개선점이 있습니다:
- 이차 정보의 효율적인 사용: 고차 정보(즉, 2차 도함수와 관련된 정보)를 사용하는 가지치기 방법은 많은 설정에서 최고 수준의 결과를 달성합니다. 문헌에서는 일반적으로 헤시안 행렬 또는 그 역을 계산하여 이 정보를 사용합니다. 그러나 헤시안 크기가 가중치 수에 대해 이차적으로 증가하기 때문에 이 행렬을 계산하거나 저장하는 것은 매우 어렵습니다. CHITA는 명시적으로 헤시안 행렬을 계산하거나 저장하지 않고도 2차 정보를 사용할 수 있도록 신중한 재정립을 통해 두 번째 차 정보를 효율적으로 활용합니다.
- 조합 최적화: 인기 있는 최적화 기반 방법은 일반적으로 각각의 가중치에 대해 독립적으로 가지치기하는 단순한 최적화 기법을 사용합니다. 즉, 특정한 가중치의 가지치기 여부를 결정할 때 다른 가중치들이 이미 가지치기되었는지 여부를 고려하지 않습니다. 이로 인해 독립적으로 중요하지 않다고 여겨진 가중치가른 가중치들이 가지치기될 때 중요해질 수 있습니다. CHITA는 일반적인 최적화 기반 알고리즘을 사용하여 한 가중치의 가지치기가 다른 가중치에 어떻게 영향을 주는지 고려하는 조합 최적화 알고리즘을 사용하여 이 문제를 해결합니다.
아래 절에서는 CHITA의 가지치기 정식과 알고리즘에 대해 설명합니다.
CHITA는 가지치기 후보를 결정하기 위해 최적화 문제로 재정의합니다. 이 문제는 오리지널 네트워크의 가중치 중 일부만 보존하는 가지치기 후보들 중에서 손실이 가장 작은 후보를 선택하는 것입니다.
훈련 과정에서 가지치기 BSS 문제를 해결하는 것은 일반적으로 계산적으로 불가능합니다. 따라서 이전 연구들과 마찬가지로, 우리는 이차 함수로 손실을 근사화하기 위해 이차 테일러 급수를 사용하여 손실을 추정합니다. 이 때 헤시안은 경험적인 피셔 정보 행렬로 추정됩니다. 기울기를 효율적으로 계산할 수 있는 경우가 대부분이지만, 헤시안 행렬을 계산하고 저장하는 것은 그 크기 때문에 매우 비용이 많이 듭니다. 문헌에서는 흔히 헤시안에 제한적인 가정(예: 대각 행렬)과 알고리즘(예: 가중치 독립적인 가지치기)을 사용하여 이 도전에 대처합니다.
CHITA는 기존의 이차 근사화 방법과 달리, 명시적으로 헤시안 행렬을 계산하지 않고도 이 행렬의 모든 정보를 사용할 수 있는 가지치기 문제(BSS와 이차 손실 근사화를 사용한)의 효율적인 재정립을 사용합니다. 이는 경험적인 피셔 정보 행렬의 저랭크 구조를 이용함으로써 가능해집니다. 이 재정립은 각 가중치에 해당하는 회귀 계수로 볼 수 있는 희소 선형 회귀 문제로 볼 수 있습니다. 이 회귀 문제의 해결책을 얻은 후, 0으로 설정된 계수는 가지칠 가중치에 해당합니다. 회귀 데이터 행렬은 (n x p)이며, 여기서 n은 배치(하위 샘플) 크기이고 p는 원래 네트워크의 가중치 수입니다. 일반적으로 n << p이므로 이 데이터 행렬을 저장하고 조작하는 것이 (p x p) 헤시안과 비교하여 더 확장 가능합니다.
CHITA는 다음과 같은 희소성 제약 조건 하에서 가지치기를 선형 회귀 문제로 변환합니다: 최대 k개의 회귀 계수만 0이 아닐 수 있습니다. 이 문제에 대한 해결책을 얻기 위해, 잘 알려진 반복 하드 스레스홀딩(IHT) 알고리즘의 수정 버전을 고려합니다. IHT는 그래디언트 하강을 수행하고 각 업데이트 후 다음 사후 처리 단계에서 Top-k(즉, 절댓값이 가장 큰 k개의 계수) 외의 모든 회귀 계수를 0으로 설정합니다. IHT는 일반적으로 문제에 대한 좋은 해결책을 제공하며, 이를 통해 다양한 가지치기 후보를 탐색하고 가중치를 공동으로 최적화합니다.
문제의 규모 때문에 상수 학습 속도를 사용하는 표준 IHT는 수렴이 매우 느릴 수 있습니다. 더 빠른 수렴을 위해, 우리는 문제 구조를 활용하여 충분한 손실 감소를 이끌어내는 적절한 학습 속도를 찾는 새로운 라인 서치 방법을 개발했습니다. 또한 CHITA의 효율성과 2차 근사화의 품질을 개선하기 위해 여러 계산적인 방법을 사용하여 CHITA++라는 개선된 버전을 개발했습니다.
실험에서는 ResNet과 MobileNet을 포함한 다양한 아키텍처를 사용하여 CHITA의 실행 시간과 정확도를 몇 가지 최신 가지치기 방법과 비교합니다.
- 실행 시간: CHITA는 가중치 독립적인 가지치기 대신 공동 최적화를 수행하는 비슷한 방법들보다 훨씬 확장 가능합니다. 예를 들어, ResNet의 가지치기에서 CHITA의 속도 향상은 1000배 이상일 수 있습니다.
- 가지친 후 정확도: 아래에서는 70%의 모델 가중치를 가지칠 때 CHITA와 CHITA++의 성능을 크기 기반 가지치기(MP), Woodfisher(WF), Combinatorial Brain Surgeon(CBS)와 비교합니다. 전반적으로 CHITA와 CHITA++에서 좋은 성능 개선이 나타납니다.
- ResNet20에서 다양한 방법들의 가지친 후 정확도입니다. 모델 가중치의 70%를 가지칩니다.
- MobileNet에서 다양한 방법들의 가지친 후 정확도입니다. 모델 가중치의 70%를 가지칩니다.
- 다음으로, 더 큰 네트워크인 ResNet50에서 결과를 보고합니다. 여기서 ResNet20 그림에서 나열된 몇 가지 방법들은 확장할 수 없었습니다. 여기서는 크기 기반 가지치기와 M-FAC와 비교합니다. 아래 그림은 다양한 희소성 수준에 대해 CHITA가 더 나은 테스트 정확도를 달성함을 보여줍니다.
- 다양한 방법들을 사용하여 얻은 가지친 네트워크의 테스트 정확도입니다.
결론적으로, 우리는 사전 훈련된 신경망을 가지치기하기 위해 최적화 기반 접근 방식인 CHITA를 제안했습니다. CHITA는 2차 정보를 효율적으로 활용하고 조합 최적화 및 고차원 통계의 아이디어를 활용하여 확장성과 경쟁력 있는 성능을 제공합니다.
CHITA는 어떤 가중치든 제거할 수 있는 비구조적인 가지치기에 대해 설계되었습니다. 이론적으로 비구조적인 가지치기는 계산 요구 사항을 크게 줄일 수 있습니다. 그러나 실제로 이러한 감소를 실현하기 위해서는 희소 계산을 지원하는 특수 소프트웨어(그리고 아마도 하드웨어)가 필요합니다. 반면, 구조화된 가지치기(structured pruning)는 뉴런과 같은 전체 구조를 제거하므로 일반 목적의 소프트웨어와 하드웨어에서 보다 쉽게 개선될 수 있는 장점을 제공할 수 있습니다. CHITA를 구조화된 가지치기에 확장하는 것도 흥미로울 것입니다.
이 작업은 Google과 MIT 사이의 연구 협력 일환입니다. Rahul Mazumder, Natalia Ponomareva, Wenyu Chen, Xiang Meng, Zhe Zhao 및 Sergei Vassilvitskii에게 이 글과 논문 작성에 도움을 주셨습니다. 또한 John Guilyard에게 이 글에서 사용된 그래픽 작성에 감사드립니다.
Discussions (0)
관련 블로그




