Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会...

104
Deep Learning 勉勉勉 Deep Learning 勉勉 勉勉勉勉勉勉勉勉勉勉勉勉勉勉 #general / YouTube 勉勉勉勉勉 勉勉

Transcript of Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会...

Page 1: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

Deep Learning 勉強会第一回 Deep Learning 入門もうすぐスタートします!資料は #general / YouTube 配信ページ 参照

Page 2: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

はじめに2

Page 3: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

Deep Learning 勉強会• Deep Learning の発展

– 2012 年に画像処理コンペで登場してから、機械学習の各分野で活躍中– 例 : Google

• 画像検索、 Gmail スパム判定、音声認識、翻訳、 web 検索などがどんどん Deep Learning に置き換えられてきている– 専門知識格差がリセットされ、多数の研究者が参入

• 毎日新しい論文とそのコードが共有されている

• この勉強会の趣旨– エンジニアとして、 Deep Learning の仕組みを理解しよう– 手っ取り早く知りたい人は、 YouTube で松尾豊先生の動画を検索

3

Page 4: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

4

Deep Learning 勉強会• 第一回 Deep Learning 入門

– Deep Learning の理解に必要な基礎知識を解説します• 第二回 Deep Learning と画像処理

– Deep Learning は画像処理分野を完全に塗り替えましたどのように画像処理に応用するのかを解説します• 第三回 Deep Learning と言語処理

– 最近になって Deep Learning は自動翻訳など、言語処理分野も塗り替えています。これらの応用を解説します

Page 5: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

5

今日の目次1. ニューラルネットワーク2. オートエンコーダー3. Deep Learning4. 補足今日の内容は割と地味ですが、次回以降の内容の土台になる部分なのでガマンして聞いて下さい!

Page 6: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

6

1. ニューラルネットワーク

Page 7: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

ニューラルネットワークとはN 次元の float 配列を入力するとM 次元の float 配列を出力する関数

7入力

… …

出力

ニューラルネット

Page 8: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

ニューラルネットワークとはN 次元の float 配列を入力するとM 次元の float 配列を出力する関数

8入力

… … … …

出力

Page 9: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

9

例:スパムメール判別

… … …

単語 “ debt” の数単語 “ money” の数

単語 “ click” の数単語 “ Viagra” の数

スパムである確率スパムでない確率

メール本文

Page 10: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

10

例:桜の開花日予測

… … …

1 月上旬の気温1 月下旬の気温4 月上旬の気温4 月下旬の気温

開花日 (1/1 からの日数 )

気象データ

Page 11: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

11

例:手書き数字認識

… … …

(0, 0) の輝度(0, 1) の輝度

(27, 26) の輝度(27,27) の輝度

数字” 0” の確率数字” 1” の確率

手書き文字のピクセルデータ(28x28 gray-scale)

数字” 8” の確率数字” 9” の確率

入力層28x28=784 個

Page 12: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

ニューロン ニューロン同士の結合

ニューラルネットワーク

12入力層 隠れ層 出力層

3-12-51-2

2

1

+6

-5

+1

-1

+2

1-2-2012-1-12

-0.2

-2

+1

4-2

30

-1-2

+1.4

-2.3

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

血液中の成分 X 濃度

血液中の成分 Y 濃度

男である確率

女である確率

活性化関数神経細胞の活動をモデル化入力が閾値を超えると発火 (=1)超えなければ発火しない (=0)sigmoid, tanh, ReLU など

sigmoid 関数 出力関数目的に応じて出力値を整える関数クラス分け (classification) 問題ではsoftmax 関数 が用いられるsoftmax 関数は出力値を確率に変換

2

ニューロンの出力

3

結合の重み

Page 13: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

13

ニューラルネットワークの性質• Float 配列を入力すると、 Float 配列が出力される• 入力層・隠れ層 ( 複数 ) ・出力層 からなる• 各層には複数のニューロンがあり、隣接する層のニューロン間には重み付きの結合がある• 隠れ層の出力は活性化関数を通す (sigmoid など )• 出力層の出力は出力関数を通す (softmax など )

Page 14: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

14

ニューラルネットワークの性質• Float 配列を入力すると、 Float 配列が出力される• 入力層・隠れ層 ( 複数 ) ・出力層 からなる• 各層には複数のニューロンがあり、隣接する層のニューロン間には重み付きの結合がある• 隠れ層の出力は活性化関数を通す (sigmoid など )• 出力層の出力は出力関数を通す (softmax など )

