SlideShare a Scribd company logo
ディープラーニング
vs ランダムフォレスト
中原 啓貴 (東京⼯業⼤学)
2017年9⽉24⽇
FPGAX@ドワンゴ
内容
• 背景
• Random forest (RF)
• RFをFPGA実装するには
• 実験結果
• RFをCPU, GPU, FPGAで実装した場合
• 他の機械学習、特にConvolutional Neural Network
(CNN)と⽐較した場合
• まとめ
2
機械学習
3
⼗分な計算資源とデータ+アルゴリズムの発展
(Left): “Single-Threaded Integer Performance,” 2016
(Right): Nakahara, “Trend of Search Engine on modern Internet,” 2014
機械学習の分類
M. Warrick, “How to get started with machine learning,” PyCon2014 4
研究背景
• ビッグデータと⼗分な計算資源
• ランダムフォレスト
• 歩⾏者検出
• セグメンテーション
• ⼈体姿勢推定
• 組込みシステムでの実現
• リアルタイム処理が必要→CPUは遅い
• 電⼒制約→GPUだと消費電⼒⼤
• FPGA上に短期間に優れたランダムフォレストを実装す
るには︖
• HDL⼿書き設計は限界
5
FPGA+⾼位合成
• 実⽤的な⾼位合成ツールの普及
• Xilinx社: Vivado HLS, SDxシリーズ
• Altera社: Altera SDK for OpenCL
• 先⾏事例
• gzip 圧縮を1か⽉で完成, ⼿書きHDLと⽐較して
90%程度の性能
• ファミコン(NES)を1週間で完成, ⼿書きHDLは
3か⽉, リアルタイム動作達成
• ⼿書きHDLより10倍以上短い期間で開発
• (個⼈的な経験では)性能, ⾯積は⼿書きHDLと
⽐較して8割程度は容易に達成可能
6
⽬的: FPGA+⾼位合成で⾼性能な
ランダムフォレストを実現する⼿法の開発
Random Forest
7
分類⽊ (Decision Tree)
• 特徴マップを分類する, 弱学習器といわれる
1.00
0.53
0.29
0.00
0.09
0.63
0.71
1.00
C1
C2 C1
C
1
C2 C1
X1
X2
X2<0.53?
X2<0.29? X1<0.09?
X1<0.63? X1<0.71?
Y N
N
NN
NY
Y
Y
Y
C1
C1C2 C1C2
C1
8
分類⽊の学習
• ランダムにサンプリング
• エントロピーが最⼤になるように再帰的に分割
9
1.00
0.53
0.29
0.00
0.09
0.63
0.71
1.00
C1
C2 C1
C
1 C2 C1
X1
X2
X2<0.53?
X2<0.29? X1<0.09?
X1<0.63? X1<0.71?
Y N
N
NN
NY
Y
Y
Y
C1
C1C2 C1C2
C1
バイアスとバリアンス
• バイアス→モデルの単純さによる誤差
• バリアンス→学習データの違いによる誤差
10
バイアス︓⼤ バイアス︓⼩
バイアスとバリアンス
11
バイアス︓⼤
バリアンス︓⼩
バイアス︓⼩
バリアンス︓⼤
• バイアス→モデルの単純さによる誤差
• ノイズに強いが, 複雑な表現はできない: SVM, 最⼩2乗法
• バリアンス→学習データの違いによる誤差
• 過学習しがち, 複雑な表現可能: Neural Network, 決定⽊
→集団(アンサンブル)学習によりバリアンスを下げる
Random Forest (RF)
• アンサンブル学習の⼀種
• 複数の分類⽊(弱学習器)で構成
• クラス分類と回帰が可能
12
Tree 1 Tree 2 Tree n
C1
C2
C1
Voter
C1 (Class)
InputX1<0.53?
X3<0.71? X2<0.63?
X2<0.63? X3<0.72?
Y N
N
NN
NY
Y
Y
Y
C1
C1C2 C1C3
C1
Tree 1
Binary Decision Tree (BDT) Random Forest
...
RFのアプリケーション
• Key point matching [Lepetit et al., 2006]
• Object detector [Shotton et al., 2008][Gall et al., 2011]
• Hand written character recognition [Amit&Geman, 1997]
• Visual word clustering
[Moosmann et al.,2006]
• Pose recognition
[Yamashita et al., 2010]
• Human detector
[Mitsui et al., 2011]
[Dahang et al., 2012]
• Human pose estimation
[Shotton 2011]
13
Random Forest を FPGA に実装
14
FPGA (Field Programmable
Gate Array)
• Reconfigurable architecture
• Look-up Table (LUT)
• Configurable channel
• Advantages
• Faster than CPU
• Dissipate lower power
than GPU
• Short time design
than ASIC
15
PythonでRF
16
• Scikit-learnを使うだけ︕簡単︕
オブジェクトを宣⾔
学習
推論
開発したツールフロー
Off‐line learning by scikit‐learn (software)
Training
Dataset
scikit‐learn
Hyper
Parameter
(by Grid‐
search)
Random
Forest
Host
Code
Kernel
Code aocx
Binary
Host
PC
FPGA
Board
aoc
gcc
RF2AOC
17
(論⽂がアクセプトされれば)Xilinx版を近⽇公開予定︕
scikit-learn を使ったコード⽣成
• 内部のデータ構造にアクセス→再帰的にコード⽣成
18
Tree 1 Tree 2 Tree n
C1
C2
C1
Voter
C1 (Class)
Input
...
len(model.estimators_) … ⽊の個数
model.estimators_[i] … i番⽬の⽊にアクセス
以降, tree = model.estimators_[i] として
tree.tree_.children_left
tree.tree_.children_right
→⽊の⼦ノードにアクセス, 再帰的に
アクセス可能
tree.tree_.threshold … 現時点のしきい値
tree.tree_.feature … ⽊の⼊⼒変数リスト
tree.tree_.value … 認識したクラスインデックス
⽣成されたコード
• if-then-else形式で出⼒
19
Tree 1 Tree 2 Tree n
C1
C2
C1
Voter
C1 (Class)
Input
...
フルパイプライン化
Tree 1 Tree 2 Tree b
C1 C2
C1
Voter
C1
X (Input)
...
20
マルチプレクサベースの実現
21
システムデザインツールの利⽤
22
①
②
④
③
1. Behavior design
+ pragmas
2. Profile analysis
3. IP core generation by HLS
4. Bitstream generation by
FPGA CAD tool
5. Middle ware generation
↓
Automatically done
短精度整数演算
float X1, X2;
(set inputs)
result = tree(X1, X2);
__kernel int tree( 
__global const float X1, 
__global float X2){
(fetch inputs)
if( X2 < 0.53){
if( X2 < 0.29){
return C1;
} else {
if( X1 < 0.63){
return C2;
} else {
return C1;
}
}
...
int X;
(set inputs)
result = tree(X & 0x3FFF, 
(X >> 16) & 0x3FFF);
__kernel int tree( 
__global const int X1, 
__global int X2){
(fetch inputs)
if( X2 < 4341){ // 0.53*213
if( X2 < 2375){ // 0.29*213
return C1;
} else {
if( X1 < 5160){ // 0.63*213
return C2;
} else {
return C1;
}
} ..
Host
Program
Kernel
Program
23
短精度ビット⻑と分類精度
0.0
5.0
10.0
15.0
20.0
25.0
30.0
35.0
40.0
45.0
6 7 8 9 10 11 12 13 14
Misclassification Rate [%]
n‐bit Fixd Point Precision
Dermatology
Arrhythmia
Contraceptive Method Choice
Glass Identification
Hayes‐Roth
Hepatitis
Ionosphere
Iris
24
分類⽊の実現
X1
X2
c1 c2
c3
X2
c4 X3
c5 c6
Tree1 Tree2
X1
X2
X2
X3
c3
c1 c2
c4
c5   c6
Tree1 Tree2
25
時分割によるリソース共有
__kernel int RF( 
__global float X1, X2, X3){
(fetch inputs)
for( int i = 0; i < 2; i++){
if( i == 0) class = tree1(X1,X2,X3);
else class = tree2(X1,X2,X3);
voting[class]++; // voter
}
}
..
X1
X2
X2
*
c1 c4
Voter
*
X3
c2 c4
c3 c5 c3 c6
26
ループ展開による
スループット向上
__kernel int RF( 
__global float X1,X2,X3){
(fetch inputs)
#pragma unroll 2
for( int i = 0; i < 2; i++){
if( i == 0) class = tree1(X1,X2,X3);
else class = tree2(X1,X2,X3);
voting[class]++; // voter
}
}
..
X1 X2 X3
c3
c1 c2
c4
c5   c6
Voter
Voter
Register
27
実験結果
28
実験⽅法
Pre‐learned
Random
Forest
C‐
Code
CUDA
Code
Binary
Binary CPU
GPU
Cython gcc
CUDAT nvcc
Binary Host
PC
29
他のプラットフォームとの⽐較
• Implemented RF following devices
• CPU: Intel Core i7 650
• GPU: NVIDIA GeForce GTX Titan
• FPGA: Terasic DE5-NET
• Measure dynamic power including
the host PC
• Test bench: 10,000 random vectors
• Execution time including
communication time between
the host PC and devices
30
GPU
FPGA
GPU, CPUとの⽐較
31
GPU@86W
GeForce Titan
CPU@13W
Xeon (R) E5607
FPGA@15W
Stratix V A7
Name LPS LPS/W LPS LPS/W LPS LPS/W
Dermatology 336.2 3.9 211.6 16.3 3221.2 214.7
Contraceptive 
Method
521.9 6.1 286.4 22.0 10924.3 728.3
Glass 
Identification
726.7 8.5 587.5 45.2 6442.3 429.5
Hayes‐Roth 1512.9 17.6 1165.5 89.7 12884.6 859.0
Hepatitis 739.1 8.6 662.7 51.0 8209.9 547.3
Ionosphere 821.0 9.5 595.9 45.8 9663.5 644.2
Iris 446.6 5.2 436.7 33.6 4831.7 322.1
LPS: 1秒間に検索できるデータ数
FPGAに適した計算法
• ×ホストやオフチップメモリを頻繁にアクセス
• GPUやCPUと⽐較して帯域が1桁狭い
• ○外部I/Oやオンチップメモリを利⽤
FPGAFPGA
||||||||
DDRDDR
DDRDDR
I/OI/O I/OI/O
FPGAFPGA
||||||||
DDRDDR
DDRDDR
I/OI/O I/OI/O
ADC
RAM
ここに依存するアプリだと負け 32
プログラミングモデルの違い
33
D1 D2 D3 D4 D5
↓ ↓ ↓ ↓ ↓
CC CC CC CC CC
↓ ↓ ↓ ↓ ↓
広帯域
DDR4/DDR5 DDR3
HW1 D1 D2 D3 D4
HW2 D1 D2 D3 D4
HW3 D1 D2 D3 D4
HW4 D1 D2 D3 D4
狭
帯域
GPU FPGA
• 均⼀な演算を空間的に並列実⾏
• 均⼀な演算器
• ワープダイバージェント (if⽂ダメ)
• 帯域・動作周波数が⾼い
• 特定な演算を時間的に並列実⾏
(要はパイプライン︕)
• カスタマイズした演算器
• 帯域・動作周波数は低い
他の識別器との⽐較
34
ディープニューラルネットワークと
⽐較して
• ⼩規模データのタスクに適⽤可能
• 短時間学習
• 強⼒な計算機環境不要
• ローカル(エッジ)での学習可能
• ハイパーパラメータのチューニング不要
• FPGAで⾼性能を発揮できるデータ構造
35
Deep Forestへ拡張
• Sliding Window + Cascaded Forestの組合せ
36
Z.H.Zhou, J.Feng, “Deep Forest: Towards An Alternative to Deep Neural 
Networks,”arXiv:1702.08835, [v2] Wed, 31 May 2017.
データセットを⽤いた認識率の⽐較
• MNIST(⼿書き⽂字)データセットの認識率
• ORL(顔認識)データセット
37
データセットが少ないため
データセットを⽤いた認識率の⽐較
(続)
• 画像認識CIFAR10 (10クラス5万枚学習)
38
SOTAなCNN
CNNとRandom Forestの⽐較
• 認識率
• データセットが少ない場合: RF(というかCNNはダメ)
• 単純(スパース)なデータセット: ほぼ同等の認識率→MNISTはここ
• ⼤量のデータセット: CNN
• (MNISTでの)学習時間
• RF: CPUで約5分(中原所有のノートパソコン, Thinkpad X1 Cardbon)
• CNN(LeNet5): GPU Titan X (Pascal)で約5分
• (MNISTに必要な)ハードウェア量
• RF: 18706 LUTs, 42982 FFs, 175 18Kb BRAMs
• CNN: 34419 LUTs, 33029 FFs, 115 18Kb BRAMs
• (MNISTの)推論時間
• RF: 約5000 FPS@100MHz, Zedboard使⽤時
• CNN: 約200 FPS@100MHz, Zedboard使⽤時
39
データセット次第ではCNNよりも同等なHW・認識精度で25倍⾼速
まとめ
• Random ForestをFPGAで実装
• DNNよりも(少ないデータセットで)⾼速に学習
• Scikit-learnを使った学習・コード⽣成
• FPGAで性能を発揮できるデータセット
• ヘテロジニアスなパイプライン
• GPUが苦⼿とする構造
• Xilinx SDSoC, Intel SDK OpenCLを使ったお⼿軽実装
• Deep Forestの紹介
• RFよりも認識性能は上だが、コストに⾒合うかは疑問
• No Free Lunch TheoremはHWから⾒ても真でした
→あらゆる問題で性能に優れる万能な機械学習HWは存在しない
とはいうものの… 40

More Related Content

PDF
Attentionの基礎からTransformerの入門まで
PDF
ICLR2019 読み会in京都 ICLRから読み取るFeature Disentangleの研究動向
PPTX
モデルアーキテクチャ観点からの高速化2019
PPTX
Sliced Wasserstein距離と生成モデル
PDF
最近のディープラーニングのトレンド紹介_20200925
PDF
Tensor flow usergroup 2016 (公開版)
PDF
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
PDF
直交領域探索
Attentionの基礎からTransformerの入門まで
ICLR2019 読み会in京都 ICLRから読み取るFeature Disentangleの研究動向
モデルアーキテクチャ観点からの高速化2019
Sliced Wasserstein距離と生成モデル
最近のディープラーニングのトレンド紹介_20200925
Tensor flow usergroup 2016 (公開版)
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
直交領域探索

What's hot (20)

PDF
SSD: Single Shot MultiBox Detector (ECCV2016)
PPTX
How Much Position Information Do Convolutional Neural Networks Encode?
PDF
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
PPTX
Polyphony: Python ではじめる FPGA
PDF
生成モデルの Deep Learning
PPTX
[DL輪読会]Few-Shot Unsupervised Image-to-Image Translation
PPTX
これからの Vision & Language ~ Acadexit した4つの理由
PPTX
[DL輪読会]GANSynth: Adversarial Neural Audio Synthesis
PPTX
[DL輪読会]Pyramid Stereo Matching Network
PDF
マルチコアを用いた画像処理
PDF
MIRU2016 チュートリアル
PPTX
[DL輪読会]Pay Attention to MLPs (gMLP)
PDF
Gpu vs fpga
PDF
Crfと素性テンプレート
PDF
【DL輪読会】Patches Are All You Need? (ConvMixer)
PPTX
【論文紹介】How Powerful are Graph Neural Networks?
PDF
組み込み関数(intrinsic)によるSIMD入門
PDF
条件分岐とcmovとmaxps
PDF
メタスタディ (Vision and Language)
PDF
【論文紹介】 Attention Based Spatial-Temporal Graph Convolutional Networks for Traf...
SSD: Single Shot MultiBox Detector (ECCV2016)
How Much Position Information Do Convolutional Neural Networks Encode?
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
Polyphony: Python ではじめる FPGA
生成モデルの Deep Learning
[DL輪読会]Few-Shot Unsupervised Image-to-Image Translation
これからの Vision & Language ~ Acadexit した4つの理由
[DL輪読会]GANSynth: Adversarial Neural Audio Synthesis
[DL輪読会]Pyramid Stereo Matching Network
マルチコアを用いた画像処理
MIRU2016 チュートリアル
[DL輪読会]Pay Attention to MLPs (gMLP)
Gpu vs fpga
Crfと素性テンプレート
【DL輪読会】Patches Are All You Need? (ConvMixer)
【論文紹介】How Powerful are Graph Neural Networks?
組み込み関数(intrinsic)によるSIMD入門
条件分岐とcmovとmaxps
メタスタディ (Vision and Language)
【論文紹介】 Attention Based Spatial-Temporal Graph Convolutional Networks for Traf...
Ad

Viewers also liked (20)

PDF
(公開版)Reconf研2017GUINNESS
PDF
A Random Forest using a Multi-valued Decision Diagram on an FPGa
PDF
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
PDF
FPGAX2016 ドキュンなFPGA
PDF
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
PDF
リアルタイムレンダリングでのNPR表現
PDF
Verilog-HDL Tutorial (14)
PDF
Verilog-HDL Tutorial (15) hardware
PDF
Naist2015 dec ver1
PDF
Verilog-HDL Tutorial (13)
PDF
Verilog-HDL Tutorial (15) software
PDF
Verilog-HDL Tutorial (12)
PDF
Verilog-HDL Tutorial (9)
PDF
FPL15 talk: Deep Convolutional Neural Network on FPGA
PDF
Verilog-HDL Tutorial (11)
PDF
Nested RNSを用いたディープニューラルネットワークのFPGA実装
PDF
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
PDF
Altera sdk for open cl アンケート集計結果(公開版)
PDF
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
PDF
Beatroboでのハードウェアプロトタイピング
(公開版)Reconf研2017GUINNESS
A Random Forest using a Multi-valued Decision Diagram on an FPGa
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
FPGAX2016 ドキュンなFPGA
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
リアルタイムレンダリングでのNPR表現
Verilog-HDL Tutorial (14)
Verilog-HDL Tutorial (15) hardware
Naist2015 dec ver1
Verilog-HDL Tutorial (13)
Verilog-HDL Tutorial (15) software
Verilog-HDL Tutorial (12)
Verilog-HDL Tutorial (9)
FPL15 talk: Deep Convolutional Neural Network on FPGA
Verilog-HDL Tutorial (11)
Nested RNSを用いたディープニューラルネットワークのFPGA実装
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
Altera sdk for open cl アンケート集計結果(公開版)
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
Beatroboでのハードウェアプロトタイピング
Ad

Similar to (公開版)FPGAエクストリームコンピューティング2017 (20)

PDF
深層学習フレームワーク Chainer の開発と今後の展開
PDF
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
PDF
2012研究室紹介(大川)
PDF
[2016-12-01] DDBJデータ解析チャレンジ報告:機械学習コンペティションのタスク設計とルール設定
PPTX
研究者のための Python による FPGA 入門
PDF
【Unity道場スペシャル 2017札幌】乱数完全マスター
PDF
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
PPTX
Statically detecting vulnerability under memory pressure using exhaustive search
PDF
DSF2018講演スライド
PDF
PCAの最終形態GPLVMの解説
PDF
PythonによるDeep Learningの実装
PDF
エヌビディアが加速するディープラーニング ~進化するニューラルネットワークとその開発方法について~
PPTX
令和元年度 実践セミナー - Deep Learning 概論 -
PDF
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
PDF
2021 03-09-ac ri-nngen
PDF
Python 機械学習プログラミング データ分析ライブラリー解説編
PPTX
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
PDF
Proof summit 2017 for slideshare
PDF
論文紹介:Dueling network architectures for deep reinforcement learning
PDF
実世界に埋め込まれる深層学習
深層学習フレームワーク Chainer の開発と今後の展開
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
2012研究室紹介(大川)
[2016-12-01] DDBJデータ解析チャレンジ報告:機械学習コンペティションのタスク設計とルール設定
研究者のための Python による FPGA 入門
【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017京都】乱数完全マスター 京都編
Statically detecting vulnerability under memory pressure using exhaustive search
DSF2018講演スライド
PCAの最終形態GPLVMの解説
PythonによるDeep Learningの実装
エヌビディアが加速するディープラーニング ~進化するニューラルネットワークとその開発方法について~
令和元年度 実践セミナー - Deep Learning 概論 -
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
2021 03-09-ac ri-nngen
Python 機械学習プログラミング データ分析ライブラリー解説編
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
Proof summit 2017 for slideshare
論文紹介:Dueling network architectures for deep reinforcement learning
実世界に埋め込まれる深層学習

More from Hiroki Nakahara (10)

PDF
FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
PDF
ROS User Group Meeting #28 マルチ深層学習とROS
PDF
FPGAX2019
PDF
SBRA2018講演資料
PDF
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
PDF
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
PDF
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
PDF
FPT17: An object detector based on multiscale sliding window search using a f...
PDF
Verilog-HDL Tutorial (8)
PDF
Verilog-HDL Tutorial (7)
FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
ROS User Group Meeting #28 マルチ深層学習とROS
FPGAX2019
SBRA2018講演資料
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
FPT17: An object detector based on multiscale sliding window search using a f...
Verilog-HDL Tutorial (8)
Verilog-HDL Tutorial (7)

(公開版)FPGAエクストリームコンピューティング2017