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/