[논문분석] XNOR-NET
논문링크: XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks
한줄요약 ✔
- XNOR Net이란 Weight과 input에 대한 binarization 수행을 통해 Convolutions 연산을 binary operations으로 대체하여 58배 빠른 합성곱 연산 속도와 32배 memory saving 효과를 거둔 네트워크이다.
- 최초로 ImageNet 분류 평가 진행
- CPU 사용
- Binarized Neural Network 2016과 비교해서 input도 binary 표현한다는 점에서 차이
Introduction 🙌
BinaryNet은 binarized weights와 binarized activations을 활용한 BinaryConnect
를 출시한다.
하지만, BinaryConnect
는 small dataset에 대해서만 SOTA 성능을 달성하고 large dataset에는 낮은 정확성을 보여줬다.
해당 논문에서 제안된 XNOR NET은 네트워크 구조 및 binarization method 자체를 변경하여 대규모 데이터셋에도 좋은 성능을 보인다.
Definition ✏
`Given` a pre-trained FP32 model
`Returns` a (mixed-)binarized model
`Preserving` the accuracy of the original model with higher inference speed
Proposed Method 🧿
XNOR 연산
Binary 값들로 표현된 행렬 간의 합성곱 연산은 간단하게 XNOR 연산으로 구할 수 있다.
XNOR 연산에는 행렬 곱셈이 수반되지 않아서 Cost가 훨씬 절약된다.
XNOR Net
XNOR-Net은 input과 weights에 대하여 binarization을 수행하는 네트워크이다.
\[X^TW\approx \beta H^T \alpha B\] \[(H=binarized input_X,\ B = binarized W,\ \alpha= scale factor for W,\ \beta=scale factor for X)\]상기 식에서 \(X^TW\)는 hidden nodes를 구하는 순전파 과정을 나타낸다.
\(\alpha^*,H^*,\beta^*,B^*=argmin_{\alpha,H,\beta,B}\|X\odot W-\beta \alpha H \odot B\|\).
argmin
을 취하여 실제값(\(X\odot W\))과 예측값(\(\beta \alpha H \odot B\))의 차이가 최소가 되는 피라미터들을 구할 수 있을 것이다.
실제 계산은 \(\|\cdot\|\)을 미분한 값을 0이 되게 만드는 피라미터들을 구하면 된다.
근데 합성곱은 겹쳐지는 부분에서 중복 연산이 많이 발생하기 때문에, channel wise 정보들의 평균값을 scale factors로 활용한다.
\(\alpha^* \beta^*=(\frac{\|X\|_{l1}}{n})(\frac{\|W\|_{l1}}{n})\).
\(H^*\odot B^*=sign(X) \odot sign(W)\).
Modified Block Order
Binary Activiation 이후 binary input 만들어지는데, 그 값들이 maxpool에 들어가면 output이 대부분 1이 된다.
하여 block 순서를 뒤틀어 convolution 이후 non-binary 값을 maxpool의 입력으로 넣어주면 정보를 많이 아낄 수 있다.
댓글남기기