cuda convnetとdeep learning with...
TRANSCRIPT
![Page 1: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/1.jpg)
CUDA ConvnetとDeep Learning with MultiGPU
株式会社クロスコンパス
http://www.xcompass.com
2014.9.5
![Page 2: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/2.jpg)
ConvNet
ConvNet
畳み込みニューラルネットワークのC++/CUDAによる実装
任意の非巡回グラフのモデル設計が可能
Fermi-generation GPU (GTX 4xx, GTX 5xx, Tesla相当)が必要
自然画像分類ベンチマークCIFAR10 10種類画像の分類を約20分でエラー13%まで減らす
http://code.google.com/p/cuda-convnet/
ConvNet2 (2014/07/18~)
Kepler-generation GPUs (Geforce Titan, K20, K40)の 学習時間が短く
マルチGPUの学習が可能
https://code.google.com/p/cuda-convnet2/
2
![Page 3: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/3.jpg)
ConvNetで用いられるニューラルネットワーク
3
名前 結合 重み共有 出力
data - データ、画像サイズなど
logprob, labvec - 分類ラベル
fc 全 - ノード活性化関数による
conv 畳み込み ○ ノード活性化関数による
local 畳み込み × ノード活性化関数による
rnorm 畳み込み - 入力の正規化
pool 畳み込み - 入力の最大値、平均など
dropout - - ドロップアウト
probs 全 - Softmax
logprob - - Cross Entropy
![Page 4: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/4.jpg)
ニューラルネットワーク
Neural Network (NN)
神経回路網を模倣することで脳機能、主に人工知能を実現する努力
ノードとエッジで構成
4
ノード=神経細胞
エッジ=軸索
![Page 5: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/5.jpg)
フィードフォワード ニューラルネットワーク
Feed-forward Neural Network (FNN)
ループ結合を持たないニューラルネットワーク
5
フィードフォワードニューラルネットワーク
入力 出力
・・・
・・・
・・・
ノード=神経細胞
エッジ=軸索
中間
![Page 6: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/6.jpg)
局所結合ニューラルネットワーク
事前知識を用いたニューラルネットワーク設計の一つ
6
・・・
1次元局所結合 2次元局所結合
入力 出力
入力 出力
![Page 7: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/7.jpg)
畳み込みニューラルネットワーク
Convolutional NN (CNN)
指定範囲入力ノードをグループ化
同グループは同出力ノードに結合
結合パラメータのグループを
フィルタと呼ぶ
各グループの結合パラメータを共有することでパラメータを削減可能
7
入力 出力
入力 出力
フィルタ
![Page 8: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/8.jpg)
畳み込みニューラルネットワーク
デジタル画像を構成するピクセルは3原色で表現されている
チャンネルとは、その原色の一つだけで構成される動作サイズ画像
入力に多数チャンネルで構成された場合、同数チャンネルのフィルタによって出力ノードに結合
8
チャンネル1
出力
チャンネル2
入力 フィルタ
チャンネル1
チャンネル2
![Page 9: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/9.jpg)
畳み込みニューラルネットワーク
9
フィルタが多数ある場合、同数分の出力チャンネルが得られる
入力
出力
チャンネル1
チャンネル2
フィルタ1
フィルタ2
![Page 10: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/10.jpg)
誤差逆伝搬(バックプロパゲーション)
FNNの学習法の一つ
出力の誤差を小さくなるように誤差と入力で重みを調整
学習対象の重みまで、入力を伝搬、出力誤差を逆伝搬
10
入力 出力
・・・
・・・
・・・
入力 出力
・・・
・・・
・・・
学習対象重み(赤エッジ)まで 入力を伝搬(ピンクエッジ)
学習対象重み(赤エッジ)まで 出力誤差を伝搬(ピンクエッジ)
![Page 11: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/11.jpg)
ノードの出力
データが入力された際、エッジの持つ重みと掛け算を行い
その結果を結合先ノードで足し算を行う
ノードの持つ活性化関数を通して出力する(Sigmoid, tanh, ReLU)
11
出力
z=∑i
x i w i
y=f ( z )
f :活性化関数
入力
x1
x2
⋮
xN
重み
w1
w2
⋮
wN
![Page 12: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/12.jpg)
Softmax
データ分類するニューラルネットワークの出力に用いられる
出力の正規化の一つ
出力の合計が1.0になり、分類の確からしさとして扱う
12
・・・
入力
x1
x2
⋮
xN
出力
y i=e
xi
∑i
ex i
![Page 13: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/13.jpg)
Cross Entropy
データ分類するニューラルネットワークの目的関数に用いられる
出力誤差の一つ
入力と教師が一致する場合誤差が0になる
13 ・・・
入力
x1
x2
⋮
x N
教師
t 1
t 2
⋮
tN
出力
y i=t i log x i+(1−t i) log (1− x i)
={log x i , t i=1
log (1−x i) , t i=0
x i∈(0,1)
![Page 14: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/14.jpg)
ドロップアウト
Improving neural networks by preventing co-adaptation of feature detectors, G. E. Hinton et al., 2012
小数データで多層ニューラルネットワークを学習する際に生じる過学習の回避法の一つ
ランダムにノードを無効化
14 ドロップアウト (グレー)
入力 出力
・・・
・・・
・・・
![Page 15: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/15.jpg)
マルチGPUによるCNN学習
One weird trick for parallelizing convolutional neural networks, A. Krizhevsky, 2014
8 NVIDIA K20 GPUs
2 Intel 12 core CPUs
15
1 2 4 80
2
4
6
8
期待
結果
GPU数
時間短縮
(倍
)
![Page 16: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/16.jpg)
Data Parallelism
各スレッドが別データで同ネットワークを学習
重みの計算コストが多ければ効果的 (CNN)
16
データ1
データ2
データN
NN_1
NN_1
NN_1
・・・
・・・
スレッド1
スレッド2
スレッドN
・・・
![Page 17: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/17.jpg)
Model Parallelism
各スレッドが同データでネットワークの違う部分を学習
ネットワークが可能な限り、スレッドが互いにコミュニケート
ノード活性化の計算コストが多ければ効果的 (全結合FNN)
17
NN_1
データ1
データ1
データ1
部分1
部分2
部分N
・・・
・・・
スレッド1
スレッド2
スレッドN
・・・
![Page 18: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/18.jpg)
実験
ConvNet / ConvNet2
データ CIFAR10
ImageNet
GPUs GeForce GTX 560 Ti
2 Tesla K20c
18
![Page 19: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/19.jpg)
ネットワーク構造 (CIFAR10)
19
data
labels
conv1 pool1 conv2 pool2
local3 local4 fc10 probs
logprob
約100万パラメータ
![Page 20: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/20.jpg)
パラメータ数 (CIFAR10)
20
output weight input channel input width filter size filter width stride
data 1728 3 24(32)
labels 1
conv1 36864 4800 3 24 64 5 1
pool1 9216 64 24 3 2
conv2 9216 36864 64 12 64 3 1
pool2 2304 64 12 3 2
local3 1152 663552 64 6 32 3 1
local4 1152 331776 32 6 32 3 1
fc10 10 11520 32 6
probs 10
logprob
sum 61653 1048512
![Page 21: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/21.jpg)
学習の速さ (CIFAR10)
21
2GPUの使い方次第で同時に処理できるデータが増加
0 1 2 30
50
100
150
200
250
300
350
400
GeForce GTX 560 Ti
Tesla K20c
Tesla K20c x 2 (data parallelism)
経過時間 (100秒 )
学習データ
(30M
B)
![Page 22: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/22.jpg)
ネットワーク構造 (ImageNet)
22
data
labvec
conv1 rnorm1
pool3
fc1000 probs
logprob
pool1
conv2 rnorm2 pool2
conv3 conv4 conv5
dropout2 fc4096a dropout1 fc4096b
約7500万パラメータ
![Page 23: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/23.jpg)
パラメータ数 (ImageNet)
23
output weight input channel input width filter size filter width stride
data 150528 3 224(256)
labvec 1
conv1 254016 23232 3 224 64 11 4
rnorm1 254016 64 63 5
pool1 61504 64 63 3 2
conv2 184512 307200 64 31 192 5 1
rnorm2 184512 192 31 5
pool2 43200 192 31 3 2
conv3 86400 663552 192 15 384 3 1
conv4 57600 884736 384 15 256 3 1
conv5 57600 589824 256 15 256 3 1
pool3 12544 256 15 3 2
fc4096a 4096 51380224 256 7
dropout1 4096
fc4096b 4096 16777216
dropout2 4096
fc1000 1000 4096000
probs 1000
logprob
sum 1364817 74721984
![Page 24: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/24.jpg)
学習の速さ (ImageNet)
24
0 1 2 3 40
20
40
60
80
100
120
140
160
180
Tesla K20c
Tesla K20c x 2 (data parallelism)
Tesla K20c x 2 (model parallelism)
Tesla K20c x 2 (data, model parallelism)
経過時間 (100秒 )
学習データ
(90M
B)
2GPUの使い方次第で同時に処理できるデータが増加
![Page 25: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色](https://reader033.vdocuments.site/reader033/viewer/2022041509/5e272541f8852d13472ffe0d/html5/thumbnails/25.jpg)
Reference
Improving neural networks by preventing co-adaptation of feature detectors, G. E. Hinton et al., 2012
One weird trick for parallelizing convolutional neural networks, A. Krizhevsky, 2014
25