バイナリ
ニューラルネットと
ハードウェアの関係
発表者:筑波大学システム情報工学研究科 田尻 健斗
メンター: 大阪大学生命機能研究科 西田 圭吾
東京大学情報理工学系研究科 八木 拓真
1
全脳アーキテクチャ若若⼿手の会
第 26  回勉強会
⾃自⼰己紹介
• ⽥田尻健⽃斗
Ø 筑波⼤大学 システム情報⼯工学研究科D1
Ø 衛星リモートセンシングの⾼高速化
2
これ
SoftBankがARMを買収
3http://www.softbank.jp/sbnews/entry/20170519_02
様々な組み込み機器
4
By	
  Alexander	
  Glinz	
  -­‐ photo	
  by	
  Alexander	
  Glinz	
  /	
  uploaded	
  by	
  Joadl,	
  CC	
  BY-­‐SA	
  3.0at,https://commons.wikimedia.org/w/index.php?curid=29727889
GFDL,	
  https://ja.wikipedia.org/w/index.php?curid=248165
組み込みにおけるNNの搭載
5
By	
  Alexander	
  Glinz	
  -­‐ photo	
  by	
  Alexander	
  Glinz	
  /	
  uploaded	
  by	
  Joadl,	
  CC	
  BY-­‐SA	
  3.0at,https://commons.wikimedia.org/w/index.php?curid=29727889
衝突回避システム
オンボード上でシステムを完結させたい
⾃自⽴立立制御ドローン
衛星リモート
センシング
⼤大きい計算機・⼩小さい計算機
Tesla	
  K40
Raspberry	
  pi	
  3
Model B
計算ユニット Streaming Multiprocessor x40 ARM	
  x4	
  
同時並列列数 2560 8
メモリ 12	
  GB 1	
  GB
消費電力 235	
  W 12.5	
  W
価格 50万円 6千円
6
⼤大きい計算機・⼩小さい計算機
Tesla	
  K40
Raspberry	
  pi	
  3
Model B
計算ユニット Streaming Multiprocessor x40 ARM	
  x4	
  
同時並列列数 2560 8
メモリ 12	
  GB 1	
  GB
消費電力 235	
  W 12.5	
  W
価格 50万円 6千円
7
そうだ、バイナリ化しよう
8
1
メモリ使用量が
!
"#
倍に
掛け算が
ビット演算に
𝑤!! ⋯ 𝑤!&
⋮ ⋱ ⋮
𝑤)! ⋯ 𝑤)&
𝑥!
⋮
𝑥&
バイナリ化の威⼒力力
9
[M.	
  Rastegari,	
  2016]	
  M.	
  Rastegari,	
  et	
  al.	
  “XNOR-­‐Net:	
  ImageNet	
  Classification	
  Using	
  Binary	
  Convolutional	
  Neural	
  Networks”,	
  arxiv:1603.05279,	
  2016.
475
7.4
0
100
200
300
400
500
バイナリ化前 バイナリー化後
AlexNetの重みのデータ量量[MB]
32倍省省メモリ
58倍⾼高速化
[M.  Rastegari,  2016]  
⽬目次
1. バイナリ化⼊入⾨門
2. 表現ビット数の限界に迫る:バイナリNNの数々
Ø BinaryConnect
Ø Binarized Neural  Network
Ø XNOR-‐‑‒Net
3. BNNの性能限界を探る:FPGAの視点から
Ø ハードウェアの性能を引き出す
Ø FINN:  Fast,  Scalable  and  Binarized
4. BNNから⾒見見るハードウェアの未来
10
⽬目次
1. バイナリ化⼊入⾨門
2. 表現ビット数の限界に迫る:バイナリNNの数々
Ø BinaryConnect
Ø Binarized Neural  Network
Ø XNOR-‐‑‒Net
3. BNNの性能限界を探る:FPGAの視点から
Ø ハードウェアの性能を引き出す
Ø FINN:  Fast,  Scalable  and  Binarized
4. BNNから⾒見見るハードウェアの未来
11
NNの浮動⼩小数点のバイナリ化
浮動⼩小数点からバイナリにすることでメモリ容量量を削減
12
−1.5
3.1
2.2
ℎ"
ℎ#
ℎ2
×−1.1
×2.4
各数値で32bit必要
−1.5
3.1
2.2
ℎ"
ℎ#
ℎ2
×−1
×1
×1
各数値で1bit必要
バイナリ化
×1.1
ニューラルネット
13
𝑥!
−1.5
3.1
2.2
ℎ!
ℎ"
ℎ#
ℎ2
𝑧#
𝑧!
𝑧"
𝑥!
𝑥"
𝑥#
𝑥2
入
力
𝑧#
𝑧!
𝑧"
出
力
重みと活性の線形和 &  ⾮非線形の活性化関数
浮動⼩小数点同⼠士の積和演算が発⽣生
ℎ" = 𝑎 +0.1×3.1 − 1.1×1.5 + 2.1×2.2 	
   a:活性化関数
×−1.1
×2.1
×0.1
浮動⼩小数点とは
14
By	
  en:User:Fresheneesz,	
  traced	
  by	
  User:Stannered	
  -­‐ en:Image:Float	
  example.PNG,	
  CC	
  表示-­‐継承 3.0,	
  
