ニューラルネットの1bit化 / 1bit-neural-network
by
shun74
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
ニューラルネットの1bit化 B4 shun sato
Slide 2
Slide 2 text
本日のお話 ● ニューラルネットとは ● ニューラルネットの1bit化 ● 1bit化のメリット ● FPGAによる爆速化
Slide 3
Slide 3 text
ニューラルネットとは ● 人間のシナプス結合を模倣 ● 掛け算足し算をたくさんやる ● 出力と答えの誤差を微分して学習 ニューラルネット内の数値表現 ● 入力 :float32, int32, uint8… ● 重み :float32 ● バイアス :float32 ● 出力・答え :float32, int32, uint8… シナプス結合 ニューラルネット(多層パーセプトロン)
Slide 4
Slide 4 text
ニューラルネットの1bit化 内部の表現をいろいろと1bit化する 式: ⇢⇢⇢ 1bit化 重み・活性化関数・正則化などが1bit化可能 ※ここでいう1bitとは{-1, 1}のことです
Slide 5
Slide 5 text
1bit化のメリット ● メモリ大幅削減! float32 ⇢ 1bitでメモリ消費が1/32になる ● 計算の単純化 ⇢ 高速化・省電力 ● FPGAによる爆速化 (次のスライド) 1bitの掛け算はXNORと同じ ⇢ ALUを使わなくても計算可能 足し算もbit countで高速に処理
Slide 6
Slide 6 text
FPGAによる爆速化 FPGA = Field Programmable Gate Array (その場で書き換え可能な集積論理回路) ⇠こういうやつ 高位合成でプログラムするのが一般的 HDLでもプログラム可能 LUT(Look up table)を使った高速な計算が可能 浮動小数点演算 :速くて40クロックぐらい LUT+FFによる演算 :数クロック LUTで数値を取り出してFFに入力
Slide 7
Slide 7 text
FPGAの実験 ⇠ FPGAのみの実験結果 ネットワークの大きさはSFC
Slide 8
Slide 8 text
デメリットもあるよね? ● 普通に1bit化すると大幅な精度低下 ● ニューラルネットの1bit化について様々な研究が存在 ● Binary Connect:BC (CVPR 2015) https://arxiv.org/abs/1511.00363 NNの重みを1bit化した初のモデル ● Binarized Neural Network:BNN (NIPS 2016) https://arxiv.org/abs/1602.02830 BCの活性化関数を1bit化 計算のボトルネックになるBatchNormalizationをシフト演算化 ● XNOR-Net (CVPR 2016) https://arxiv.org/abs/1603.05279 BNNの演算に係数をつけて大規模データセットにも対応 畳み込みブロックの順序を変えて精度を向上
Slide 9
Slide 9 text
参考文献 ● ニューラルネット 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/