Page 15: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

15

活性化関数: sigmoid 関数

歴史的によく使われた出力範囲は 0 〜 1

Page 16: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

16

活性化関数: tanh 関数

出力範囲は -1 〜 1

Page 17: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

17

活性化関数: ReLU 関数

区分線形ユニット関数 (Rectified Linear Unit)計算効率・学習効率が良いためDeep Learning でよく用いられる

Page 18: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

18

ニューラルネットワークの性質• Float 配列を入力すると、 Float 配列が出力される• 入力層・隠れ層 ( 複数 ) ・出力層 からなる• 各層には複数のニューロンがあり、隣接する層のニューロン間には重み付きの結合がある• 隠れ層の出力は活性化関数を通す (sigmoid など )• 出力層の出力は出力関数を通す (softmax など )

Page 19: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

19

出力関数: softmax 関数入力を確率(合計 1 の正の値)に変換。認識問題に用いる

出力層

0

+1

-0.5

0.5

入力1

2.72

0.61

1.65

exp( 入力 )0.17

0.46

0.1

0.28

合計 1 に正規化

Page 20: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

20

ニューラルネットワークの学習ニューラルネットは多数の入力と正解のペアデータ (教師ありデータ )で結合重みを学習できる

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

血液中の成分 X 濃度

血液中の成分 Y 濃度

男である確率

女である確率

Page 21: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

21

ニューラルネットワークの学習1. 出力層の各ニューロンの出力が、大きすぎるか小さすぎるかを判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

Page 22: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

22

ニューラルネットワークの学習1. 出力層の各ニューロンの出力が、大きすぎるか小さすぎるかを判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

Page 23: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

23

ニューラルネットワークの学習2. 出力層への各結合重みが、大きすぎるか小さすぎるかを判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

Page 24: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

24

ニューラルネットワークの学習2. 出力層への各結合重みが、大きすぎるか小さすぎるかを判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

4

Page 25: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

25

ニューラルネットワークの学習2. 出力層への各結合重みが、大きすぎるか小さすぎるかを判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

4-2

Page 26: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

26

ニューラルネットワークの学習2. 出力層への各結合重みが、大きすぎるか小さすぎるかを判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

Page 27: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

27

ニューラルネットワークの学習3. 隠れ層 #2 の各ニューロンの出力が、大きすぎるか小さすぎるか判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

Page 28: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

28

ニューラルネットワークの学習3. 隠れ層 #2 の各ニューロンの出力が、大きすぎるか小さすぎるか判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

Page 29: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

29

ニューラルネットワークの学習4. 隠れ層 #2への各結合重みが、大きすぎるか小さすぎるかを判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

Page 30: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

30

ニューラルネットワークの学習4. 隠れ層 #2への各結合重みが、大きすぎるか小さすぎるかを判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

Page 31: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

31

ニューラルネットワークの学習5. 隠れ層 #1 の各ニューロンの出力が、大きすぎるか小さすぎるか判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

Page 32: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

32

ニューラルネットワークの学習5. 隠れ層 #1 の各ニューロンの出力が、大きすぎるか小さすぎるか判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

Page 33: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

33

ニューラルネットワークの学習6. 隠れ層 #1への各結合重みが、大きすぎるか小さすぎるかを判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

Page 34: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

34

ニューラルネットワークの学習6. 隠れ層 #1への各結合重みが、大きすぎるか小さすぎるかを判定

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

大きすぎ→小さくする小さすぎ→大きくする

Page 35: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

35

ニューラルネットワークの学習結合重みをそれぞれ微修正する修正後は同じ入力に対し、出力が正解に近づく

入力層 隠れ層 出力層

3-12-51-2

1-2-2012-1-12

4-2

30

-1-2

大きすぎ→小さくする小さすぎ→大きくする

Page 36: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

36

ニューラルネットの学習まとめ• 入力と正解を与え、出力が正解に近づくように全ての結合重みを微修正

– 誤差逆伝播法 (Back Propagation) と呼ぶ• たくさんのデータについて何度もこの処理を繰り返すと正解に近い値を出力するようになる• 結合重みの初期値は乱数にする• 数学的に正しくは…

– 出力と正解の差をロス関数としてモデル化– ロス関数を最小化するように、勾配法で結合重みを最適化

