[Github]
[arXiv](Current version v2)
Abstract
낮은 비트폭 양자화에서 2차 최적화를 통해 Layer-wise quantization을 가능하게 함
Loss landscape of quantized DNNs
M비트, quantization step size ∆를 고려한 양자화:
Step size ∆를 통해 x의 범위를 [-c, c]로 제한함:
ReLU 활성화의 출력일 경우:
이 논문에서 ∆는 값으로도 쓰이고 양자하 된 인스턴스에 대한 표시라고 해야 하나 암튼 그런 개념으로도 쓰이고 미분에서 원래의 용도로도 쓰인다. 좀 헷갈림...
Separable optimization
손실함수 L은 변수 세트 v(weights, activations, etc.)에 의존하며, 양자화 노이즈를 벡터 ε으로 처리하여 테일러 전개:
ε2이 충분히 작을 경우 다음과 같이 독립적인 프로세스의 합으로 나타낼 수 있고
클 경우 서로 다른 레이어 간의 상호작용을 고려하여야 한다.
Curvature
손실 함수의 곡률을 측정.
각 양자화된 레이어의 손실을 L(∆i)라고 할 때, 모든 레이어에 대한 hessian matrix 계산:
Gaussian curvature로 곡률 측정:
공격적인 양자화를 사용할수록 거친 곡률을 가진다.
또한 인접한 레이어들 간에 더 높은 곡률을 가지는 것을 보면 더 높은 종속성을 가지는 것을 알 수 있다.
거친 곡률을 가진 2비트 양자화는 ∆값에 큰 영향을 많이 받는다. (2비트 뒤에 4비트 있어요)
Loss Aware Post-training Quantization (LAPQ)
레이어 간의 분리 불가능성을 해결하기 위한 3가지 단계
- 손실을 최소화하는 ∆p 찾기
- 2차 보간으로 근사
- 피라미터 최적화
Layer-wise optimization
각 레이어에서 최적화를 수행해 최적과 근사한 p(레이어마다 다름)를 얻는다.
Quadratic approximation
최적 ∆* 근처의 ∆에 대해 테일러 전개:
이미 로컬 최적인 1차 항과 사소한 고차항 제거
계산으로 얻은 최적값 ∆p*은 공동 최적화 알고리즘의 시작점이 됨.
Joint optimization
낮은 비트폭 양자화에서는 사소한 오차도 성능 저하로 이어진다. 따라서 더욱더 최적화하기 위해 gradient-free joint optimization의 반복 알고리즘 사용.
검색 방향 집합 D = {d1, d2, . . . , dN}이 주어지면 새 위치는 탐색 방향의 선형 조합으로 표현되고
첫 탐색 방향은 제거, 업데이트된 위치를 기반으로 새로운 탐색 방향 추가하는 방법을 반복한다.