基礎から始める機械学習・深層学習

MathWorks Japan
アプリケーション エンジニアリング部 テクニカルコンピューティング
太田 英司© 2018 The MathWorks, Inc.
1

MATLABとは？
▪

科学技術計算のための統合環境– Matrix Laboratoryの略
Jack LittleCleve Moler– 米国で開発された行列演算ライブラリー LINPACK, EINSPACKを手軽に利用するソフトウェアとして開発された。
– 「プログラミングで悩むより、その先の本質を勉強して欲しい」との思いから開発されたソフトウェア。

2

主な特徴
▪

高速行列演算ライブラリー– 行列やベクトルの高速演算▪

豊富な拡張ライブラリー– コード量の削減– バグの削減▪

インタプリターによる対話的操作– 学習コストの削減– デバッグコストの削減

3

Agenda 機械学習の基礎- 教師あり学習と教師なし学習- 回帰と分類 音声信号の分類- 特徴抽出と分類器

 加速度データの分類- ニューラルネットによる分類

 時系列データの異常検出- 自己符号化器による異常検出 画像データの分類と異常検出- CNNと転移学習

10機械学習 – Machine Learning
人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法（※）

飛行機
MachineLearning

バイク
旅客船※）Wikipedia 「機械学習」 の項より引用
11

画像のカテゴリ分類（一般物体認識）

飛行機
MachineLearning

バイク
旅客船

いままでは Bag of Visual Words という手法がよく使われていた。
近年は畳み込みニューラルネットによる分類が着目を集める

Deep Learning !
12

ILSVRC (ImageNet Large Scale Visual Recognition Challenge)
ImageNet とは？
 画像認識の研究のための大規模な画像データベース
 1000のカテゴリを持ち、カテゴリ毎に1000枚の画像

http://www.image-net.org/

CNNの登場によって10%以上の性能向上(2012)
GoogLeNet, VGG等の深いCNNが登場(2014)13

回帰・分類回帰（Regression）

𝒙𝑦 =𝑓 𝒙; 𝜽ベクトル𝒚連続値

分類（Classification）

𝒙
ベクトル

𝑦 =𝑓 𝒙; 𝜽𝒚
離散値
14教師あり学習と教師なし学習

教師なし学習クラスタリング…

学習データなし

機械学習
分類

…

K-平均クラスタリング
階層クラスタリング
ニューラルネットワーク
混合ガウス分布
自己組織化マップ

線形判別・２次判別K-最近傍識別単純ベイズ分類決定木
アンサンブル学習
ニューラルネットワーク
サポートベクターマシン

教師あり学習学習データあり回帰
Neural Network Toolbox™
Statistics and Machine Learning Toolbox™

…

線形回帰モデル
一般化線形回帰モデル
非線形回帰モデル
回帰木
アンサンブル学習
ニューラルネットワーク
サポートベクター回帰
ガウス過程回帰15

分類・認識のタスク
普通メール

迷惑メール

画像認識

テキスト分類あ！

音声認識
16

音声信号の分類

17

【例題】 音声信号の分類

音声認識

あ！

18

【例題】 音声信号の分類

音声信号

パワースペクトル密度-55

0.15-60
0.1-65-700.05

振幅-750-80-0.05-85-90-0.1-95-0.15
1.5

1.55

1.61.65

時間 [sec]

1.7

1.75

1.8

1.85

-1000500

1000

1500

2000

2500

3000

3500

4000

周波数 [Hz]

第２フォルマント
第１フォルマント19

母音のフォルマントの分布
訓練用データの分布

3500

あいう
えお

第２フォルマント [Hz]

3000

2500

2000

1500

1000

500
100

200

300

400

500

600

700

800

900

1000

1100

第１フォルマント [Hz]600人分のフォルマントのデータ

data_for_training.xls
20

KNN 分類器（K最近傍分類器）
原理：近くにある K個の点を探して、多数決を採る

「え」

×「あ」

分類したい新しい特徴量

21

KNN分類器（K最近傍分類器）
分類器： d = fitcknn(X, T, ‘NumNeighbors’, 4)

特徴量

ラベル

予測： C = predict(d, Y)

予測されるラベル

新しい特徴量22