Page 37: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

37

ロス関数• 出力と正解のズレの大きさをモデル化する関数

– 2乗誤差 (mean squared error) :汎用– クロスエントロピー (cross entropy) :確率の場合に用いる

入力層 隠れ層 出力層

3-12-51-2

2

1

1-2-2012-1-12

4-2

30

-1-2

0.7

0.3

0.9

0.45

0.1

0.7

0.98

0.02

正しい出力

0

1

Page 38: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

38

確率的勾配降下法 (SGD: Stochastic Gradient Descent)

• 実際の学習では確率的勾配降下法 (SGD) という手法を使う– ランダムにデータを X 個取り出し(バッチ)、その X 個について精度が高くなるように Backpropagation でニューラルネットを更新– ↑を繰り返す– X が小さいと学習が不安定になりやすい

X が大きいと(更新回数が少なくなるので)学習が遅くなる• 実装

1. 学習データ配列をシャッフル2. 前から X 個(例えば 50 とか 100 とか)ずつ取り出して学習3. 1. に戻る

Page 39: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

39

ニューラルネットの例:スパムメール判別

… … …

単語 “ debt” の数単語 “ money” の数

単語 “ click” の数単語 “ Viagra” の数

スパムスパムでない

メール本文

Page 40: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

40

例:桜の開花日予測

… … …

1 月上旬の気温1 月下旬の気温4 月上旬の気温4 月下旬の気温

開花日 (1/1 からの日数 )

気象データ

Page 41: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

41

例:手書き数字認識

… … …

(0, 0) の輝度(0, 1) の輝度

(27, 26) の輝度(27,27) の輝度

数字” 0”数字” 1”

手書き文字のピクセルデータ(28x28 gray-scale)

数字” 8”数字” 9”

入力層28x28=784 個

※機械学習の評価ではこの MNIST 手書き数字データセットをよく用いる

Page 42: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

42

例:一般物体認識

… … …

(0, 0) の R 成分(0, 0) の G 成分

(479, 359) の G 成分(479, 359) の B 成分

“ 猫”“ 犬”

リサイズ画像のピクセルデータ(360x480 RGB)

“ 自動車”“ トラック”

入力層360x480x3= 518,400 個

※現在トップレベルの一般物体認識はほとんどこのモデル (ただし隠れ層は数十層以上)

Page 43: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

43

例:ビデオゲーム AI

… … …

(0, 0) の R 成分(0, 0) の G 成分

(159, 208) の G 成分(159, 209) の B 成分

“↑”キーを押す価値“←”キーを押す価値

ゲーム各時刻の映像出力(160x210 RGB)

“A”キーを押す価値“B”キーを押す価値

入力層160x210x3= 100,800 個

※ゲーム機 Atari の様々なゲームを AI に「生の映像入力」を見せて 人間並みにプレイさせた (Google DeepMind, 2015/02)

 この技術 (深層強化学習 ) については先日の「人工生命勉強会」参照

Page 44: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

44

例:自動運転

… … …

カメラ (0, 0) の R 成分カメラ (0, 0) の G 成分

LIDAR 出力 (99 次元目 )LIDAR 出力 (100 次元目 )

“ ハンドル右”の価値“ ハンドル左”の価値

車の各センサーの値

“ アクセル強”の価値“ ブレーキ強”の価値

Page 45: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

45

ニューラルネットワークまとめ• Float 配列を入力すると、 Float 配列が出力される• 入力層、隠れ層 ( 複数 ) 、出力層 からなる• 各層には複数のニューロンがあり、隣接する層のニューロン間には重み付きの結合がある• 隠れ層の出力は活性化関数を通す (sigmoid など )• 出力層の出力は出力関数を通す (softmax など )

• 誤差逆伝播法 (Back Propagation) により結合重みを学習できる

Page 46: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

46

2. オートエンコーダー

Page 47: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

オートエンコーダー(自己符号化器)• 近年のニューラルネットの急激な性能向上のきっかけとなった技術

– 現在はより簡単な手法(ドロップアウト)が開発されあまり使われていない• 知らなくても実装には困らないが、ニューラルネットの本質を理解するためには理解しておきたい

47

Page 48: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

オートエンコーダー(自己符号化器)の例• 47都道府県の降水確率を入力• 隠れ層は 5 ニューロン、出力層は 47 ニューロン• 出力の値が入力に近くなるように学習させる

