ECCV2016に採択されたXNOR-Netについての解説.
この論文は畳み込みニューラルネットワークについて,2種類の効率的な近似を提案:
- Binary-Weight-Networks
- XNOR-Networks
Binary-Weight-Networksではフィルタの重みが2値で表現され,XNOR-Networksではフィルタの重みと入力の両方が2値で近似される.
Preliminaries
- :L-layer CNN architecture.
- :入力集合.
- :フィルタの重み集合.
- :との畳み込み操作.
Binary-Weight-Networks
- 実際のCNNの重み を2値フィルタ とscaling factor を用いて推定したい.
- 畳み込み処理は以下のように近似できる
重みを2値で表現することで,以下のメリットがある,
- 畳み込み処理を加算と減算のみで効率的に実装できる.
- 単精度の場合と比べてメモリ使用量を1/32まで効率化できる.
Estimating binary weights
重みの最適な近似を得るために,以下の最適化問題を解く:
なので,は定数になる. もまた定数になり,これをと置くと,目的関数は,以下のようになる.
定数項と正の値を無視すると,の最適解は,
この最適化問題は,
とすることで解ける.つまり .
scaling factor は,をについて微分することで求まる.
まとめると,
- 2値重みフィルタの最適値は重み のsignを取ればよく,
- scaling factor の最適値は重み の絶対値の平均を取ればよい.
Training Binary-Weights-Networks
Alg. 1にBinary-Weight-Networksの学習アルゴリズムを示す.
XNOR-Networks
フィルタの重みだけでなく入力の2値化も実現するため,以下を定義する.
- Binary Dot Product
- Binary Convolution
- Binary Gradient
Binary Dot Product
間のドット積を近似したい. つまり,.目的の近似を達成するため,以下の最適化問題を解く.
,,とすると,
最適値は,
Binary Convolution
入力とフィルタの重みを2値化した際のConvolutionの近似をFig. 2に示す. scaling factorが得られたとき,ととの間に定義される畳み込みは,
はXNORとbitcountを用いた畳み込み操作を意味する.Fig. 2から,バイナリ演算に比べて非バイナリ演算は非常に少ないことがわかる.
Binary Gradient
- Forwardパスと同様に,Backwardパスにおける入力に対応する勾配 も2値化することができる.
Experimental Results
- Double precisionのモデルと比べて,大幅な省メモリ化を達成できていることがわかる.
- Full Precisionのモデルと比較しても,十分良い分類性能を達成できていることがわかる.
References
- Rastegari, Mohammad, et al. "Xnor-net: Imagenet classification using binary convolutional neural networks." European Conference on Computer Vision. Springer, Cham, 2016.