CUDA ConvnetとDeep Learning with...

25
CUDA ConvnetとDeep Learning with MultiGPU 株式会社クロスコンパス http://www.xcompass.com 2014.9.5

Transcript of CUDA ConvnetとDeep Learning with...

Page 1: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色

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原色

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原色

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原色

ニューラルネットワーク

Neural Network (NN)

神経回路網を模倣することで脳機能、主に人工知能を実現する努力

ノードとエッジで構成

4

ノード=神経細胞

エッジ=軸索

Page 5: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色

フィードフォワード ニューラルネットワーク

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原色

局所結合ニューラルネットワーク

事前知識を用いたニューラルネットワーク設計の一つ

6

・・・

1次元局所結合 2次元局所結合

入力 出力

入力 出力

Page 7: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色

畳み込みニューラルネットワーク

Convolutional NN (CNN)

指定範囲入力ノードをグループ化

同グループは同出力ノードに結合

結合パラメータのグループを

フィルタと呼ぶ

各グループの結合パラメータを共有することでパラメータを削減可能

7

入力 出力

入力 出力

フィルタ

Page 8: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色

畳み込みニューラルネットワーク

デジタル画像を構成するピクセルは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原色

畳み込みニューラルネットワーク

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原色

誤差逆伝搬(バックプロパゲーション)

FNNの学習法の一つ

出力の誤差を小さくなるように誤差と入力で重みを調整

学習対象の重みまで、入力を伝搬、出力誤差を逆伝搬

10

入力 出力

・・・

・・・

・・・

入力 出力

・・・

・・・

・・・

学習対象重み(赤エッジ)まで 入力を伝搬(ピンクエッジ)

学習対象重み(赤エッジ)まで 出力誤差を伝搬(ピンクエッジ)

Page 11: CUDA ConvnetとDeep Learning with MultiGPUwazalabo.com/wp-content/uploads/2014/09/20140905_section_1_xc.pdf · 畳み込みニューラルネットワーク デジタル画像を構成するピクセルは3原色

ノードの出力

データが入力された際、エッジの持つ重みと掛け算を行い

その結果を結合先ノードで足し算を行う

ノードの持つ活性化関数を通して出力する(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原色

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原色

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原色

ドロップアウト

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原色

マルチ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原色

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原色

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原色

実験

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原色

ネットワーク構造 (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原色

パラメータ数 (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原色

学習の速さ (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原色

ネットワーク構造 (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原色

パラメータ数 (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原色

学習の速さ (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原色

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