HELLO DNN 2017/05/11 @新竹碼
農
講者簡介
李奕坊 (Evan)
經歷:
Skymizer
Marvell
- Software engineer of CPU R&D
department
因為NN原理看得很煩, 所以直接拿手邊的例子來玩,
從中學習。
今天來分享一個特別的例子。
今天要講什麼 ?
DNN 簡介
一個影像辨識以外的成功案例
DNN時代的機會
今天不會有什麼
怎麼用tensorflow/keras
DNN裡面的數學  正在謙卑的學習中
怎麼架構自己的DNN  神祕 !
或是
ROADMAP
http://link.springer.com/chapter/10.1007%2F978-3-642-10467-1_1
Deep learning –
Deep NN in Machine learning
Learned by
given input and answer
AI
Other
s, ex:
Exper
t
Syste
m
WHY DNN IS SO HOT ?
AlphaGo
ILSVRC
(ImageNet Large Scale Visual Recognition competition)
Before AlexNet, SVM is top for ILSVRC
DEEP NEURAL NETWORK
http://neuralnetworksanddeeplearning.com/cha
A neuron
LEARNING OF A NEURON (1/2)
Perceptron  an early version of
neuron
(about 60 years ago)
Given input X1, X2 and output Y1, obtain
the value of W11 W12, and b1
Linear kernel function: y1 = W11x1 +
W12x2 + b1
noise
LEARNING OF A NEURON (2/2)
X1 X2 Y1
0 0 0
0 1 0
1 0 0
1 1 1
W11*0 + W12*0 + b1 < 0
W11*0 + W12*1 + b1 < 0
W11*1 + W12*0 + b1 < 0
W11*1 + W12*1 + b1 > 0
b1 = -4
W11 = 2
W12 = 3
W11 < -b1
W12 < -b1
W11 + W12 > -b1
y1 = W11x1 + W12x2 + b1
b1 < 0
Target:
Learning “AND function”
Obtain a line to separate
blue and red points into two dimensions
XOR PROBLEM
X1 X2 Y1
0 0 0
0 1 1
1 0 1
1 1 0
Not linear separable in one layer
 other non linear functions
Need 2nd line to separate 2 domain
 2 layers
KERNEL FUNCTIONS
Sigmoid function
Radial basis function
Polynomial
 ….....
TODAY: MULTI-LAYERS +
KERNEL FUNCTIONS
http://cs231n.github.io/convolutional-ne
http://p.migdal.pl/2017/04/30/teaching-deep-lear
一個影像辨識以外的成功案例
緣起
Skymizer 致力於加速手機與電腦效能。
使用Iterative compilation
我們想做什麼 ?
algorithm
Option
Set 1
Option
set 2
Option
set 3
Option set拿去編, 然後去跑分
build run
score
build run
score
build run
score
gen opt set
使用前
我們想做什麼 ?
trained
Model
Option
set 1
Option
set 2
Option
set 3
good
bad
bad
為了節省時間, (或是增加explore次數)
預測是 good 的option set再拿去跑分數
algorithm
gen opt set
Build
score
使用後
Run
目標
用資料train出一個model, 它預測good的準確度
愈高愈好, 這樣我們可以去試更多的option
聽起來很簡單
感覺像這樣
I HAVE TENSORFLOW
http://avex.jp/pikotaro/
I HAVE DATA
Tons of data
http://avex.jp/pikotaro/
UH…....
http://avex.jp/pikotaro/
UH…....
http://avex.jp/pikotaro/
資料怎麼接到TENSORFLOW ?
我要準備哪些資料 ?
我的NN網路長怎樣 ?
我的資料怎麼送到NN網路當input ?
我要預測什麼 ?
實際作法
概念
2萬組option set去跑分 for dhrystone,
– 所以我們有2萬筆option set, 和實際分數和-O3 比的
improvement (幾趴)
– 其中1萬筆拿來train model, 另外1萬筆拿來對答案
Another 10k
10K
Option
set
10K
Improv
-ement
trained
Model
Y
10K
Option
set
predict
X trained
Model
10k
10K
Improv
-ement
obtain
accuracy
train
10K
Improv-
ement
資料怎麼接到TENSORFLOW ?
我要準備準備哪些資料 ?  it depends
我的NN網路長怎樣 ?  keras exampmle
我的資料怎麼送到NN網路當input ?
 option set轉成option總表中的0 or 1
ex: -O3 -funroll-loops -finline -fweb …..
 [0,0,1,0,1.......]
我要預測什麼 ?  要預測exactly 優化幾%做不出來。
 把要預測的值簡化成8個。
資料怎麼接到TENSORFLOW ?
我要準備準備哪些資料 ?  it depends
我的NN網路長怎樣 ?  start from mnist_mlp
我的資料怎麼送到NN網路當input ?
 option set轉成option總表中的0 or 1