分類学習器（Classification Learner）
交差検定による性能評価によって、分類器を選択するツール

23

【例題】 音声信号の分類
入力
特徴抽出
特徴量
分類出力

マイクからの音声データ
Yule-Walker 法

第１・第２フォルマント
KNN分類器母音（あ・い・う・え・お）24Agenda 機械学習の基礎- 教師あり学習と教師なし学習- 回帰と分類 音声信号の分類- 特徴抽出と分類器

良い特徴量を選ぶことが重要！

 加速度データの分類- ニューラルネットによる分類

 時系列データの異常検出- 自己符号化器による異常検出 画像データの分類- CNNと転移学習

25

加速度データの分類

26

ニューラルネットワークとは？
神経細胞（ニューロン）の数学的なモデル化に起源を持つ学習器

神経細胞（ニューロン）➢ 軸索によりネットワークを構成➢ 電気的な興奮状態を伝え合う

画像提供： 独立行政法人 理化学研究所様27

ニューラルネットワークとは？
他の神経細胞からの興奮状態が伝わり、電位のレベルが上昇する

非興奮状態興奮状態

電位のレベルが閾値を超えると自身が発火する
28

ニューラルネットワークとは？
1

1

Weight
0

𝑥1

𝑥2

-1
Tangent Sigmoid

Logistic Sigmoid

𝑤1

Transfer Function

𝑤2

Σ

𝑓𝑦0
Rectified Linear Unit𝑏

𝑤𝑛𝑥𝑛𝑛

Bias
1

𝑦=𝑓

෍ 𝑤𝑘 ∙ 𝑥𝑘 + 𝑏
𝑘=129

ニューラルネットワークとは？
𝐼𝑊𝑥1

𝐿𝑊
𝑓1

Σ

𝑓1

Σ𝑥3

Σ

𝑓1
1

Layer 1

𝑦1

𝑓2

𝑦2

𝑓2

𝑦3

11

Σ

𝑓2
1

1𝑥2𝑥4

Σ

Σ
1
Layer 230

ニューラルネットワークによる推論

入力層

隠れ層

出力層

1120.20.00570

イヌ

1953.10.00220ネコ1231.50.97461

ウサギ

0.00000トリ31

ニューラルネットワークの学習
入力層

隠れ層

出力層

1520.40.00570イヌ

1251.20.10220

ネコ1731.60.85161ウサギ

0.02300トリ

誤差逆伝搬32

【例題】 人の活動状態の識別
歩行Classification

階段-上り

階段-下り

着席

直立
Dataset courtesy of:Davide Anguita, Alessandro Ghio, Luca Oneto, Xavier Parra and Jorge L. Reyes-Ortiz.
Human Activity Recognition on Smartphones using a Multiclass Hardware-Friendly Support Vector Machine.
International Workshop of Ambient Assisted Living (IWAAL 2012). Vitoria-Gasteiz, Spain. Dec 2012
http://archive.ics.uci.edu/ml/datasets/Human+Activity+Recognition+Using+Smartphones

寝る33【例題】 人の活動状態の識別34

【例題】 人の活動状態の識別35

【例題】 人の活動状態の識別
３軸の加速度センサーの情報を使って、人の活動状態を識別したい

階段？

歩行？

直立？

36

【例題】 人の活動状態の識別
3軸加速度センサーのデータを窓幅128で切り出し、ニューラルネットより活動状態を識別する

部分時系列（窓幅 128）

128 sample
37

【例題】 人の活動状態の識別
128 sample

xy

部分時系列（384 = 128 * 3 次元）z38

【例題】 人の活動状態の識別
３軸の加速度センサーのデータを使って、人の活動状態を識別したい
入力：384 次元
部分時系列（加速度）net = patternnet(20);net = train(net, x, t);

出力：6 次元人の活動状態（ラベル）t_hat = net(x);plotconfusion(t, t_hat)

1 0 0 0 0
0 0 1 0 0
0 1 0 0 00 0 0 0 00 0 0 1 10 0 0 0 039

【例題】 人の活動状態の識別

混合行列（2層のネットワークの場合）

混合行列（積層自己符号化器の場合）
40

Agenda 機械学習の基礎- 教師あり学習と教師なし学習- 回帰と分類 音声信号の分類- 特徴抽出と分類器

 加速度データの分類- ニューラルネットによる分類

