Explanation of what is 1bit neural network .
ニューラルネットの1bit化B4 shun sato
View Slide
本日のお話● ニューラルネットとは● ニューラルネットの1bit化● 1bit化のメリット● FPGAによる爆速化
ニューラルネットとは● 人間のシナプス結合を模倣● 掛け算足し算をたくさんやる● 出力と答えの誤差を微分して学習ニューラルネット内の数値表現● 入力 :float32, int32, uint8…● 重み :float32● バイアス :float32● 出力・答え :float32, int32, uint8…シナプス結合ニューラルネット(多層パーセプトロン)
ニューラルネットの1bit化内部の表現をいろいろと1bit化する式:⇢⇢⇢1bit化重み・活性化関数・正則化などが1bit化可能※ここでいう1bitとは{-1, 1}のことです
1bit化のメリット● メモリ大幅削減!float32 ⇢ 1bitでメモリ消費が1/32になる● 計算の単純化 ⇢ 高速化・省電力● FPGAによる爆速化 (次のスライド)1bitの掛け算はXNORと同じ⇢ ALUを使わなくても計算可能足し算もbit countで高速に処理
FPGAによる爆速化FPGA = Field Programmable Gate Array (その場で書き換え可能な集積論理回路)⇠こういうやつ高位合成でプログラムするのが一般的HDLでもプログラム可能LUT(Look up table)を使った高速な計算が可能浮動小数点演算 :速くて40クロックぐらいLUT+FFによる演算 :数クロックLUTで数値を取り出してFFに入力
FPGAの実験⇠ FPGAのみの実験結果ネットワークの大きさはSFC手元でSFCをGPUで動かしたら9500FPSぐらいだった1bit+FPGAにすれば約1000倍速(1200万FPS)になる?LUTは回路の面積も小さいので省電力
デメリットもあるよね?● 普通に1bit化すると大幅な精度低下● ニューラルネットの1bit化について様々な研究が存在● Binary Connect:BC (CVPR 2015) https://arxiv.org/abs/1511.00363NNの重みを1bit化した初のモデル● Binarized Neural Network:BNN (NIPS 2016) https://arxiv.org/abs/1602.02830BCの活性化関数を1bit化計算のボトルネックになるBatchNormalizationをシフト演算化● XNOR-Net (CVPR 2016) https://arxiv.org/abs/1603.05279BNNの演算に係数をつけて大規模データセットにも対応畳み込みブロックの順序を変えて精度を向上
参考文献● ニューラルネット https://sinhrks.hatenablog.com/entry/2014/11/30/192940● 1bit化とハードウェア https://www.slideshare.net/kentotajiri/ss-77136469● 演算のクロック数 http://rakasaka.fc2web.com/delphi/numop.html● FPGAの大手企業 Xilinx https://xilinx.com/