ex: -O3 -funroll-loops -finline -fweb …..
 [0,0,1,0,1.......]
我要預測什麼 ?  要預測exactly 優化幾%做不出來。
 把要預測的值簡化成8個。
資料怎麼接到TENSORFLOW ?
我要準備準備哪些資料 ?  it depends
我的NN網路長怎樣 ?  keras exampmle
我的資料怎麼送到NN網路當input ?
 option set轉成option總表中的0 or 1
ex: -O3 -funroll-loops -finline -fweb …..
 [0,0,1,0,1.......]
我要預測什麼 ?  要預測exactly 優化幾%做不出來。
 把要預測的值簡化成8個。
資料怎麼接到TENSORFLOW ?
我要準備準備哪些資料 ?  it depends
我的NN網路長怎樣 ?  keras exampmle
我的資料怎麼送到NN網路當input ?
 option set轉成option總表中的0 or 1
ex: -O3 -funroll-loops -finline -fweb …..
 [0,0,1,0,1.......]
我要預測什麼 ?  要預測exactly 優化幾%做不出來。
 把要預測的值簡化成8個。
Y[4]Y[5]Y[6]Y[7]
0.02 0.04
Y[1]
Y[2]
Y[3]
Y[0] = 沒分數, build or run 壞了
接起來像這樣
NN
from
mnist_mlp
set 1
0
1
0
0
0
1
.
.
.
.
.
.
.
.
1
set 2
0
1
0
0
0
1
.
.
.
.
.
.
.
.
1
set 10000
0
1
0
0
0
1
.
.
.
.
.
.
.
.
1
…...
out1
0
1
0
0
0
0
0
0
out2
0
1
0
0
0
0
0
0
out 1000
0
1
0
0
0
0
0
0
…...
要跑多久
CPU
2016 i7
Train 1萬筆: 約莫8.7小時
GPU
nVidia GTX 1070
Train 1萬筆: 5分鐘以內
實驗結果
是good我們才想真的下去跑
也就是說有預測到落在Y[1], Y[2], Y[3]對我們來說就是猜到了
猜中good的準確率71%
Train好的model拿去預測eembc1.1 的automotive也是
68~71%準確率
Y[4]Y[5]Y[6]Y[7]
0.02 0.04
Y[1]
Y[2]
Y[3]
Y[0] = 做不出來
未來可做方向
認真唸書和實驗, 把精準度提高
之後可以朝 “模型組合”的方向前進, 簡單來說就是:
把不同的program的model都train出來,
當有新的program要tune時:
1. 檢測基本option set對新program的影響。
2. 看這些基本的option set的結果和哪個trained model最像
3. 要跑分前先問model, 真的預測會變好再下去跑。
DNN時代的機會
data
ML framework
model
Inference
meta
?
train
collect
design
data
ML framework
inference
predict
* Inspiration
* Observation
* Domain knowhow
* Reduce training time
weigh
ts
NN arch
export deploy
Human HPC LPC
* Compression
* Format
(NNEF)
* Power
* Performance
REFERENCE
AlexNet:
http://vision.stanford.edu/teaching/cs231b_spring1415
/slides/alexnet_tugce_kyunghee.pdf
XOR problem:
http://home.agh.edu.pl/~vlsi/AI/xor_t/en/main.htm
https://www.stockfeel.com.tw/機器學習的衰頹興盛:從類
神經網路到淺層學習/
http://qingkaikong.blogspot.tw/2016/11/machine-learning-3-artific
Q & A

Hello DNN

Editor's Notes

  • #3 s
  • #4 簡介大家都聽爛了 在Marvell的case 讓大家討論一下大學習時代, 這個遊戲怎麼玩
  • #6 AI -> Machine learning -> Supervised -> NN Deep learning = Deep NN in Machine learning 有不deep的learning 嗎? Shallow learning SVM -> 低維度不可分, 那就拉到高維度分看看
  • #7 2012 supervision之前都用SVM 2012 大家都用CNN, ILSVRC 網站可以查
  • #8 所謂NN = Neural Network, Hidden layer愈多就愈deep 這些layer就是做啥? 每一層怎麼接也是學問 例如CNN做影像辨識, 裡面有可能是特徵擷取或映射到其它空間之類的 每一層都有數個神經元, 上一層的神經元算完傳給下一層當input 那所謂的學習是指在train這些線的權重, 代表每一層的每個input的重要性。
  • #9 看一個最簡單的例子
  • #11 學習XOR 有困難, 造成 NN的寒冬, 1980~1990時才有能力算多層
  • #13 隨著computing power的進步, 可以算愈來愈複雜的東西
  • #17 剛好都在做iterative compilation 所有會一直做編code/run code/拿分數的動作
  • #19 把目標再清楚寫一次 我們的系統一直在跑分, 有一堆資料