特徴抽出は絶対のルールではない！

 時系列データの異常検出- 自己符号化器による異常検出 画像データの分類- CNNと転移学習

41

時系列データの異常検出

42

センサーデータからの異常検出

心電図

異常度

Keogh, E., Lin, J. and Fu, A. : HOT SAX : Efficiently Finding the Most Unusual Time Series Subsequence,in Proceedings of the Fifth IEEE International Conference on Data Mining, ICDM 05, pp.226-233
43自己符号化器による異常検出
正常な心電図から部分時系列を生成して、自己符号化器に学習させる
100 sample

正常な心電図自己符号化器44自己符号化器とは？
自己符号化器上のネットワークが恒等写像になるようにウェイトを学習する※ 正確には、MATLAB の Autoencoder は Sparse Autoencoder と呼ばれる中間層の活性に疎性を仮定したものになっている。詳細は後述の PDF を参照
45

自己符号化器による異常検出

自己符号化器元の正常な波形を再生するようにウェイトを学習する
46

自己符号化器による異常検出
正常な波形の場合は、きれいに元の波形を再生するが、異常な波形の場合はうまく再生できない！

異常な波形は正常な波形に戻そうとする

正常な波形の場合

異常な波形の場合
47

構造物の異常検出ある構造物に取り付けられた振動データの比較

正常

異常48

【例題】 構造ヘルスモニタリング▪

実験装置– ３階建ての建物の模型– ４ヶ所の加速度センサー– １階部分に振動発生装置– 人工的な損傷状態の発生▪

実験目的– センサーによる異常検出

Reference: Figueiredo, E., Park, G., Figueiras, J., Farrar, C., & Worden, K. (2009). Structural Health Monitoring
Algorithm Comparisons using Standard Data Sets. Los Alamos National Laboratory Report: LA-14393
49

【例題】 構造ヘルスモニタリング
Sensor #4

Sensor #3

Sensor #2

柱の破損・腐食など
Sensor #1

振動発生装置

住民・作業者など

Reference: Figueiredo, E., Park, G., Figueiras, J., Farrar, C., & Worden, K. (2009). Structural Health Monitoring
Algorithm Comparisons using Standard Data Sets. Los Alamos National Laboratory Report: LA-14393
50

【例題】 構造物ヘルスモニタリング
構造物の模型において、次の条件を変化させて幾つかの条件を作り出した。
・ 各階への重量（Mass）
・ 柱の硬さの低減（Stiffness reduction）
State
#1
#2
#3
#4
#5
#6
#7
#8
#9Description
Baseline condition
Mass = 1.2 kg at the base
Mass = 1.2 kg on the 1st floor
87.5% stiffness reduction in column 1BD
87.5% stiffness reduction in column 1AD and 1BD
87.5% stiffness reduction in column 2BD
87.5% stiffness reduction in column 2AD and 2BD
87.5% stiffness reduction in column 3BD
87.5% stiffness reduction in column 3AD and 3BD

上記９パターンのそれぞれで１０回の実験を繰り返し、合計９０回の実験を行ったものとします51

【例題】 構造物ヘルスモニタリング
State #1 を正常データとして学習させて、異常データが検知できるか調べたいState
#1
#2
#3
#4
#5
#6
#7
#8
#9

Description
Baseline condition
Mass = 1.2 kg at the base
Mass = 1.2 kg on the 1st floor
87.5% stiffness reduction in column 1BD
87.5% stiffness reduction in column 1AD and 1BD
87.5% stiffness reduction in column 2BD
87.5% stiffness reduction in column 2AD and 2BD
87.5% stiffness reduction in column 3BD
87.5% stiffness reduction in column 3AD and 3BD

正常データを学習させる

正常データ

異常データ異常データを検出できるか？
52SHMTools
Los Alamos National Laboratory

http://www.lanl.gov/projects/national-security-education-center/engineering/software/shm-data-sets-and-software.php53自己符号化器による異常検出
正常な振動データから部分時系列を生成して、自己符号化器に学習させる
25 sample

正常な振動データ

自己符号化器54自己符号化器による異常検出
正常な場合のデータを自己符号化器に学習させる