48

…北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率

鹿児島県の降水確率沖縄県の降水確率

70

30

0

50

0

20

入力層 47 個 隠れ層 5 個

出力層 47 個

北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率鹿児島県の降水確率沖縄県の降水確率

近づける

松尾豊「人工知能は人間を超えるか」で解説されている例

Page 49: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

49

オートエンコーダーは何をしているのか• 47 次元のベクトルを、 5 次元のベクトルに圧縮し、再度 47 次元に復元• 情報圧縮と展開(エンコードとデコード)• 重要な特徴の抽出、要約

…北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率

鹿児島県の降水確率沖縄県の降水確率

70

30

0

50

0

20

入力層 47 個 隠れ層 5 個

出力層 47 個

北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率鹿児島県の降水確率沖縄県の降水確率

近づける

Page 50: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

50

例えば• 隠れ層に、地域ごとの平均降水確率のデータを持たせる• 悪くない情報圧縮ができそう

…北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率

鹿児島県の降水確率沖縄県の降水確率

70

30

0

50

0

20

入力層 47 個 隠れ層 5 個

出力層 47 個

北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率鹿児島県の降水確率沖縄県の降水確率

近づける

北海道・東北の平均降水確率 55

30

12

0

5

関東の平均降水確率中部・近畿の平均降水確率 中国・四国の平均降水確率九州・沖縄の平均降水確率

55

55

5

55

5

5

Page 51: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

51

オートエンコーダーとは• 大量の降水確率データを入れてオートエンコーダを学習させると自動的に「地域」の概念が取得される

– 適切な情報圧縮方法(特徴量)を自動獲得…

北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率

鹿児島県の降水確率沖縄県の降水確率

70

30

0

50

0

20

入力層 47 個 隠れ層 5 個

出力層 47 個

北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率鹿児島県の降水確率沖縄県の降水確率

近づける

北海道・東北の平均降水確率 55

30

12

0

5

関東の平均降水確率中部・近畿の平均降水確率 中国・四国の平均降水確率九州・沖縄の平均降水確率

55

55

5

55

5

5

Page 52: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

52

大量の画像をオートエンコーダーで学習させると?

MNIST 手書き数字データセット…