https://commons.wikimedia.org/w/index.php?curid=3357169
浮動⼩小数点⽅方式
Ø仮数部(fraction)と指数部(exponent)で数を表⽰示
Ø単精度度では⼀一つの数を表すのに32bit必要
Ø通常のNNでは32bit単精度度浮動⼩小数点を使⽤用
仮数部
指数部
1.5×23
仮数部
指数部
バイナリ化とは
p バイナリ化
→量量⼦子化の⼀一種で、実数値を2通りの値の
どちらかに変換する操作
sign 𝑥 = ?
1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   𝑥 ≥ 0,
−1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  それ以外.
p 今回の発表では特に断らない限り、上式を
バイナリ化と呼ぶ
15
NNの軽量量化
p 組み込み⽤用途を想定したNNが抱える問題
Ø ⼤大量量のビットを使って情報を保持
Ø ⼤大量量の浮動⼩小数点同⼠士の積和演算の発⽣生
p モデルの軽量量化⼿手法
Ø 蒸留留 :⼩小さいモデルで再学習[Hinton,  2015]
Ø 冗⻑⾧長性の排除:構造化された⾏行行列列[Sindhwani,  2015]
Ø 適度度な量量⼦子化:重みのクラスタリング[Han,  2015]
Ø バイナリ化 :実数値→2値[Courbariaux,  2015]
16
NNの学習と推論論
17
𝒖 = 𝑾 ! 𝒙 + 𝒃 !
𝒉 = 𝑎(𝐮)
𝒗 = 𝑾 # 𝒉 + 𝒃 #
𝒚 = softmax(𝒗)
学習
𝑥#
𝑥!
𝑥"
ℎ"
ℎ#
𝑦#
𝑦!
𝑦"
𝑾(#)
𝒃(#)
𝑾(!)
𝒃(!)
𝑥#
𝑥!
𝑥"
ℎ"
ℎ#
𝑦#
𝑦!
𝑦"
𝑾(#)
𝒃(#)
𝑾(!)
𝒃(!)
①順伝播
推論論
NNの学習と推論論
18
𝐸 = − T 𝑡)Vlog	
   𝑦)V
),V
学習
𝑥#
𝑥!
𝑥"
ℎ"
ℎ#
𝑦#
𝑦!
𝑦"
𝑾(#)
𝒃(#)
𝑾(!)
𝒃(!)
𝑥#
𝑥!
𝑥"
ℎ"
ℎ#
𝑦#
𝑦!
𝑦"
𝑾(#)
𝒃(#)
𝑾(!)
𝒃(!)
①順伝播
②誤差評価
推論論
NNの学習と推論論
19
𝚫(#)
= 𝒕	
   − 𝒚
𝚫 ! = 𝑎[ 𝒖 ⨀ 𝑾 # 𝚫 #
𝜕𝑬
𝜕𝑾 #
= ⋯
学習
𝑥#
𝑥!
𝑥"
ℎ"
ℎ#
𝑦#
𝑦!
𝑦"
𝑾(#)
𝒃(#)
𝑾(!)
𝒃(!)
𝑥#
𝑥!
𝑥"
ℎ"
ℎ#
𝑦#
𝑦!
𝑦"
𝑾(#)
𝒃(#)
𝑾(!)
𝒃(!)
①順伝播
②誤差評価
③逆伝播
推論論
NNの学習と推論論
20
𝑾 _
= 𝑾 _
− 𝜂
𝜕𝐸
𝜕𝑾 _ 	
  
𝒃 _
= 𝒃 _
− 𝜂
𝜕𝐸
𝜕𝒃 _ 	
  
学習
𝑥#
𝑥!
𝑥"
ℎ"
ℎ#
𝑦#
𝑦!
𝑦"
𝑾(#)
𝒃(#)
𝑾(!)
𝒃(!)
𝑥#
𝑥!
𝑥"
ℎ"
ℎ#
𝑦#
𝑦!
𝑦"
𝑾(#)
𝒃(#)
𝑾(!)
𝒃(!)
①順伝播
②誤差評価
③逆伝播
④重み更更新
推論論
NNの学習と推論論
21
学習
𝑥#
𝑥!
𝑥"
ℎ"
ℎ#
𝑦#
𝑦!
𝑦"
𝑾(#)
𝒃(#)
𝑾(!)
𝒃(!)
𝑥#
𝑥!
𝑥"
ℎ"
ℎ#
𝑦#
𝑦!
𝑦"
𝑾(#)
𝒃(#)
𝑾(!)
𝒃(!)
①順伝播
②誤差評価
③逆伝播
④重み更更新
推論論 ①順伝播𝒖 = 𝑾 ! 𝒙 + 𝒃 !
𝒉 = 𝑎(𝐮)
𝒗 = 𝑾 # 𝒉 + 𝒃 #
𝒚 = softmax(𝒗)
「素朴な」重みのバイナリ化
22
学習
𝑥#
𝑥!
𝑥"
ℎ"
ℎ#
𝑦#
𝑦!
𝑦"
𝑾(#)
𝒃(#)
𝑾(!)
𝒃(!)
𝑥#
𝑥!
𝑥"
ℎ"
ℎ#
𝑦#
𝑦!
𝑦"
𝑾 𝒃
(#)
𝒃(#)
𝑾 𝒃
(!)
𝒃(!)
①順伝播
②誤差評価
③逆伝播
④重み更更新
推論論 ①順伝播
浮動⼩小数点で学習
(通常通り)
学習済み重みを
そのままバイナリ化
して推論論
→誤差の蓄積のため精度度低下、
どうする?
⽬目次
1. バイナリ化⼊入⾨門
2. 表現ビット数の限界に迫る:バイナリNNの数々
Ø BinaryConnect
Ø Binarized Neural  Network
Ø XNOR-‐‑‒Net
3. BNNの性能限界を探る:FPGAの視点から
Ø ハードウェアの性能を引き出す
Ø FINN:  Fast,  Scalable  and  Binarized
4. BNNから⾒見見るハードウェアの未来
23
バイナリNNの種類
重みの
バイナリ化
活性の
バイナリ化
⼤大規模な
データセット
への対応
Binary	
  
Connect
⚪ -­‐ -­‐
Binarized
Neural	
  
Network
⚪ ⚪ -­‐
XNOR-­‐Net ⚪
⚪ ⚪
24
バイナリNNの種類
重みの
バイナリ化
活性の
バイナリ化
⼤大規模な
データセット
への対応
Binary	
  
Connect
⚪ -­‐ -­‐
Binarized
Neural	
  
Network
⚪ ⚪ -­‐
XNOR-­‐Net ⚪
⚪ ⚪
25
BinaryConnect
M.Courbariaux,  Y.Bengio,  &  David,  J.  P.  (2015).  
“Binaryconnect:  Training  deep  neural  networks  with  binary  
weights  during  propagations”.  In Advances  in  Neural  
Information  Processing  Systems (pp.  3123-‐‑‒3131).
26
概要
p 順伝播・逆伝播の計算にバイナリ重みを⽤用いる
ことで、バイナリ重みを⽤用いたNNの学習アル
ゴリズムを提案
p 通常のNNとほぼ同等の正解率率率を確保
Ø バイナリ化が正則化の役割を果たし、⼩小規模
データセットにおいて良良好な正解率率率を達成
27
BinaryConnectの成果
重要な発⾒見見:重み⾏行行列列をバイナリ化することは、
単に重み⾏行行列列のメモリ使⽤用量量を削減することでは
ない!
→バイナリ化には乗算を加算に置き換える作⽤用
ある
メモリ使⽤用量量が削減されるだけでなく⼀一部の乗算
が加算に代わることで計算量量が削減される
28
数式の表記
𝑾a
_
:𝑙層⽬目のバイナリ化された重み
𝑾 _
:𝑙層⽬目の浮動⼩小数点重み (通常の重み)
𝒃 _
:𝑙層⽬目の浮動⼩小数点バイアス
𝐸 :損失関数
𝑎 _
:𝑙層⽬目の活性
29
BinaryConnectの学習
30
①順伝播
各層の順伝播時にバイナリ化した
重み𝑾a
(_)
を使⽤用
𝑾a
_
= binarize 𝑾 _
𝒂 _h! = 𝑓 𝑾a
_
	
   𝒉 _ + 𝒃 _ 	
  
元の重み𝑾 _ も保持
𝑾(_)
𝑾a
(_)
𝒃(_)
順伝播
BinaryConnectの学習
31
②逆伝播
バイナリ化した重みに対する勾配
j𝑬
j𝑾k
l とバイアス勾配
j𝑬
j𝒃 l を計算
𝑾(_)
𝑾a
(_)
𝒃(_)
𝜕𝑬
𝜕𝑾a
_
𝜕𝑬
𝜕𝒃 _
順伝播
逆伝播
BinaryConnectの学習
32
③更更新
実数重みをバイナリ勾配で更更新
𝑾(_) = clip(𝑾 _ − 𝜂
𝜕𝑬
𝜕𝑾a
_
)
𝒃(_) = 𝒃(_) − 𝜂
𝜕𝑬
𝜕𝒃 _
クリッピング ([-­‐‑1,	
  1]に収める)	
  に
よって、実数重みの発散を防ぐ
→学習⾃自体は結局実数で⾏行行う
𝑾(_)
𝑾a
(_)
𝒃(_)
𝜕𝑬
𝜕𝑾a
_
𝜕𝑬
𝜕𝒃 _
順伝播
逆伝播
バイナリ化の正則化効果
33
p 正則化:重み⾏行行列列の表現⼒力力を落落とし、過学習を
防ぐこと
Ø 例例:DropConnect [Wan+,  2013]
Ø 重み⾏行行列列の各要素の⼤大きさの情報を捨てるバイナリ
化は、正則化の⼀一種と考えることができる
p 実際、今回の実験では正則化なしの場合よ
りかえって良良い正解率率率を得た
データセット
34
p Permutation-‐‑‒invariant  MNIST
Ø28x28のグレースケール⼿手書き数字、10クラス
Ø訓練60000枚、テスト10000枚
Ø回転、拡⼤大縮⼩小など、事前の画像処理理を禁⽌止
p CIFAR-‐‑‒10
Ø32×32のカラー画像、10クラス
Ø訓練50000枚、テスト10000枚
p SVHN
Ø32x32のカラー数字、10クラス
Ø訓練604000枚、テスト26000枚
実験
p ネットワークの構成
ØMNIST:784-‐‑‒1024-‐‑‒1024-‐‑‒1024-‐‑‒SVM
ØCIFAR-‐‑‒10: 畳み込み3層+全結合1層のCNN+SVM      
(256C3-‐‑‒MP2-‐‑‒512C3-‐‑‒MP2-‐‑‒1024C3-‐‑‒MP2-‐‑‒2048-‐‑‒SVM)
ØSVHN:上と同様(ただしユニット数が半分)
Ø各層にBatchNormalizationを挟んでる
p ⽐比較対象
ØMNIST:浮動⼩小数点のNNと50%Droput
ØCIFAR-‐‑‒10・SVHN:浮動⼩小数点のNNのみ
35
実験結果
36
浮動⼩小数点のNNとほぼ同等の精度度を達成
MNIST CIFAR-‐‑‒10 SVHN
浮動⼩小数点
(正則化なし)
1.30% 10.64% 2.44%
提案⼿手法 1.29% 9.90% 2.30%
浮動⼩小数点
(50%  Dropout)
1.01% − −
重みをバイナリ化しても精度度へのほぼ影響なし!
バイナリNNの種類
重みの
バイナリ化
活性の
バイナリ化
⼤大規模な
データセット
への対応
Binary	
  
Connect
⚪ -­‐ -­‐
Binarized
Neural	
  
Network
⚪ ⚪ -­‐
XNOR-­‐Net ⚪
⚪ ⚪
37
Binarized
Neural  Network
M.  Courbariaux et  al.  “Binarized Neural  Networks:  
Training  Deep  Neural  Networks  with  Weights  and  
Activations  Constrained  to  +1  or  -‐‑‒1”.  (2016):    12  
June  2017.
38
BinaryConnect 概要(再掲)
39
𝑥!
−1.5
3.1
2.2
ℎ!
ℎ"
ℎ#
ℎ2
𝑧#
𝑧!
𝑧"
𝑥!
𝑥"
𝑥#
𝑥2
入
力
𝑧#
𝑧!
𝑧"
出
力
×−1
×+1
×+1
ℎ" = 𝑎 +1×3.1 + −1 ×1.5 + 1×2.2 	
  
重みのみを+1/-‐‑‒1の2通りにバイナリ化
Binarized Neural  Network
40
𝑥!
−1
1
1
ℎ!
ℎ"
ℎ#
ℎ2
𝑧#
𝑧!
𝑧"
𝑥!
𝑥"
𝑥#
𝑥2
入
力
𝑧#
𝑧!
𝑧"
出
力
×−1
×+1
×+1
h" = 𝑠𝑖𝑔𝑛 +1 − (−1) + 1 = 𝑠𝑖𝑔𝑛 3 = 1
重み・活性の両⽅方をバイナリ化
概要
p 学習と推論論の両⽅方で、重みと活性両⽅方を
バイナリ化
Ø BinaryConnectでは重みのみのバイナリ化だった
Ø 活性をバイナリ化することで⼤大半の演算をビット
演算に置き換え、省省エネルギーなNNの可能性を
⽰示した
p 重みと活性の両⽅方をバイナリ化しつつ、
浮動⼩小数点NNとほぼ同等の精度度を達成
41
活性をバイナリ化する
42
p バイナリ化すると、勾配情報が消えてしまう
q = Sign 𝑟 , 𝑔~ = 0
p アイデア:hard-‐‑‒tanhを通した勾配を使う
Htanh 𝑥 = max −1, min 1, 𝑥 ,	
  	
  	
  	
   𝑔€ = 1 € •!
学習の流流れ
1.  順伝播
43
重み⾏行行列列をバイナリ化する
バイナリ活性及び重みを乗算
Shift-‐‑‒based BNを実⾏行行 (後述)
活性をバイナリ化
学習の流流れ
2.  逆伝播
44
活性の勾配を計算
ポイント:⼩小さい勾配のみ伝播
Shift-‐‑‒based  BNの逆伝播
重み⾏行行列列の勾配を計算
学習の流流れ
3.  パラメータの更更新
45
BNのパラメタを更更新
重みを更更新して[-‐‑‒1,1]に
クリップする
(BinaryConnectと同様)
Shift based  Batch  Normalization
BinaryConnectでは浮動⼩小数点上で通常のBNを
⾏行行っていたが、BN⾃自体の乗算 (e.g.  ミニバッチ
分散の計算)  が遅かった
→分散の計算と正規化をシフト演算に置き換え
46
乗算→シフト演算
活性のバイナリ化の効果
⼊入⼒力力と重みの演算の組み合わせが4通りに減る
47
⼀一般的な加減算が必要
−1.5
3.1
2.2
ℎ"
ℎ#
ℎ2
×−1
×1
×1
−1
1
1
ℎ"
ℎ#
ℎ2
×−1
×1
×1
活性の
バイナリ化
4通りの組み合わせ演算
でよい
バイナリ乗算とXNORの関係
48
⼊入⼒力力 重み 出⼒力力
1 1 1
1 -‐‑‒1 -‐‑‒1
-‐‑‒1 1 -‐‑‒1
-‐‑‒1 -‐‑‒1 1
バイナリ演算の
全パターン
A B Out
1 1 1
1 0 0
0 1 0
0 0 1
排他的論論理理和の
否定 XNOR
バイナリ乗算とXNORの関係
49
⼊入⼒力力 重み 出⼒力力
1 1 1
1 -‐‑‒1 -‐‑‒1
-‐‑‒1 1 -‐‑‒1
-‐‑‒1 -‐‑‒1 1
バイナリ演算の
全パターン
バイナリ乗算はXNORで置き換えることができる
A B Out
1 1 1
1 0 0
0 1 0
0 0 1
排他的論論理理和の
否定 XNOR
積和演算の並列列化
1 0 1 0 1 1 0 0
50
1 0 1 1 0 0 0 1
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
1 1 1 0 0 0 1 0
XNOR
bitcount
4
⼊入⼒力力 重み
⽴立立っているbitを
数える
積和計算が並列列のビット演算に置き換えられる
BNNの推論論
p 1層⽬目のみバイナリ
ではなく、8bit固定
少数点を⽤用いる
p 2層⽬目以降降はXNOR
演算とShift  based  
BNを繰り返す
51
実験
p データセット
Ø MNIST,  CIFAR-‐‑‒10,  SVHN
p ネットワークの構成
Ø MNIST:4096ユニット隠れ層3段の全結合-‐‑‒SVM
Ø CIFAR-‐‑‒10:畳み込み3層-‐‑‒全結合層-‐‑‒SVM
Ø SVHN:上と同様(ただしユニット数が半分)
p ⽐比較対象
Ø Maxout Networks  [GoodFellow+  2013]
(通常のNN)
52
実験結果
53
浮動⼩小数点のNNとほぼ同等の精度度を達成
MNIST SVHN CIFAR-‐‑‒10
提案⼿手法 0.96% 2.8% 11.40%
Maxout
Networks 0.94% 2.47% 11.68%
BinaryConnect 1.29 ± 0.08% 2.30% 9.90%
重み・活性の両⽅方をバイナリ化しても精度度を維持できた
バイナリNNの種類
重みの
バイナリ化
活性の
バイナリ化
⼤大規模な
データセット
への対応
Binary	
  
Connect
⚪ -­‐ -­‐
Binarized
Neural	
  
Network
⚪ ⚪ -­‐
XNOR-­‐Net ⚪
⚪ ⚪
54
XNOR-‐‑‒Net
M.  Rastegari,  V.  Ordonez,  J.  Redmon,  &  A.  Farhadi.  (2016,  
October).  “Xnor-‐‑‒net:  Imagenet classification  using  binary  
convolutional  neural  networks”.  In European  Conference  on  
Computer  Vision (pp.  525-‐‑‒542).
55
Binarized  Neural  Network  (再掲)
56
𝑥!
−1
1
1
ℎ!
ℎ"
ℎ#
ℎ2
𝑧#
𝑧!
𝑧"
𝑥!
𝑥"
𝑥#
𝑥2
入
力
𝑧#
𝑧!
𝑧"
出
力
×−1
×+1
×+1
𝑡" = 𝑠𝑖𝑔𝑛 +1 − (−1) + 1 = 𝑠𝑖𝑔𝑛 3 = 1
重み・活性の両⽅方をバイナリ化
XNOR-‐‑‒Net
⼤大きなネットワークをバイナリ化したい
57
概要
p BNNは、重みと活性の同時バイナリ化を達成
したものの、その性能検証は⼩小規模データ
セット (~∼10クラス)  に留留まっていた
p バイナリ化の仮定を緩和することによって、
バイナリ化の利利点を⽣生かしつつ⼤大規模データ
セットの性能を確保
→ImageNetのtop-‐‑‒5正解率率率で69.2% (⾼高くはない…)
58
アイデア:バイナリ化の緩和
59
1.5 2.3 2.4
-‐‑‒0.5 -‐‑‒1.4 3.0
2.4 2.0 -‐‑‒1.0
0 0 0.5
0 0.5 0
0.5 0 0
∗ = 1.7
1 1 1
-‐‑‒1 -‐‑‒1 1
1 1 -‐‑‒1
0 0 1
0 1 0
1 0 0
⊕ = 1
1 1 1
-‐‑‒1 -‐‑‒1 1
1 1 -‐‑‒1
0 0 1
0 1 0
1 0 0
⊕ = 1.8× 1.8
実数
畳み込み
バイナリ
畳み込み
提案⼿手法
畳み込みの近似
⽬目標:バイナリ化された重みを維持しつつ、その計
算結果をもとの畳み込みに近づけたい
𝑰	
   ∗ 𝑾	
   ≈ 𝑰	
   ⊕ 𝑩	
   	
   𝛼
最適化問題を解いて、元の畳み込みの計算結果に最
も近づくような係数𝛼∗
を求める
𝛼∗
= argmin‹ ∥ 𝑾	
   − 𝛼𝑩 ∥#
=
1
𝑛
∥ 𝑾 ∥!
わずかな乗算の増加と引き換えに量量⼦子化誤差を軽減
60
画像 重み バイナリ重み
スケーリング係数
XNOR演算に対する畳み込みの近似
前⾴頁では重み⾏行行列列のみをバイナリ化したが、
同様の考え⽅方により重みと活性を同時に
バイナリ化した場合にも対応できる:
𝑰	
   ∗ 𝑾	
   ≈ sign 𝑰 ⊛ sign 𝑾 ⊙ 𝑲𝛼
𝑠. 𝑡. 	
   𝑲 =
∑ 𝑰:,:,’
𝑐
	
  ∗ 𝒌
畳み込み演算が要るが、もとの畳み込み	
   𝑰	
   ∗ 𝑾	
  
と⽐比べると計算回数は⾮非常に少ない
61
その他の⼯工夫
p レイヤの順番の⼊入れ替え
量量⼦子化誤差の発⽣生条件を整理理し、各処理理の順番を
⼊入れ替え
p 学習はBinaryConnectとほぼ同様なので割愛
62
p データセット
Ø ImageNet (1000クラス分類、訓練画像約120万枚)
p ネットワークの構成 (AlexNetベース)
Ø BN-‐‑‒AlexNet (7層CNN,  BNを追加)
Ø XNOR-‐‑‒Net  (重み・活性のバイナリ化+近似)
p ⽐比較対象
Ø BinaryConnect
Ø BNN  (Binarized  Neural  Network)
実験条件
63
Top-‐‑‒1  
正解率率率
Top-‐‑‒5
正解率率率
畳み込みの
計算速度度
(理理想値)
AlexNet 56.6% 80.2% 1倍
XNOR-‐‑‒Net 44.2% 69.2% 最大58倍 (※)
BinaryConnect 35.4% 61.0%
BNN 27.9% 50.4%
XNOR-‐‑‒Net  :  実験結果
64
重みと活性を両⽅方バイナリ化した場合も、ある程度度の性能を維持
※元が浮動⼩小数点
だと更更に速いはず
バイナリNNの数々:まとめ
p BinaryConnect:  重みのみをバイナリ化した
NNの効率率率的な学習を達成
p BNN:  重み及び活性の同時バイナリ化&XNOR-‐‑‒
bitcountを⽤用いた回路路の効率率率化
p XNOR-‐‑‒Net:  近似計算を導⼊入して、良良い性能-‐‑‒
速度度トレードオフを達成
→実験結果そのものは決して良良い結果とは⾔言えないが
(ImageNetの現⾏行行の最⾼高Top-‐‑‒5正解率率率は97%近く)、
実⽤用的なバイナリNNの活路路を開いた
65
⽬目次
1. バイナリ化⼊入⾨門
2. 表現ビット数の限界に迫る:バイナリNNの数々
Ø BinaryConnect
Ø Binarized Neural  Network
Ø XNOR-‐‑‒Net
3. BNNの性能限界を探る:FPGAの視点から
Ø ハードウェアの性能を引き出す
Ø FINN:  Fast,  Scalable  and  Binarized
4. BNNから⾒見見るハードウェアの未来
66
計算機のさまざまなボトルネック
p メモリアクセス(通信時間)
Øチップ内のメモリ(数サイクル)
Øチップ外のメモリ(数百サイクル)
p 演算器の構造
Ø演算器の数(並列列の限界)
Ø演算の遅延(処理理にかかるクロック数)
67
バイナリ化によるメモリ節約と演算の効率率率化
68
1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0
浮動⼩小数点 32  bit
1
バイナリ 1 bit
メモリの節約
XNOR
bitcount
𝑎 +1×3.1 + −1 ×1.5 + 1×2.2
演算の効率率率化
XNOR-‐‑‒bitcount
乗算・加減算
もはや⼤大量量の加算器・乗算器は必要ない
69
p ⼀一⽅方で、⼤大量量のbit演算をCPUで⾏行行うには
若若⼲干の無駄がある
→⼀一般のCPUの演算器の構造・メモリアクセスは
⼤大量量のビット演算に必ずしも最適でない
p 必要な演算器を必要な数だけ⽤用意できないか?
→FPGAだ!
FPGA
Field  (現場で)
Programmable  (書き換え可能な)
Gate  (論論理理ゲートの)
Array  (集合体)
70
ホビーボードPYNQ-­‐Z1	
   スパコンのデータ転送システム
https://www.ccs.tsukuba.ac.jp/pr/interview/reports-­‐vol2-­‐2/
FPGAの構成要素
71
p LUTは⾮非常に簡単な演算器
p FPGAは⼩小さなLUTの集まり
p LUTを組み合わせて、
任意の演算器を構成可能
p 演算器を組み合わせて、任意
の回路路を構成
どうやって必要な演算器を⽤用意するか?
LUTLUTLUT
LUT
LUT LUT LUT
LUTLUT
FPGA上ならばビット演算器をたくさん実装できる
回路路の設計⽅方法
72
1. 元々のプログラムの記述
2. 仕様決め
Ø タイムチャート、状態遷移図、要求性能、回路路
内部のブロック図
3. 動作モデル作成
4. クロックを考えながらスケジューリング
5. 回路路記述
森岡澄夫,	
  “HDLによる高性能ディジタル回路設計”,	
  CQ出版
回路路記述のコスト
p 回路路の記述には、ソフトに⽐比べて余分な
コストがかかる
Ø 記述量量の多さ
Ø 回路路上の時間の流流れの考慮
73
ソフトとハードの記述におけるギャップ (1)
74
記述量量が多い
Y	
  =	
  X.dot(W)+B
Python:1行
C言語:15行
Verilog:50行以上
※イメージ
時間軸⽅方向の流流れがある
75
クロック
ソフトとハードの記述におけるギャップ (2)
演算器 A 演算器 B 演算器 C
76
クロック
ソフトとハードの記述におけるギャップ (2)
演算器 A 演算器 B 演算器 C
時間軸⽅方向の流流れがある
77
クロック
ソフトとハードの記述におけるギャップ (2)
演算器 A 演算器 B 演算器 C
時間軸⽅方向の流流れがある
78
クロック
ソフトとハードの記述におけるギャップ (2)
演算器 A 演算器 B 演算器 C
時間軸⽅方向の流流れがある
複数の回路路の同時に起きる動作パターンを考慮することは難しい
79
そこで高位合成
⾼高位合成とは
p ⾼高位合成
→C⾔言語などの抽象度度の⾼高い記述からハード
ウェア記述⾔言語に変換する技術
p 出⼒力力回路路の最適化
Ø プログラムに指⽰示⼦子を書き加える
Ø 並列列化度度合い・変数のビット幅等を操作
80
1. 元々のプログラムの記述
2. 仕様決め
Ø タイムチャート、状態遷移図、要求性能、回路路
内部のブロック図
3. 動作モデル作成
4. クロックを考えながらスケジューリング
5. 回路路記述
⾼高位合成によって⾃自動化される部分
81
Binarized Neural  Network(再掲)
82
𝑥!
−1
1
1
ℎ!
ℎ"
ℎ#
ℎ2
𝑧#
𝑧!
𝑧"
𝑥!
𝑥"
𝑥#
𝑥2
入
力
𝑧#
𝑧!
𝑧"
出
力
×−1
×+1
×+1
ℎ" = 𝑠𝑖𝑔𝑛 +1 − (−1) + 1 = 𝑠𝑖𝑔𝑛 3 = 1
重み・活性の両⽅方をバイナリ化
⾼高位合成を⽤用いてFPGA上で最適化されたBNNを作る
FINN
Y.  Umuroglu,  N.  J.    Fraser,  G.  Gambardella,  M.  Blott,  P.  Leong,  M.  Jahre,  &  K.  
Vissers,  (2017,  February).  “Finn:  A  framework  for  fast,  scalable  binarized
neural  network  inference”.  In Proceedings  of  the  2017  ACM/SIGDA  
International  Symposium  on  Field-‐‑‒Programmable  Gate  Arrays (pp.  65-‐‑‒74).  
ACM.
83
FINN
p 学習済みBNNモデルに適した回路路を出⼒力力
Ø BNNモデルを⾼高位合成⽤用C++に変換
Ø ⾼高位合成によりC++から半⾃自動で回路路を出⼒力力
p 各種最適化による⾼高速化
Ø 積和演算の並列列化
Ø 閾値処理理によるBatch  Normalizationの代⽤用
p 要求速度度に対応できるフレームワーク
Ø 要求速度度から適切切な並列列度度を決定
Ø BNNでの各演算はライブラリでカバー
84
効率率率的な回路路の実現へ
p チップ内のメモリに重みを全て格納
Ø チップ外へのメモリアクセスは遅いため⾏行行わない
p 各層ごとに専⽤用の演算回路路
Ø 必要な計算量量に合わせて演算器の数を決定
Ø 結果、無駄のない回路路を構成
85
1層
パラメーター
2層
パラメーター
3層
パラメーター
メインメモリ画像 結果 …312021 …
ネットワーク構成の決定
p 重み及び活性の同時バイナリ化
Ø全ての⼊入⼒力力活性・重み・出⼒力力活性を+1/-‐‑‒1にバイナリ化
する
p 活性化関数の前にBatch  Normalization
p 活性化関数は
sign 𝑥 = ?
1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
   𝑥 ≥ 0,
−1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  それ以外.
86
Matrix  Vector  Threshold  Unit
87
層ごとの演算を⾏行行う回路路
隠れユニットを⼀一度度にP個処理理できる
MVTUのProcessing  Element
88
活性への⼊入⼒力力を⼀一度度にS個処理理できる
活性と重みの積和演算をバイナリで⾏行行う回路路
累累算器
閾値メモリ
𝑾 𝒃メモリ
XNOR
bitcount + ≥
活性インデックス
出⼒力力
S
S
S
T T
T
1
PEの計算の流流れ
89
𝑾 𝒃メモリ
XNOR
bitcount
活性インデックス
S
S
S
累累算器
+
T
閾値メモリ
≥ 出⼒力力
T
1T
①バイナリの⼊入⼒力力活性
とバイナリの重みの
積和演算の⼀一部を
XNOR-‐‑‒bitcountに
よって計算
PEの計算の流流れ
90
𝑾 𝒃メモリ
XNOR
bitcount
活性インデックス
S
S
S
累累算器
+
T
閾値メモリ
≥ 出⼒力力
T
1T
①バイナリの⼊入⼒力力活性
とバイナリの重みの
積和演算の⼀一部を
XNOR-‐‑‒bitcountに
よって計算
②積和演算が全て終わる
まで累累積
PEの計算の流流れ
91
𝑾 𝒃メモリ
XNOR
bitcount
活性インデックス
S
S
S
累累算器
+
T
閾値メモリ
≥ 出⼒力力
T
1
①バイナリの⼊入⼒力力活性
とバイナリの重みの
積和演算の⼀一部を
XNOR-‐‑‒bitcountに
よって計算
②積和演算が全て終わる
まで累累積
③閾値と⽐比較することで
BNと活性化を代⽤用
T
ワークフロー
92
FINN シンセサイザー要求速度度
BNNの
トポロジー&
パラメーター
⾼高位合成可能な
BNNのC++記述
高位合成ツール
FIN
ハードウェア
ライブラリー
FPGA⽤用回路路 FPGA
※  緑:ソフトウェア ⻘青:処理理・実⾏行行
MVTUなど
実験
pデータセット
ØMNIST,  CIFAR-‐‑‒10,  SVHN
pネットワークの構成
MNIST
ØSFC:256ユニット隠れ層3段の全結合
ØLFC:1024ユニット隠れ層3段の全結合
CIFAR-‐‑‒10・SVHN
ØCNV:(畳み込み2層-‐‑‒プーリング層)×3段-‐‑‒
-‐‑‒512ユニット隠れ層2段-‐‑‒16bitの⼩小数10個
93
実験
p ハードウェア
Øボード:Xilinx  Zynq-‐‑‒7000  All  programmable  
SoC ZC706Evaluation  Kit
Øチップ:Zynq ZC706
-CPU   :ARM  Cortex  A-‐‑‒9  ×2
-FPGA:218600  LUTs,    545  BRAMs
94
⼆二つの実験シナリオ
⼆二つの実験シナリオでこの⼿手法の柔軟性を⽰示す
p max
Ø回路路リソースの範囲内で最⼤大限の速度度を要求
ØSFC-‐‑‒max・LFC-‐‑‒max・CNV-‐‑‒maxの3種類
p fix
Ø要求速度度は固定で 9000  (9k)  FPS
Ø「30  FPSで送られてくる640×480の映像を、
32×32に分割して処理理する」という想定
Ø
•2–×2—–×"–
"#×"#
= 9000 FPS
95
実験結果:誤答率率率
96
MNIST SVHN CIFAR-‐‑‒10
提案⼿手法 1.60%
[SFCmax]
	
  	
  5.10%
[CNVmax]
19.90%
[CNVmax]
BNN 0.96% 2.8% 11.40%
BinaryConnect 1.29 ± 0.08% 2.30% 9.90%
正規化の近似のためか、誤答率率率の上昇がみられる
実験結果:消費電⼒力力
97
組み込み機器において現実的な消費電⼒力力でNNを使⽤用可能
7.3 8.8
3.6
0.4 0.8 2.3
21.2
22.6
11.7
8.1 7.9 10
0
10
20
30
SFC-­‐max LFC-­‐max CNV-­‐max SFC-­‐fix LFC-­‐fix CNV-­‐fix
P(chip) P(Wall)[W]
Pchip:Chipの消費電⼒力力[W]
Pwall:ボード全体の消費電⼒力力[W]
ボードのアイドル状態での消費電⼒力力は約7  W
実験結果:速度度
98
速度度 :⼀一秒当たりの処理理枚数(FPS)を計測
要求速度度(max):可能な限り⾼高速に
要求速度度(fix)      :9000  (9k)  FPS
maxのシナリオにおいて1000万FPSを実現
12361
1561
21.9 12.2 12.2 11.6
0
5000
10000
15000
SFC-­‐max LFC-­‐max CNV-­‐max SFC-­‐fix LFC-­‐fix CNV-­‐fix
[k	
  FPS]
実験結果:リソース
99
リソース :FPGAの回路路構成要素LUTの数
要求速度度(max):可能な限り⾼高速に
要求速度度(fix)      :9000  (9k)  FPS
以上⼆二つのシナリオに問題なく対応できた
91131 82988
46253
5155 5636
26274
0
50000
100000
SFC-­‐max LFC-­‐max CNV-­‐max SFC-­‐fix LFC-­‐fix CNV-­‐fix
[個]
バイナリNNとハードの関係まとめ
p ⼤大量量のbit演算をCPUで⾏行行うには若若⼲干の無駄が
ある
p バイナリNNのFPGA実装は計算効率率率に優れる
p フレームワークと⾼高位合成を駆使すればFPGAの
利利便便性が⼤大幅に向上する
100
⽬目次
1. バイナリ化⼊入⾨門
2. 表現ビット数の限界に迫る:バイナリNNの数々
Ø BinaryConnect
Ø Binarized Neural  Network
Ø XNOR-‐‑‒Net
3. BNNの性能限界を探る:FPGAの視点から
Ø ハードウェアの性能を引き出す
Ø FINN:  Fast,  Scalable  and  Binarized
4. BNNから⾒見見るハードウェアの未来
101
バイナリ化の限界
p バイナリ化されたNNで現在達成されている
精度度では必ずしも実⽤用に耐えうる性能を
もつとは⾔言えない
p あくまで実験レベルの基礎的な研究にすぎ
ない
→それでも、バイナリNN専⽤用ハードウェアに
は可能性がある!
102
バイナリ化から考える組み込みの未来
バイナリ化やハードレベルの最適化を通じて、
p NNが組み込み機器に浸透する
p 組み込み機器のあり⽅方が変わる
p 我々の⽣生活が豊かになる
103
appendix
104
実験結果
105
乗算と加算の回路路⾯面積
106
Horowitz,	
  “Computing’s	
  Energy	
  Problem	
  (and	
  what	
  we	
  can	
  do	
  about	
  it)”,	
  ISSCC	
  2014
3495
137
0
500
1000
1500
2000
2500
3000
3500
32bit	
  乗算 32bit	
  加算
加算と乗算の回路路⾯面積[μm2]
乗算の約1/25
乗算と加算の回路路⾯面積
107
Horowitz,	
  “Computing’s	
  Energy	
  Problem	
  (and	
  what	
  we	
  can	
  do	
  about	
  it)”,	
  ISSCC	
  2014
3495
137
0
500
1000
1500
2000
2500
3000
3500
32bit	
  乗算 32bit	
  加算
乗算と加算の回路路⾯面積[μm2]
同じ面積で24個
多く実装できる※
※回路路によって多少異異なる

バイナリニューラルネットとハードウェアの関係