Sensor #1

Sensor #1

自己符号化器
Sensor #2

Sensor #2

Sensor #3

Sensor #3

Sensor #4

Sensor #455

自己符号化器による異常検出
異常を含む可能性のあるデータを自己符号化器に通して、再構成誤差を算出する
ch1

ch1ch2ch2

ch3ch3ch4ch4

学習済みの自己符号化器

ch1

ch1

ch1ch2ch2ch2ch3ch4
元の振動データ－ch3ch4
再構成されたデータ＝

ch3ch4

再構成誤差

二乗平均e1e2e3e4
平均二乗誤差56

自己符号化器による異常検出
正常データ

57

t-SNE とは？
直接目で見ることのできない高次元のデータを低次元にマップする手法（次元削減手法）

t-SNE

高次元空間（特徴量等）

低次元空間（２次元または３次元）

58

t-SNE による異常データのクラスタリング
State
#1
#2
#3
#4
#5
#6
#7
#8
#9

Description
Baseline condition
Mass = 1.2 kg at the base
Mass = 1.2 kg on the 1st floor
87.5% stiffness reduction in column 1BD
87.5% stiffness reduction in column 1AD and 1BD
87.5% stiffness reduction in column 2BD
87.5% stiffness reduction in column 2AD and 2BD
87.5% stiffness reduction in column 3BD
87.5% stiffness reduction in column 3AD and 3BD

それぞれの異常がひとつの島に対応しているらしい！

！

59

Agenda 機械学習の基礎- 教師あり学習と教師なし学習- 回帰と分類 音声信号の分類- 特徴抽出と分類器

 加速度データの分類- ニューラルネットによる分類

 時系列データの異常検出- 自己符号化器による異常検出

大量の正常データから異常が見える！

 画像データの分類- CNNと転移学習

60

画像データの分類

61

画像分類の応用例：株式会社大林組 様

3項目の評価にディープラーニングを適用
・風化変質（4分類）・割目間隔（5分類）
・割目状態（5分類）

AlexNet ＋ SVMの転移学習割目状態では89％の的中率※大林組様プレスリリースより参照
http://www.obayashi.co.jp/press/news20170912_01

土木学会
第72回年次学術講演会にて発表
62

Convolutional Neural Network（畳み込みニューラルネット）
Neural Network Toolbox
畳み込みニューラルネット（CNN）とは？
 畳み込みを主な構成要素としたニューラルネットワーク
 学習は教師あり学習を利用
 画像認識の分野で非常に高い性能
 畳み込み層・プーリング層などを積層したネットワーク>> net.Layers
ans =11x1 Layer array with layers:
1 'imageinput' Image Input
2 'conv'
Convolution
3 'relu'
ReLU
4 'conv'
Convolution
5 'relu'
ReLU
6 'maxpool'
Max Pooling
7 'conv'
Convolution
8 'relu'
ReLU
9 'fc'
Fully Connected
10 'softmax'
Softmax
11 'classoutput' Classification Output

63

Convolutional Neural Network（畳み込みニューラルネット）
Neural Network Toolbox
畳み込み層・プーリング層・正規化層などを積み重ねて作られた多層のニューラルネットワーク

Softmax層

全結合層

全結合層

最大プーリング層

正規化層

畳み込み層

最大プーリング層

正規化層

畳み込み層

犬猫
牛馬

64

Convolution Layer（畳み込み層）/ Pooling Layers (プーリング層)

層と層の間を一部のみ連結して、ウェイトを共有すると、ニューラルネットで畳み込みが表現できる

65

Convolution Layer（畳み込み層） / Pooling Layer（プーリング層）
Convolution Layer（畳み込み層）
 画像のフィルタ処理に相当する処理 特徴抽出器としての役割

Pooling Layer（プーリング層）

最大値を出力する場合 ： Max Pooling
平均値を出力する場合 ： Average Pooling 領域内の最大値または平均値を出力
 平行移動等に対するロバスト性に関係
 ストライドと呼ばれる間引きを行うこともある

66

ReLU層 (Rectified Linear Unit)
Logistic Sigmoid等の値が飽和する関数より、ReLUの方が学習が早く進むことがわかってきた67

【例題】 手書き文字の認識
畳み込みニューラルネットによる手書き文字の認識

