Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会...
-
Upload
ryo-yamamoto -
Category
Technology
-
view
339 -
download
1
Transcript of Deep learning勉強会第1回:ディープラーニングとは何か(チームラボ勉強会...
Deep Learning 勉強会第一回 Deep Learning 入門もうすぐスタートします!資料は #general / YouTube 配信ページ 参照
はじめに2
Deep Learning 勉強会• Deep Learning の発展
– 2012 年に画像処理コンペで登場してから、機械学習の各分野で活躍中– 例 : Google
• 画像検索、 Gmail スパム判定、音声認識、翻訳、 web 検索などがどんどん Deep Learning に置き換えられてきている– 専門知識格差がリセットされ、多数の研究者が参入
• 毎日新しい論文とそのコードが共有されている
• この勉強会の趣旨– エンジニアとして、 Deep Learning の仕組みを理解しよう– 手っ取り早く知りたい人は、 YouTube で松尾豊先生の動画を検索
3
4
Deep Learning 勉強会• 第一回 Deep Learning 入門
– Deep Learning の理解に必要な基礎知識を解説します• 第二回 Deep Learning と画像処理
– Deep Learning は画像処理分野を完全に塗り替えましたどのように画像処理に応用するのかを解説します• 第三回 Deep Learning と言語処理
– 最近になって Deep Learning は自動翻訳など、言語処理分野も塗り替えています。これらの応用を解説します
5
今日の目次1. ニューラルネットワーク2. オートエンコーダー3. Deep Learning4. 補足今日の内容は割と地味ですが、次回以降の内容の土台になる部分なのでガマンして聞いて下さい!
6
1. ニューラルネットワーク
ニューラルネットワークとはN 次元の float 配列を入力するとM 次元の float 配列を出力する関数
7入力
… …
出力
ニューラルネット
ニューラルネットワークとはN 次元の float 配列を入力するとM 次元の float 配列を出力する関数
8入力
… … … …
出力
9
例:スパムメール判別
… … …
単語 “ debt” の数単語 “ money” の数
単語 “ click” の数単語 “ Viagra” の数
スパムである確率スパムでない確率
メール本文
10
例:桜の開花日予測
… … …
1 月上旬の気温1 月下旬の気温4 月上旬の気温4 月下旬の気温
開花日 (1/1 からの日数 )
気象データ
11
例:手書き数字認識
… … …
(0, 0) の輝度(0, 1) の輝度
(27, 26) の輝度(27,27) の輝度
数字” 0” の確率数字” 1” の確率
手書き文字のピクセルデータ(28x28 gray-scale)
…
数字” 8” の確率数字” 9” の確率
入力層28x28=784 個
ニューロン ニューロン同士の結合
ニューラルネットワーク
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
結合の重み
13
ニューラルネットワークの性質• Float 配列を入力すると、 Float 配列が出力される• 入力層・隠れ層 ( 複数 ) ・出力層 からなる• 各層には複数のニューロンがあり、隣接する層のニューロン間には重み付きの結合がある• 隠れ層の出力は活性化関数を通す (sigmoid など )• 出力層の出力は出力関数を通す (softmax など )
14
ニューラルネットワークの性質• Float 配列を入力すると、 Float 配列が出力される• 入力層・隠れ層 ( 複数 ) ・出力層 からなる• 各層には複数のニューロンがあり、隣接する層のニューロン間には重み付きの結合がある• 隠れ層の出力は活性化関数を通す (sigmoid など )• 出力層の出力は出力関数を通す (softmax など )
15
活性化関数: sigmoid 関数
歴史的によく使われた出力範囲は 0 〜 1
16
活性化関数: tanh 関数
出力範囲は -1 〜 1
17
活性化関数: ReLU 関数
区分線形ユニット関数 (Rectified Linear Unit)計算効率・学習効率が良いためDeep Learning でよく用いられる
18
ニューラルネットワークの性質• Float 配列を入力すると、 Float 配列が出力される• 入力層・隠れ層 ( 複数 ) ・出力層 からなる• 各層には複数のニューロンがあり、隣接する層のニューロン間には重み付きの結合がある• 隠れ層の出力は活性化関数を通す (sigmoid など )• 出力層の出力は出力関数を通す (softmax など )
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 に正規化
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 濃度
男である確率
女である確率
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
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
大きすぎ→小さくする小さすぎ→大きくする
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
大きすぎ→小さくする小さすぎ→大きくする
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
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
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
大きすぎ→小さくする小さすぎ→大きくする
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
大きすぎ→小さくする小さすぎ→大きくする
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
大きすぎ→小さくする小さすぎ→大きくする
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
大きすぎ→小さくする小さすぎ→大きくする
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
大きすぎ→小さくする小さすぎ→大きくする
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
大きすぎ→小さくする小さすぎ→大きくする
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
大きすぎ→小さくする小さすぎ→大きくする
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
大きすぎ→小さくする小さすぎ→大きくする
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
大きすぎ→小さくする小さすぎ→大きくする
35
ニューラルネットワークの学習結合重みをそれぞれ微修正する修正後は同じ入力に対し、出力が正解に近づく
入力層 隠れ層 出力層
3-12-51-2
1-2-2012-1-12
4-2
30
-1-2
大きすぎ→小さくする小さすぎ→大きくする
36
ニューラルネットの学習まとめ• 入力と正解を与え、出力が正解に近づくように全ての結合重みを微修正
– 誤差逆伝播法 (Back Propagation) と呼ぶ• たくさんのデータについて何度もこの処理を繰り返すと正解に近い値を出力するようになる• 結合重みの初期値は乱数にする• 数学的に正しくは…
– 出力と正解の差をロス関数としてモデル化– ロス関数を最小化するように、勾配法で結合重みを最適化
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
38
確率的勾配降下法 (SGD: Stochastic Gradient Descent)
• 実際の学習では確率的勾配降下法 (SGD) という手法を使う– ランダムにデータを X 個取り出し(バッチ)、その X 個について精度が高くなるように Backpropagation でニューラルネットを更新– ↑を繰り返す– X が小さいと学習が不安定になりやすい
X が大きいと(更新回数が少なくなるので)学習が遅くなる• 実装
1. 学習データ配列をシャッフル2. 前から X 個(例えば 50 とか 100 とか)ずつ取り出して学習3. 1. に戻る
39
ニューラルネットの例:スパムメール判別
… … …
単語 “ debt” の数単語 “ money” の数
単語 “ click” の数単語 “ Viagra” の数
スパムスパムでない
メール本文
40
例:桜の開花日予測
… … …
1 月上旬の気温1 月下旬の気温4 月上旬の気温4 月下旬の気温
開花日 (1/1 からの日数 )
気象データ
41
例:手書き数字認識
… … …
(0, 0) の輝度(0, 1) の輝度
(27, 26) の輝度(27,27) の輝度
数字” 0”数字” 1”
手書き文字のピクセルデータ(28x28 gray-scale)
…
数字” 8”数字” 9”
入力層28x28=784 個
※機械学習の評価ではこの MNIST 手書き数字データセットをよく用いる
42
例:一般物体認識
… … …
(0, 0) の R 成分(0, 0) の G 成分
(479, 359) の G 成分(479, 359) の B 成分
“ 猫”“ 犬”
リサイズ画像のピクセルデータ(360x480 RGB)
…
“ 自動車”“ トラック”
入力層360x480x3= 518,400 個
※現在トップレベルの一般物体認識はほとんどこのモデル (ただし隠れ層は数十層以上)
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)
この技術 (深層強化学習 ) については先日の「人工生命勉強会」参照
44
例:自動運転
… … …
カメラ (0, 0) の R 成分カメラ (0, 0) の G 成分
LIDAR 出力 (99 次元目 )LIDAR 出力 (100 次元目 )
“ ハンドル右”の価値“ ハンドル左”の価値
車の各センサーの値
…
“ アクセル強”の価値“ ブレーキ強”の価値
45
ニューラルネットワークまとめ• Float 配列を入力すると、 Float 配列が出力される• 入力層、隠れ層 ( 複数 ) 、出力層 からなる• 各層には複数のニューロンがあり、隣接する層のニューロン間には重み付きの結合がある• 隠れ層の出力は活性化関数を通す (sigmoid など )• 出力層の出力は出力関数を通す (softmax など )
• 誤差逆伝播法 (Back Propagation) により結合重みを学習できる
46
2. オートエンコーダー
オートエンコーダー(自己符号化器)• 近年のニューラルネットの急激な性能向上のきっかけとなった技術
– 現在はより簡単な手法(ドロップアウト)が開発されあまり使われていない• 知らなくても実装には困らないが、ニューラルネットの本質を理解するためには理解しておきたい
47
オートエンコーダー(自己符号化器)の例• 47都道府県の降水確率を入力• 隠れ層は 5 ニューロン、出力層は 47 ニューロン• 出力の値が入力に近くなるように学習させる
48
…北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率
鹿児島県の降水確率沖縄県の降水確率
70
30
0
50
0
20
入力層 47 個 隠れ層 5 個
…
出力層 47 個
北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率鹿児島県の降水確率沖縄県の降水確率
近づける
松尾豊「人工知能は人間を超えるか」で解説されている例
49
オートエンコーダーは何をしているのか• 47 次元のベクトルを、 5 次元のベクトルに圧縮し、再度 47 次元に復元• 情報圧縮と展開(エンコードとデコード)• 重要な特徴の抽出、要約
…北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率
鹿児島県の降水確率沖縄県の降水確率
70
30
0
50
0
20
入力層 47 個 隠れ層 5 個
…
出力層 47 個
北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率鹿児島県の降水確率沖縄県の降水確率
近づける
50
例えば• 隠れ層に、地域ごとの平均降水確率のデータを持たせる• 悪くない情報圧縮ができそう
…北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率
鹿児島県の降水確率沖縄県の降水確率
70
30
0
50
0
20
入力層 47 個 隠れ層 5 個
…
出力層 47 個
北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率鹿児島県の降水確率沖縄県の降水確率
近づける
北海道・東北の平均降水確率 55
30
12
0
5
関東の平均降水確率中部・近畿の平均降水確率 中国・四国の平均降水確率九州・沖縄の平均降水確率
55
55
5
55
5
5
51
オートエンコーダーとは• 大量の降水確率データを入れてオートエンコーダを学習させると自動的に「地域」の概念が取得される
– 適切な情報圧縮方法(特徴量)を自動獲得…
北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率
鹿児島県の降水確率沖縄県の降水確率
70
30
0
50
0
20
入力層 47 個 隠れ層 5 個
…
出力層 47 個
北海道の降水確率青森県の降水確率秋田県の降水確率宮崎県の降水確率鹿児島県の降水確率沖縄県の降水確率
近づける
北海道・東北の平均降水確率 55
30
12
0
5
関東の平均降水確率中部・近畿の平均降水確率 中国・四国の平均降水確率九州・沖縄の平均降水確率
55
55
5
55
5
5
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)
…
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)
…
隠れ層の各ニューロンを可視化すると※結合重みが大きいピクセルを黒 重みが負に大きいピクセルを白
それなりの特徴量が自動的に得られる
ピクセルの特定領域をみるニューロン(手書き数字における ”地方” )
人間にはよくわからないニューロンもある
54
オートエンコーダーとは• 入力層 (N 個 ), 出力層 (N 個 ), 隠れ層 (1 層 , M 個 ) のニューラルネットワーク ( ただし M < N)• 出力を入力に近づけるように学習する• 大量のデータを入れると特徴量が学習される• オートエンコーダーは教師なし学習
– 例:手書き数字を学習させる際、その画像が何の数字かの情報は不要– データ収集しやすく、大量のデータを用意しやすい
55
Denoising オートエンコーダー(雑音除去自己符号化器)• オートエンコーダーの特徴量抽出力を高める手法• オートエンコーダー自体は 90 年代からあったが、
2010 年頃にこの手法が開発されて Deep Learning精度が急上昇
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 個
…
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 にする!
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%)
通常のオートエンコーダー
数字のの検出器らしきもの通常のものよりクリアな特徴量
59
Denoising オートエンコーダーとは• 入力層 (N 個 ) , 出力層 (N 個 ), 隠れ層 (1 層 , M 個 ) のニューラルネットワーク (M N≧ のこともある )• 元の入力にノイズを乗せたものを入力とし出力を「元の入力」に近づけるように学習• 通常のオートエンコーダーよりも特徴量抽出性能が高い
– より難しいタスク(ノイズを除去する)に耐えるように学習されるから– データのバリエーションが増幅されるから
60
3. DEEP LEARNING
Deep Learning(深層学習)とは• 隠れ層が多いニューラルネットを使った機械学習• 多層ニューラルネットの学習は難しい
– 過学習 (Over-fitting)
61
62
過学習 (Over-fitting)
未学習 (Under-fitting) 過学習 (Over-fitting)
識別器が精密すぎて学習データに過度に適応し逆に性能が悪くなる識別器が雑すぎて学習が不十分 ちょうどよい学習
63
過学習への対策• 人工的に学習データを増やす• 積層 Denoising オートエンコーダーによる事前学習• 重み減衰• ドロップアウト
64
過学習への対策• 人工的に学習データを増やす• 積層 Denoising オートエンコーダーによる事前学習• 重み減衰• ドロップアウト
65
人工的にデータを増やす• 学習データに変形を加えたものを自動生成し、学習データに加える
– 弾性変形、回転、ノイズ付加などでデータを10〜100倍に拡張– データ量が増えることにより、過学習しにくくなる
66
過学習への対策• 人工的に学習データを増やす• 積層 Denoising オートエンコーダーによる事前学習• 重み減衰• ドロップアウト
67
積層 Denoising オートエンコーダー• 教師ありデータによる学習の前に、教師なしデータとオートエンコーダーにより事前学習を行う
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 にする!
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 にする!
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 にする!
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)
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)
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 個
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 個
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 個
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 個
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 個
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 個
…
79
階層 Denoising オートエンコーダー• Denoising オートエンコーダーで隠れ層を1層ずつ学習して積み上げる• 最後の隠れ層の上に出力層をのせる• 事前学習
– 隠れ層の学習は教師なしデータ– 例:画像認識であれば、 web を無作為にクロールした画像を利用できる– 良い特徴量を取り出せるように、隠れ層の重みが学習される
• ファインチューニング– 出力層を乗せた後は、教師データを用いて通常の誤差逆伝播法で学習する– 隠れ層の重みは、事前学習の値を初期値として、再度調整される
• 良い結合重みを初期値として学習できるため、局所解に陥りにくい
80
過学習への対策• 人工的に学習データを増やす• 積層 Denoising オートエンコーダーによる事前学習• 重み減衰• ドロップアウト
81
重み減衰 (weight decay)
• 一部の結合重みが極端に大きくならないようにする– 特定の経路に過剰に依存すると、過学習に陥りやすい
• ニューラルネットの学習時結合重みを一定の割合で減衰– 数学的に重みの2乗和を小さくすることに相当( L2正規化ともいう)
82
過学習への対策• 人工的に学習データを増やす• 積層 Denoising オートエンコーダーによる事前学習• 重み減衰• ドロップアウト
83
ドロップアウト• 学習を行う際、ランダムに 50% のニューロンを OFF にして学習する
… … …
(0, 0) の輝度(0, 1) の輝度
(27, 26) の輝度(27,27) の輝度
数字” 0”数字” 1”
手書き文字のピクセルデータ(28x28 gray-scale)
…
数字” 8”数字” 9”
入力層28x28=784 個
84
ドロップアウト• 学習を行う際、ランダムに 50% のニューロンを OFF にして学習する
… … …
(0, 0) の輝度(0, 1) の輝度
(27, 26) の輝度(27,27) の輝度
数字” 0”数字” 1”
手書き文字のピクセルデータ(28x28 gray-scale)
…
数字” 8”数字” 9”
入力層28x28=784 個
85
ドロップアウト• 学習を行う際、ランダムに 50% のニューロンを OFF にして学習する
… … …
(0, 0) の輝度(0, 1) の輝度
(27, 26) の輝度(27,27) の輝度
数字” 0”数字” 1”
手書き文字のピクセルデータ(28x28 gray-scale)
…
数字” 8”数字” 9”
入力層28x28=784 個
86
ドロップアウト• 学習を行う際、ランダムに 50% のニューロンを OFF にして学習する
… … …
(0, 0) の輝度(0, 1) の輝度
(27, 26) の輝度(27,27) の輝度
数字” 0”数字” 1”
手書き文字のピクセルデータ(28x28 gray-scale)
…
数字” 8”数字” 9”
入力層28x28=784 個
87
ドロップアウト• 学習を行う際、ランダムに 50% のニューロンを OFF にして学習する• 特定のニューロンのみに依存した学習を防ぐ• 多数のニューロンで総合的に判断するように学習する• Deep Learning の学習において最も重要で効果的な手法の1つ
88
Deep Learning まとめ• 多層ニューラルネットによる機械学習• 過学習を防ぐ手法
– 人工的に学習データを増やす– 積層 Denoising オートエンコーダーによる事前学習– 重み減衰– ドロップアウト
89
4. リソース
Deep Learning のライブラリ• Theano(2009): 歴史が長く、サンプルコードが多い• Caffe(2014): 画像処理に強い。サンプルコード多い• Chainer(2015): 動的にネットワーク定義。和製、サンプル少ない• Keras(2015): Theano/TensorFlow のラッパー、シンプル• TensorFlow(2015): 利用者急増中。 Google製、 iOS/Android対応• MxNet(2016): Kaggle の最強識別器を作ったチーム (DMLC)製• 言語はほとんど Python
90
サンプルコード (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
92
Deep Learning の情報源• CreativeAi.net
– 機械学習や技術的アートネタのキュレーションサイト
• GitXiv– 論文共有サイト ArXivの論文と対応する GitHub のソースコードを紐付けるサイト
93
まとめ
今日のキーワード• ニューラルネット
– 結合重み、活性化関数 (sigmoid, tanh, ReLU) 、出力関数 (softmax)– 誤差逆伝播 (Back Propagation)
• オートエンコーダー、 Denoising オートエンコーダー• Deep Learning
– 学習データを増やす– 積層 Denoising オートエンコーダーによる事前学習– 重み減衰– ドロップアウト
94
95
次回予告• 第一回 Deep Learning 入門
– Deep Learning の理解に必要な基礎知識を解説します• 第二回 Deep Learning と画像処理
– Deep Learning は画像処理分野を完全に塗り替えましたどのように画像処理に応用するのかを解説します• 第三回 Deep Learning と言語処理
– 最近になって Deep Learning は自動翻訳など、言語処理分野も塗り替えています。これらの応用を解説します
画像分類
物体検出
トラッキング
超解像
エッジ抽出
領域分割
スタイル変換
次回予告• Deep Learning でどのように画像処理するか• 畳み込みニューラルネット• できれば予習用にこの動画を見ておいてください!
– Google のオンライン大学講義に日本語字幕をつけたものです
103
104
今後5/16 Deep Learning 勉強会 (1)5/23 Deep Learning 勉強会 (2)5/30 Deep Learning 勉強会 (3)その後 Deep Learningハンズオン会(何回か)その後定期的に、人工知能もくもく会 /情報共有会これらの情報にキャッチアップしたい方はSlack の #ai トピックに参加して下さい!