StrassenNets: Deep Learning with a Multiplication Budget
Multiplication Budget을 통한 딥러닝 학습법이다. 인용수가 많지 않고 국내 리뷰가 별로 없어서 읽기 좀 힘들었는데, 내용이 흥미로울 것 같아 읽어봤다.
논문 링크 : https://arxiv.org/pdf/1712.03942.pdf
Abstract
심층 신경망(DNN)을 평가하는 데 필요한 산술 연산의 많은 부분은 Conv와 FC 계층 모두에서 행렬 곱셈으로 구성된다. 우리는 행렬 곱셈을 2계층 sum-product networks(SPN)로 캐스팅하고 데이터에서 (삼항) 에지 가중치를 학습하여 DNN 계층에서 행렬 곱셈의 저비용 근사치를 종단간 학습한다. SPN은 곱셈 및 추가 작업의 분리를 해제하고 곱셈 작업의 수에 budget을 부과할 수 있도록 지원합니다. 우리의 방법을 knowledge distillation(지식 증류)와 결합하여 이미지 분류 DNN(ImageNet) 및 언어 모델링 DNN(LSTM)에 적용함으로써, 우리는 완전 정밀 모델의 예측 성능을 유지하면서 곱셈 횟수의 첫 번째 감소(99.5% 이상)를 얻는다. 마지막으로, 제안된 프레임워크가 8이 아닌 7개의 곱셈만을 사용하여 2×2 행렬을 곱하는 방법을 배우면서 Strassen’s 행렬 곱셈 알고리듬을 재발견할 수 있음을 보여준다.
1. Introduction
(중략)
.... 우리는 추론을 위해 DNN에서 사용하는 곱셈의 수를 대폭 줄이는 새로운 프레임워크를 제안한다. 특히, 모든 DNN 계층에 대해, 우리는 2계층 sum-product networks(SPN) (산술 회로) 로서의 활성화와 함께 가중치 매트릭스의 곱셈을 캐스팅했다. SPN은 Strassen’s 알고리즘과 유사한 방식으로 곱셈과 덧셈을 분리한다. 따라서 SPN의 숨겨진 단위 수는 해당 DNN 계층의 곱셈 예산을 결정한다.
그런 다음 우리는 예비 {-1, 0, 1} 행렬로 인코딩된 SPN의 에지를 학습하여 데이터로부터 모든 계층에 대한 추가 및 곱셈 연산을 학습한다. SPN에 의해 실현된 변환은 DNN에서 활성화 텐서의 가중치 행렬과 분포에 근사하고 적응하므로, 이를 통해 Strassen’s 알고리즘이나 보다 전문화된 Winograd 필터 기반 컨볼루션과 같은 수작업으로 설계된 변환보다 곱셈의 수를 훨씬 더 크게 줄일 수 있다. 요약하면, 우리의 주요 기여는 다음과 같습니다.
- DNN 계층에서 산술 연산을 위한 빠른 근사 변환의 확률적 그레이디언트 기반 종단 간 학습을 위한 SPN 기반 프레임워크를 제안한다.
- 우리의 프레임워크는 추론 시간에 사용되는 곱셈 및 추가 횟수에 대한 세분화된 제어를 가능하게 하여 DNN 모델의 산술 복잡성과 정확도 사이의 절충을 정밀하게 조정할 수 있다.
- CIFAR-10 및 ImageNet에 대한 광범위한 평가는 ResNet에 적용된 우리의 방법이 기존 복잡성 감소 방법과 동일하거나 더 높은 정확도를 산출하는 동시에 곱셈을 상당히 적게 사용한다는 것을 보여준다. 예를 들어 ResNet18의 경우, 우리의 방법은 곱셈 횟수를 99.63% 줄이는 동시에 ImageNet의 완전 정밀 모델에 비해 최고 2.0%의 정확도 저하를 일으킨다.
- 컨볼루션 및 LSTM 계층이 있는 언어 모델에 적용된 우리의 방법은 복잡도에서 불과 3.3% 증가를 유도하면서 곱셈을 99.69% 감소시킨다.
- 우리의 방법을 지식 증류 기법과 결합하여, 우리는 이미지 분류와 언어 모델링 모두에 대해 완전 정밀 모델의 예측 성능을 유지하면서 곱셈 수(99.5% 이상)를 처음으로 대규모로 감소시킨다.
- 우리는 제안된 프레임워크가 Strassen’s 알고리즐을 재발견할 수 있음을 보여준다. 즉, 8이 아닌 7개의 곱셈만을 사용하여 2×2 행렬을 곱하는 방법을 (정확히) 배울 수 있다.
이전 방법과 비교하여 이득을 얻는 우리의 접근 방식의 두 가지 주요 측면은 우리의 방법은 (i) 곱셈의 수를 줄이도록 특별히 조정된 반면, 일부 이전 연구는 모델 크기 축소에 더 중점을 두고 있으며, (ii) 우리는 우리의 결과를 더욱 향상 시키는 지식 증류를 활용한다.
strassen’s matrix multiplication 슈트라센 행렬 곱셈
- 원래 그냥 정방행렬 곱셈은 O(n3)인데, 이 방법을 쓰면 O(n2.81)
1.1. Related work
우리는 메모리 풋프린트가 아닌 계산 복잡성을 줄이는 방법에 중점을 두고 DNN을 압축하기 위한 가장 일반적인 접근 방식을 간략하게 검토한다. 모든 경우에서, 압축 모델의 추론 정확도의 복잡도 감소와 감소 사이에 절충이 있다.
DNN, 특히 컨볼루션 신경망(CNN)의 속도를 높이는 인기 있는 방법은 스퀴즈넷(Iandola et al., 2016), MobileNet(Howard et al., 2017), ShuffleNet(Zang et al., 2017)과 같은 리소스 효율적인 아키텍처를 활용하는 것이다. 스퀴즈넷은 컨볼루션 커널 크기를 줄인다.
MobileNet과 ShuffleNet은 각각 깊이별로 분리 가능한 컨볼루션과 그룹화된 컨볼루션에 의존한다.
CNN을 가속화하기 위한 또 다른 전략은 가중치 매트릭스와 컨볼루션 커널에 널리 퍼져 있는 낮은 순위 구조를 활용하는 것이다. 사전 훈련된 가중치 매트릭스와 필터 텐서의 근사치를 구한 다음, 압축 모델의 정확도를 복원하기 위해 근사 가중치 매트릭스와 필터를 미세 조정한다.
다른 논문들은 필터 텐서의 순위를 더욱 낮추기 위해 낮은 순위 촉진 정규화(regularizers)를 사용한다.
필터의 희소화와 프루닝 채널은 추론 중에 DNN을 더 효율적으로 만드는 인기 있는 방법이다. 그룹 규범 기반 정규화에 의존하며 중요하지 않은 필터와 채널에 불이익을 주는 효과를 보여준다. 하드웨어 친화적인 필터 모양을 촉진하고, 네트워크 깊이를 정규화하고, 필터 수용 필드를 최적화합니다.
마지막으로, DNN을 리소스 제약 플랫폼에 적응시키는 효과적인 방법은 가중치 및 활성화의 수치 정밀도를 줄이는 것이다. 가중치와 활성화를 모두 정량화하는 DNN의 예는 DoReFa-Net이다. XNOR-Net (Rastegari et al., 2016), ABC-Net (Lin et al., 2017). 다른 작업들은 이진 가중치와 삼항 가중치를 사용하지만 활성화를 위한 완전 정밀도 값은 유지한다. 활성화를 정량화하는 대신 완전히 정밀하게 유지하면 계산 비용이 더 적게 감소하지만 예측 성능이 더 향상될 수 있다.
2. Learning Fast Matrix ultiplications via SPNs
2.1. Casting matrix multiplication as SPN
제곱 행렬 A, B이 주어지면, C = AB는 2단 SPN으로 표현될 수 있습니다.
SPN(sum-product networks)이 뭐냐..
번역기를 돌리면 총생산망인데(....) 당연히 이건 아니고 좀 억지긴 하지만 합-곱망이 적당하다.