(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

0

255

0

0

入力層28x28=784 個

隠れ層 100 個

出力層28x28=784 個

(0, 0) の輝度(0, 1) の輝度(0, 2) の輝度(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

近づける

画像(28x28, gray)

Page 53: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

53

大量の画像をオートエンコーダーで学習させると?

MNIST 手書き数字データセット…

(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

0

255

0

0

入力層28x28=784 個

隠れ層 100 個

出力層28x28=784 個

(0, 0) の輝度(0, 1) の輝度(0, 2) の輝度(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

近づける

画像(28x28, gray)

隠れ層の各ニューロンを可視化すると※結合重みが大きいピクセルを黒 重みが負に大きいピクセルを白

それなりの特徴量が自動的に得られる

ピクセルの特定領域をみるニューロン(手書き数字における ”地方” )

人間にはよくわからないニューロンもある

Page 54: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

54

オートエンコーダーとは• 入力層 (N 個 ), 出力層 (N 個 ), 隠れ層 (1 層 , M 個 ) のニューラルネットワーク ( ただし M < N)• 出力を入力に近づけるように学習する• 大量のデータを入れると特徴量が学習される• オートエンコーダーは教師なし学習

– 例:手書き数字を学習させる際、その画像が何の数字かの情報は不要– データ収集しやすく、大量のデータを用意しやすい

Page 55: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

55

Denoising オートエンコーダー(雑音除去自己符号化器)• オートエンコーダーの特徴量抽出力を高める手法• オートエンコーダー自体は 90 年代からあったが、

2010 年頃にこの手法が開発されて Deep Learning精度が急上昇

Page 56: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

56

オートエンコーダー(再掲)

…(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

0

255

0

0

入力層28x28=784 個

出力層28x28=784 個

(0, 0) の輝度(0, 1) の輝度(0, 2) の輝度(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

近づける

画像 (28x28, gray)

隠れ層 100 個

Page 57: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

57

Denoising オートエンコーダー

出力層28x28=784 個

(0, 0) の輝度(0, 1) の輝度(0, 2) の輝度(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

ノイズが乗る前の入力に近づける!隠れ層 100 個

……(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

255

255

128

0

入力層28x28=784 個

画像 (28x28, gray)…

0

0

0

255

128

0

入力層28x28=784 個

ノイズ付加画像(28x28, gray)

ランダムに入力の 50%を0 にする!

Page 58: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

58

Denoising オートエンコーダー

…0

0

0

255

128

0

入力層28x28=784 個

隠れ層 100 個

出力層28x28=784 個

(0, 0) の輝度(0, 1) の輝度(0, 2) の輝度(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

ノイズが乗る前の入力に近づける!

ノイズ付加画像(28x28, gray)

……(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

255

255

128

0

入力層28x28=784 個

画像 (28x28, gray)

ランダムに入力の 50%を0 にする!

隠れ層のニューロンを可視化

通常よりも良い特徴量が抽出される

Denoising オートエンコーダー (ノイズ 50%)

通常のオートエンコーダー

数字のの検出器らしきもの通常のものよりクリアな特徴量

Page 59: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

59

Denoising オートエンコーダーとは• 入力層 (N 個 ) , 出力層 (N 個 ), 隠れ層 (1 層 , M 個 ) のニューラルネットワーク (M N≧ のこともある )• 元の入力にノイズを乗せたものを入力とし出力を「元の入力」に近づけるように学習• 通常のオートエンコーダーよりも特徴量抽出性能が高い

– より難しいタスク(ノイズを除去する)に耐えるように学習されるから– データのバリエーションが増幅されるから

Page 60: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

60

3. DEEP LEARNING

Page 61: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

Deep Learning(深層学習)とは• 隠れ層が多いニューラルネットを使った機械学習• 多層ニューラルネットの学習は難しい

– 過学習 (Over-fitting)

61

Page 62: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

62

過学習 (Over-fitting)

未学習 (Under-fitting) 過学習 (Over-fitting)

識別器が精密すぎて学習データに過度に適応し逆に性能が悪くなる識別器が雑すぎて学習が不十分 ちょうどよい学習

Page 63: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

63

過学習への対策• 人工的に学習データを増やす• 積層 Denoising オートエンコーダーによる事前学習• 重み減衰• ドロップアウト

Page 64: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

64

過学習への対策• 人工的に学習データを増やす• 積層 Denoising オートエンコーダーによる事前学習• 重み減衰• ドロップアウト

Page 65: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

65

人工的にデータを増やす• 学習データに変形を加えたものを自動生成し、学習データに加える

– 弾性変形、回転、ノイズ付加などでデータを10〜100倍に拡張– データ量が増えることにより、過学習しにくくなる

Page 66: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

66

過学習への対策• 人工的に学習データを増やす• 積層 Denoising オートエンコーダーによる事前学習• 重み減衰• ドロップアウト

Page 67: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

67

積層 Denoising オートエンコーダー• 教師ありデータによる学習の前に、教師なしデータとオートエンコーダーにより事前学習を行う

Page 68: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

68

階層 Denoising オートエンコーダー

…0

0

0

255

128

0

入力層28x28=784 個

隠れ層 #1100 個

出力層28x28=784 個

(0, 0) の輝度(0, 1) の輝度(0, 2) の輝度(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

ノイズが乗る前の入力に近づける!

……(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

255

255

128

0

入力層28x28=784 個

画像 (28x28, gray)

ランダムに入力の 50%を0 にする!

Page 69: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

69

階層 Denoising オートエンコーダー

…0

0

0

255

128

0

入力層28x28=784 個

隠れ層 #1100 個

出力層28x28=784 個

(0, 0) の輝度(0, 1) の輝度(0, 2) の輝度(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

ノイズが乗る前の入力に近づける!

……(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

255

255

128

0

入力層28x28=784 個

画像 (28x28, gray)

ランダムに入力の 50%を0 にする!

Page 70: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

70

階層 Denoising オートエンコーダー

…0

0

0

255

128

0

入力層28x28=784 個

隠れ層 #1100 個

……(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

255

255

128

0

入力層28x28=784 個

画像 (28x28, gray)

ランダムに入力の 50%を0 にする!

Page 71: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

71

階層 Denoising オートエンコーダー

隠れ層 #1100 個

…(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

255

255

128

0

入力層28x28=784 個

画像 (28x28, gray)

Page 72: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

72

階層 Denoising オートエンコーダー

隠れ層 #1100 個

…(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

255

255

128

0

入力層28x28=784 個

画像 (28x28, gray)

Page 73: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

73

階層 Denoising オートエンコーダー

…(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

255

255

128

0

入力層28x28=784 個

画像 (28x28, gray)

ランダムに入力の 50%を0 にする!… ……

隠れ層の元入力に近づける!隠れ層 #1

100 個 隠れ層 #1100 個 隠れ層 #2

100 個 隠れ層 #1100 個

Page 74: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

74

階層 Denoising オートエンコーダー

…(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

255

255

128

0

入力層28x28=784 個

画像 (28x28, gray)

ランダムに入力の 50%を0 にする!… ……

隠れ層の元入力に近づける!隠れ層 #1

100 個 隠れ層 #1100 個 隠れ層 #2

100 個 隠れ層 #1100 個

Page 75: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

75

階層 Denoising オートエンコーダー

…(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

255

255

128

0

入力層28x28=784 個

画像 (28x28, gray)

ランダムに入力の 50%を0 にする!… …

隠れ層 #1100 個 隠れ層 #1

100 個 隠れ層 #2100 個

Page 76: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

76

階層 Denoising オートエンコーダー

…(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

255

255

128

0

入力層28x28=784 個

画像 (28x28, gray)…

隠れ層 #1100 個 隠れ層 #2

100 個

Page 77: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

77

…140

255

255

255

128

0

階層 Denoising オートエンコーダー

…(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

入力層28x28=784 個

画像 (28x28, gray)…

隠れ層 #1100 個 隠れ層 #2

100 個

隠れ層 #3100 個

Page 78: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

78

階層 Denoising オートエンコーダー

…(0,0) の輝度(0, 1) の輝度(0, 2) の輝度

(27, 25) の輝度(27, 26) の輝度(27, 27) の輝度

140

255

255

255

128

0

入力層28x28=784 個

画像 (28x28, gray)…

隠れ層 #1100 個 隠れ層 #2

100 個 隠れ層 #3100 個

数字” 0”数字” 1”

数字” 8”数字” 9”

出力層10 個

Page 79: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

79

階層 Denoising オートエンコーダー• Denoising オートエンコーダーで隠れ層を1層ずつ学習して積み上げる• 最後の隠れ層の上に出力層をのせる• 事前学習

– 隠れ層の学習は教師なしデータ– 例:画像認識であれば、 web を無作為にクロールした画像を利用できる– 良い特徴量を取り出せるように、隠れ層の重みが学習される

• ファインチューニング– 出力層を乗せた後は、教師データを用いて通常の誤差逆伝播法で学習する– 隠れ層の重みは、事前学習の値を初期値として、再度調整される

• 良い結合重みを初期値として学習できるため、局所解に陥りにくい

Page 80: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

80

過学習への対策• 人工的に学習データを増やす• 積層 Denoising オートエンコーダーによる事前学習• 重み減衰• ドロップアウト

Page 81: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

81

重み減衰 (weight decay)

• 一部の結合重みが極端に大きくならないようにする– 特定の経路に過剰に依存すると、過学習に陥りやすい

• ニューラルネットの学習時結合重みを一定の割合で減衰– 数学的に重みの2乗和を小さくすることに相当( L2正規化ともいう)

Page 82: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

82

過学習への対策• 人工的に学習データを増やす• 積層 Denoising オートエンコーダーによる事前学習• 重み減衰• ドロップアウト

Page 83: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

83

ドロップアウト• 学習を行う際、ランダムに 50% のニューロンを OFF にして学習する

… … …

(0, 0) の輝度(0, 1) の輝度

(27, 26) の輝度(27,27) の輝度

数字” 0”数字” 1”

手書き文字のピクセルデータ(28x28 gray-scale)

数字” 8”数字” 9”

入力層28x28=784 個

Page 84: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

84

ドロップアウト• 学習を行う際、ランダムに 50% のニューロンを OFF にして学習する

… … …

(0, 0) の輝度(0, 1) の輝度

(27, 26) の輝度(27,27) の輝度

数字” 0”数字” 1”

手書き文字のピクセルデータ(28x28 gray-scale)

数字” 8”数字” 9”

入力層28x28=784 個

Page 85: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

85

ドロップアウト• 学習を行う際、ランダムに 50% のニューロンを OFF にして学習する

… … …

(0, 0) の輝度(0, 1) の輝度

(27, 26) の輝度(27,27) の輝度

数字” 0”数字” 1”

手書き文字のピクセルデータ(28x28 gray-scale)

数字” 8”数字” 9”

入力層28x28=784 個

Page 86: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

86

ドロップアウト• 学習を行う際、ランダムに 50% のニューロンを OFF にして学習する

… … …

(0, 0) の輝度(0, 1) の輝度

(27, 26) の輝度(27,27) の輝度

数字” 0”数字” 1”

手書き文字のピクセルデータ(28x28 gray-scale)

数字” 8”数字” 9”

入力層28x28=784 個

Page 87: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

87

ドロップアウト• 学習を行う際、ランダムに 50% のニューロンを OFF にして学習する• 特定のニューロンのみに依存した学習を防ぐ• 多数のニューロンで総合的に判断するように学習する• Deep Learning の学習において最も重要で効果的な手法の1つ

Page 88: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

88

Deep Learning まとめ• 多層ニューラルネットによる機械学習• 過学習を防ぐ手法

– 人工的に学習データを増やす– 積層 Denoising オートエンコーダーによる事前学習– 重み減衰– ドロップアウト

Page 89: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

89

4. リソース

Page 90: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

Deep Learning のライブラリ• Theano(2009): 歴史が長く、サンプルコードが多い• Caffe(2014): 画像処理に強い。サンプルコード多い• Chainer(2015): 動的にネットワーク定義。和製、サンプル少ない• Keras(2015): Theano/TensorFlow のラッパー、シンプル• TensorFlow(2015): 利用者急増中。 Google製、 iOS/Android対応• MxNet(2016): Kaggle の最強識別器を作ったチーム (DMLC)製• 言語はほとんど Python

90

Page 91: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

サンプルコード (Keras)

from keras.models import Sequentialfrom keras.layers.core import Activation, Dense

model = Sequential() # 通常のニューラルネットmodel.add(Dense(100, input_dim=784, activation=‘relu’))model.add(Dense(100, activation=‘relu’))model.add(Dense(10, activation=‘softmax’))

model.compile(loss='categorical_crossentropy’,optimizer='sgd’,metrics=['accuracy'])

model.fit(X_train, Y_train, nb_epoch=5, batch_size=32)

prediction = model.predict_classes(X_test, batch_size=32) 91

… …

入力層 (784) 隠れ層 (100)

隠れ層 (100)

出力層 (10)

ReLU

Page 92: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

92

Deep Learning の情報源• CreativeAi.net

– 機械学習や技術的アートネタのキュレーションサイト

• GitXiv– 論文共有サイト ArXivの論文と対応する GitHub のソースコードを紐付けるサイト

Page 93: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

93

まとめ

Page 94: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

今日のキーワード• ニューラルネット

– 結合重み、活性化関数 (sigmoid, tanh, ReLU) 、出力関数 (softmax)– 誤差逆伝播 (Back Propagation)

• オートエンコーダー、 Denoising オートエンコーダー• Deep Learning

– 学習データを増やす– 積層 Denoising オートエンコーダーによる事前学習– 重み減衰– ドロップアウト

94

Page 95: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

95

次回予告• 第一回 Deep Learning 入門

– Deep Learning の理解に必要な基礎知識を解説します• 第二回 Deep Learning と画像処理

– Deep Learning は画像処理分野を完全に塗り替えましたどのように画像処理に応用するのかを解説します• 第三回 Deep Learning と言語処理

– 最近になって Deep Learning は自動翻訳など、言語処理分野も塗り替えています。これらの応用を解説します

Page 96: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

画像分類

Page 97: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

物体検出

Page 98: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

トラッキング

Page 99: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

超解像

Page 100: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

エッジ抽出

Page 101: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

領域分割

Page 102: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

スタイル変換

Page 103: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

次回予告• Deep Learning でどのように画像処理するか• 畳み込みニューラルネット• できれば予習用にこの動画を見ておいてください!

– Google のオンライン大学講義に日本語字幕をつけたものです

103

Page 104: Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会 2016/5/16)

104

今後5/16 Deep Learning 勉強会 (1)5/23 Deep Learning 勉強会 (2)5/30 Deep Learning 勉強会 (3)その後 Deep Learningハンズオン会(何回か)その後定期的に、人工知能もくもく会 /情報共有会これらの情報にキャッチアップしたい方はSlack の #ai トピックに参加して下さい!