128 x 28 pixel

Softmax層

手書き文字

全結合層

全結合層

最大プーリング層

正規化層

畳み込み層

最大プーリング層

正規化層

畳み込み層

畳み込み層やプーリング層を積層化したネットワークを定義し、誤差逆伝搬法により学習を行う

982
整数 (0-9)68

畳み込みニューラルネットの構築と学習
28×28 ピクセルの画像（数字）を認識させる例題でのネットワーク構築の例

layers = [ ...
imageInputLayer([28 28 1], 'Normalization', 'none');convolution2dLayer(5, 20);
reluLayer();
maxPooling2dLayer(2, 'Stride', 2);fullyConnectedLayer(10);softmaxLayer();

畳み込み層・プーリング層・正規化層などの層を積み上げて定義

classificationLayer()];opts = trainingOptions('sgdm', 'MaxEpochs', 50);

学習率や最大反復数などを定義して

net = trainNetwork(XTrain, TTrain, layers, opts);

学習の関数を呼び出す

http://www.mathworks.com/help/releases/R2016a/nnet/ref/trainnetwork.html
69

ILSVRC に登場した有名なネットワーク（Alex Net, VGG Net）
Alex Net の登場後、より深いネットワークが試されるようになった
ILSVRC 2010 - 2015

Alex Net■ トロント大学 Hinton のチームにより発表■ NVIDIA® Geforce ® GTX580 2機 による 5～6日間の学習

Alex Net■ ILSVRC 2012 において優勝した記念碑的なネットワーク

VGG NetVGG■ Oxford大学 Visual Geometry Group により発表■ NVIDIA® Titan Black 4機 による 2～3週間の学習■ ILSVRC 2014 において２位の記録を残したネットワーク

Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton "ImageNet Classification with Deep Convolutional Neural Networks" In NIPS, pp.1106-1114, 2012

K. Simonyan, A. Zisserman "Very Deep Convolutional Networks for Large-Scale Image Recognition" arXiv technical report, 2014
70

CNN と転移学習
転移学習とは？

ImageNet
1000個のカテゴリ

 学習済みのネットワークを他のタスクに転用する手法
 大量の画像で学習させたCNNは画像の特徴抽出器としても優秀 新しく付けた分類器のみ学習させればよい（計算が軽い！） そして、性能が非常によい！

Softmax層

全結合層

全結合層

全結合層

最大プーリング層

畳み込み層

畳み込み層

畳み込み層

最大プーリング層

正規化層

畳み込み層

最大プーリング層

正規化層

畳み込み層

入力

分類器
（SVM等）タンポポ

タンポポ
フキタンポポ

フキタンポポ72

Convolutional Neural Network（畳み込みニューラルネット）
Alex Net : ILSVRC2012 で優勝した CNN の構成

画像からの特徴抽出

特徴量の分類出力Softmax層

全結合層

全結合層

全結合層

最大プーリング層

畳み込み層

畳み込み層

畳み込み層

最大プーリング層

正規化層

畳み込み層

最大プーリング層

正規化層

畳み込み層

入力

似たようなパターンは、実は哺乳類の脳の一次視覚野にも現れることが知られている

73

画像分類の応用例
植物の種類や動物の種類などの分類例

タンポポ(Dandelion)

フキタンポポ(Colts’ Foot)74

画像分類の応用例
顕微鏡画像の分類例

バベシア症：

マラリア：

トリパノソーマ症：

バベシア属の原虫を原因とする感染症
症状は発熱と溶血性貧血を主とする
マダニによって媒介されるマラリア原虫を原因とする感染症
症状は40度近くの激しい高熱
ハマダラカによって媒介される

トリパノソーマ原虫を原因とする感染症
症状は進行すると睡眠周期が乱れる
ツェツェバエによって媒介される
75

【例題】 特徴量を使った異常検出

異常度：高異常度：低76

1-Class SVM とは？
カーネル法を使った正常度スコアの推定アルゴリズム

異常データを含むデータの例

スコアの値が高い方が正常度が高い

1-Class SVM
77

