LeapMind BLOG

社内勉強会シリーズ第1回  2016年9月15日

DorefaNet[1]についての紹介をします。
本論文はDeep learningの学習、予測を高速化するのが目的です。
本論文以前には似たものとしてBinarized Neural Networks[2], XNOR-Net[3]などがあります。
これらの基本戦略として、一般的なニューラルネットワークは内部で実数(数値計算上はfloat32, float64などの浮動小数)を扱っていますが、その浮動少数計算の一部を1-bitの計算に置き換える事により高速化を図るというものです。
これらの先行研究が、1-bit限定だったのに対し、DorefaNetはk-bit(kは任意の整数)を扱えるような構成方法になっているのが特徴です。 #1

本論文では
1.精度を失わない効率的なビット化はどういうものか?
2.ビット化をしたときにどうやって学習を行うのか?
上記の2点について著者が提案をしています。

実験ではAlexNet[4]を使用しています。
k-bitにする方法をいくつか変化させて、その精度がどうなったかを調べています。
特に著者たちがアピールしているのは、Weight 1bit, Unit 4bit, Gradient 32bit での top1の精度が0.53になったという事です。 #2
この精度は他の先行研究([1],[2])の結果を上回っています。
ちなみにもともとの全てがfloatのときの精度は0.56です。
ウェイトが1bitなのでモデルの保存やロードをするときにも便利です。

著者らも認めていますが、DorefaNETの現状での課題は現行のCPU、GPUはDorefaNetの使用に即していないという事です。
どういう事かというと、単純にはk-bitの掛け算はfloatの掛け算よりも計算量が少ないのでその分速くなるはずですが、
floatの掛け算に対しては多くの場合CPU、GPUに浮動少数点演算専用の装置(FPU)が入っているので、計算量に比べて比較的高速に処理できるのに対し、
k-bitの掛け算はそれ専用の装置がないので計算量の違いがそのまま速度の違いにはならないという事です。
FPGAでの実装においてどれだけのパフォーマンスがでるのかが筆者の興味のあるところです。

-------------------------------------------------------
[1] DoReFa-Net: Training Low Bitwidth Convolutional Neural Networks with Low Bitwidth Gradients
Shuchang Zhou, Yuxin Wu, Zekun Ni, Xinyu Zhou, He Wen, Yuheng Zou
https://arxiv.org/pdf/1606.06160v2.pdf
[2] Binarized Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1
Matthieu Courbariaux, Itay Hubara, Daniel Soudry, Ran El-Yaniv, Yoshua Bengio
[3] XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks
Mohammad Rastegari, Vicente Ordonez, Joseph Redmon, Ali Farhadi
[4] ImageNet Classification with Deep Convolutional Neural Networks
Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton
-------------------------------------------------------
#1
実際には浮動小数点演算も入ってはいるのですが、それは一部で Deeplearnigの学習、予測の大部分は行列、ベクトルの掛け算であり、その部分はすべてビット化できています。
#2
- ウェイトの初期化方法
- 入力レイヤはビット化しない
など特別のチューニングを行っています。
-------------------------------------------------------

                                                       小川 兼司(博士)

Back to Index