[Review] INCREMENTAL NETWORK QUANTIZATION: TOWARDS LOSSLESS CNNS WITH LOW-PRECISION WEIGHTS, ICLR, 2017
INCREMENTAL NETWORK QUANTIZATION: TOWARDS LOSSLESS CNNS WITH LOW-PRECISION WEIGHTS
Logarithmic-scale quantization
을 이용한 점진적 quantization을 제안한 논문을 간단 리뷰해보겠습니다
재미있는 점은 해당 방법을 이용하면 기존 32bit으로 학습시킨 network의 성능보다 좋은 성능이 나온다는 점입니다
Weight Quantization
\[P_l= \left( ±2^{n_1},\cdots,±2^{n_2} ,0 \right)\]
$P_l$의 값들로 model weight을 quantize하려고 할 때, $n_1$은 다음과 같이 설정한다고 합니다
\[n_1 = floor(log_2(4s/3))\] \[s=max(abs(W_l))\]위 식의 경우, $l-th$ layer에서의 max weight value를 가장 가까운 정수 값으로 quantize하기 위한 식으로 보여집니다
그리고 $n_1$의 값이 결정되고 나면 $n_2$의 값은 다음과 같이 정의된다고 합니다
\[n_2 = n_1+1-2^{b-1}/2\]어떻게 위와 같은 식이 나오게 되었는가 고민을 좀 많이 해보았는데
제가 해석하기로는 다음과 같습니다
우선 논문에서 예시로 든 바와 같이 $b=3,\ n_1=-1,\ n_2=-2$라고 할 때
총 3bit을 이용하여 model quantization을 하려는 것을 의미하며
$P_l=\left(±2^{-1},±2^{-2},0\right)$이 됨을 알 수 있습니다
3bit중에서 1bit은 0에 할당, 그리고 나머지 2bit을 통해 $±2^{-1},±2^{-2}$의 4가지 경우의 수를 표현할 수 있어
$n_2$의 값이 위와 같이 설정된 것으로 판단하였습니다
이렇게 구성된 $P_l$을 이용하여 model weight $W_l(i,j)$를 다음과 같이 quantize 한다고 합니다
\[\hat{W}_l(i,j)= \begin{cases} {\beta sgn(W_l(i,j))} & if\;(\alpha+\beta)/2 ≤ abs(W_l(i,j)) <3\beta/2 \newline {0} & otherwise \end{cases}\]
Incremental Quantization Strategy
논문의 저자들은 pruning과 같이, lossless network quantization을 위해서는 추가적인 training이 필요하다고 얘기합니다
따라서 저자들이 제안하는 Incremental Network Quantization (INQ)는 다음의 세 가지 step을 거친다고 합니다
- Weight partition : group for quantization and re-train
- Group-wise quantization
- Re-training
Re-train을 위한 group에 대해 re-train을 거친 뒤, 해당 그룹에서 다시 1-3 의 과정인 partitioning & re-train을 계속 진행함으로써
최종적으로 모든 weight이 quantization이 되도록 하게 만든다고 합니다
그렇다면 어떤 기준으로 partition을 나누느냐 가 관건일 것인데
저자들은 random 방식과 pruning에서 영감을 받은 방식 두 가지를 사용해서 실험을 진행해보았다고 하며
pruning에서 영감을 받은, larger absolute value를 가진 weight을 quantization하는 방식이 성능이 더 좋았다고 합니다
Incremental Network Quantization (INQ) Algorithm
위에서 설명한 바와 같이, quantization하지 않은 group에 대해서는 re-training을 진행하게 되는데
re-train group에 대해서만 training을 진행하기 위해 추가적인 matrix인 $T_l$을 추가로 도입하여
back propagation시 해당 group에만 gradient가 전파되도록 masking하는 역할을 하게됩니다
최종적으로 위와 같은 object function을 만족하도록 학습이 진행되게 됩니다
댓글남기기