Agenda 機械学習の基礎- 教師あり学習と教師なし学習- 回帰と分類 音声信号の分類- 特徴抽出と分類器

 加速度データの分類- ニューラルネットによる分類

 時系列データの異常検出- 自己符号化器による異常検出 画像データの分類- CNNと転移学習

ヒトの目を手に入れよう！（CNN特徴量）
78

セマンティックセグメンテーションの基礎79

画像分野におけるディープラーニングの新展開

物体認識（画像全体）

物体の検出と認識

物体認識（ピクセル単位）

CNN (Convolutional Neural Network)

R-CNN / Fast R-CNN / Faster R-CNN

SegNet / FCN

Dog
Cat

画像確率値

自動車の前面

停止標識

車道

自動車

80

物体の検出と認識
R-CNN / Fast R-CNN / Faster R-CNN

停止標識（Stop Sign）

R-CNNに自動車の前面と停止標識を学習させた場合の検出例
自動車の前面（Car Front）
81

物体認識（ピクセル単位）
Semantic Segmentation

82

Semantic Segmentation とは？
各ピクセルをその意味（周辺のピクセルの情報）に基づいて、カテゴリ分類する手法

皿

皿

皿

皿

皿

皿

机

机

机

皿

皿

皿

皿

皿

皿

机

机

机

皿

皿

皿

皿

皿

机

机

机

机

皿

皿

皿

皿

皿

机

机

机

机

皿

皿

皿

皿

皿

机

机

机

机

皿

皿

皿

皿

机

机

机

机

机

皿

皿

皿

皿

机

机

机

机

机
83

Semantic Segmentation とは？
各ピクセルをその意味（周辺のピクセルの情報）に基づいて、カテゴリ分類する手法

ちゃんと歩道と車道を区別できている！
色だけを見ているわけではない84Feature Map とは？
畳み込みニューラルネットワークの計算過程で出てくる畳み込みの出力
画像からの特徴抽出
最大プーリング層

畳み込み層

畳み込み層

畳み込み層

最大プーリング層

正規化層

畳み込み層

最大プーリング層

正規化層

畳み込み層

（分類）

227 x 227

プーリングの反復により位置に関する情報が粗くなってしまう

ピクセル単位の情報からエッジなどの空間情報を取り出している55 x 55

27 x 27

13 x 1385

SegNet (Semantic Segmentation)
Max Pooling時のIndexを転送して位置に関する情報を補充している

Badrinarayanan, V., A. Kendall, and R. Cipolla. "Segnet: A deep convolutional encoder-decoder architecture
for image segmentation." arXiv. Preprint arXiv: 1511.0051, 2015.
86学習データの定義（SegNet）
Step1) ラベルの ID番号とラベルのマッピングを決めておく
classNames = ["sky" "grass" "building" "sidewalk"];pixelLabelID = [1 2 3 4];

Step2) 画像とピクセルラベルの組を定義する
imds = imageDatastore(imageDir);
pxds = pixelLabelDatastore(labelDir, classNames, pixelLabelID);

Step3) 画像とピクセルラベルの組から学習データを定義する
datasource = pixelLabelImageSource(imds, pxds);
87

学習と推論（SegNet）
Step1) SegNet のレイヤーを定義

VGG16 または VGG19 を選択

lgraph = segnetLayers(imageSize, numClasses, model);Step2) データ源を指定して、学習を実行する
net = trainNetwork(datasource, lgraph, options);

Step3) 学習させたネットワークでセグメンテーションを行う
C = semanticseg(I, net);88

もっと知りたい方のためのリソース89ビデオの紹介
MATLABによる機械学習の基礎：
https://jp.mathworks.com/videos/matlab-for-machine-learning-for-beginners-feature-extractionclassifier-and-cross-validation-117948.html

センサーデータ解析と機械学習：
https://jp.mathworks.com/videos/sensor-data-analysis-and-machine-learning-anomaly-detectionusing-vibration-data-100241.html

センサーデータ解析のためのニューラルネットワーク：
https://jp.mathworks.com/videos/neural-network-for-sensor-data-analysis-1505494780628.html

MATLABによるディープラーニング：
https://jp.mathworks.com/videos/deep-learning-with-matlab-119998.html

セマンティック・セグメンテーションの基礎：
https://jp.mathworks.com/videos/basics-of-semantic-segmentation-1527778613576.html

90