matlabによる統計解析・機械学習 - mathworks...matlabによる統計解析・機械学習...
TRANSCRIPT
1© 2015 The MathWorks, Inc.
MATLABによる統計解析・機械学習
MathWorks Japan
アプリケーション エンジニアリング部 テクニカルコンピューティング
太田 英司
2
機械学習 – Machine Learning
人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法(※)
※)Wikipedia 「機械学習」 の項より引用
Machine
Learning
飛行機
バイク
旅客船
3
画像の分類(一般物体認識)
いままでは Bag of Visual Words という手法がよく使われていた。近年は畳み込みニューラルネットによる分類が着目を集める
Deep Learning !
Machine
Learning
飛行機
バイク
旅客船
4
Deep Neural Network のための幾つかのアルゴリズム
• Deep Belief Network (DBN)
• Convolutional Neural Network (CNN)
• Stacked Autoencoder (SAE)
5
MatConvNet : CNNs for MATLAB
http://www.vlfeat.org/matconvnet/
6
MATLAB における機械学習
機械学習
教師なし学習
教師あり学習
クラスタリング
分類
回帰
K-平均クラスタリング階層クラスタリングニューラルネットワーク混合ガウス分布自己組織化マップ
線形判別・2次判別K-最近傍識別単純ベイズ分類決定木アンサンブル学習ニューラルネットワークサポートベクターマシン
線形回帰モデル一般化線形回帰モデル非線形回帰モデル回帰木アンサンブル学習ニューラルネットワークサポートベクター回帰ガウシアンプロセス回帰
訓練データあり
訓練データなし
…
…
…
Neural Network Toolbox™Statistics and Machine Learning Toolbox™
7
分類・認識のタスク
あ!
音声認識
画像認識
普通メール 迷惑メール
テキスト分類
8
特徴抽出・分類
9
テキストの自動分類
普通メール 迷惑メール
10
テキストの自動分類
テキストデータ
テキストの種類
Bag of Words
特徴抽出
特徴量
分類
入力
出力
形態素解析+ワードカウント
単純ベイズ分類器
11
Bag of Words 表現とは?
テキストに含まれる単語とその頻度から作った特徴量
{ ギリシャ:3, 欧州:1, 金融:2, 議会:1}
{ プレー:2, 打率:3, ファール:1, 故障:1}
12
Bag of Words 表現とは?
テキストに含まれる単語とその頻度から作った特徴量
1 2 1 0 1 0 00 2 0 0 1 1 11 0 1 1 0 2 0
𝑤1 𝑤2 𝑤3 𝑤4 𝑤5 𝑤6 𝑤7
𝑑1
𝑑2
𝑑3
単語
文章
単語・文章行列(word-document matrix)などと呼ばれる
13
MeCab とは?
Google 工藤拓 氏により開発されたオープンソースの形態素解析エンジン
正確かつ高速な動作で各種プロジェクトに採用
各種言語へのインターフェース(C, perl, ruby, python, Java)
DOS窓からの実行結果
15
テキストの自動分類
テキストデータ
テキストの種類
Bag of Words
特徴抽出
特徴量
分類
入力
出力
形態素解析+ワードカウント
単純ベイズ分類器
16
単純ベイズ分類器
特徴量 ラベル
分類器: d = fitcnb(X, T, ‘DistributionName’, ‘mn’)
C = predict(d, Y)予測:
新しい特徴量予測されるラベル
17
最大事後確率推定(MAP推定)
事後確率 𝑃 𝑘 𝑑 が最大となるようなクラス k に分類する
𝑃 𝑘 𝑑 ∝ 𝑃 𝑑 𝑘 ∙ 𝑃 𝑘
事後確率 条件付き確率 事前確率
𝑃 𝑘 = 0 𝑑
𝑃 𝑘 = 1 𝑑
単純ベイズ分類器:ベイズの定理を使って MAP 推定をする分類器
与えられたテキスト d が普通メールである確率
与えられたテキスト d が迷惑メールである確率
18
事前確率の推定
1 2 1 0 1 0 00 2 0 0 1 1 11 0 1 1 0 2 0
𝑤1 𝑤2 𝑤3 𝑤4 𝑤5 𝑤6 𝑤7
𝑑1
𝑑2
𝑑3
普通メール
迷惑メール
𝑃 𝑘 = 0 =2
3
𝑃 𝑘 = 1 =1
3
普通メールと迷惑メールの割合
19
条件付き確率の推定
1 2 1 0 1 0 00 2 0 0 1 1 11 0 1 1 0 2 0
𝑤1 𝑤2 𝑤3 𝑤4 𝑤5 𝑤6 𝑤7
𝑑1
𝑑2
𝑑3
普通メール
迷惑メール
𝑃 𝑤 𝑘 = 0 =1
10
4
10
1
10
0
10
2
10
1
10
1
10
𝑃 𝑤 𝑘 = 1 =1
5
0
5
1
5
1
5
0
5
2
5
0
5
普通メールの単語分布
迷惑メールの単語分布
20
最大事後確率推定(MAP推定)
事後確率 𝑃 𝑘 𝑑 が最大となるようなクラス k に分類する
𝑃 𝑘 𝑑 ∝ 𝑃 𝑑 𝑘 ∙ 𝑃 𝑘
事後確率 条件付き確率 事前確率
𝑃 𝑑 𝑘 = 𝑛=1
𝑁
𝑃 𝑤𝑛 𝑘
計算済み!
計算済み!
22
【例題】 新聞記事の分類
読売新聞の記事を単純ベイズ分類器で分類してみる
23
【例題】 新聞記事のカテゴリ分類
古い記事のデータから分類器を作って、新しい記事を分類する
8/237/14 8/29
学習用 評価用
記事とカテゴリの関係を学習させる 分類器で記事のカテゴリを予測する
24
【例題】 新聞記事のカテゴリ分類
新聞記事(テキストデータ)
記事のカテゴリ
Bag of Words
特徴抽出
特徴量
分類
入力
出力
形態素解析+ワードカウント
単純ベイズ分類器
25
【例題】 画像のカテゴリ分類(一般物体認識)
飛行機 バイク 旅客船
26
【例題】 画像のカテゴリ分類(一般物体認識)
特徴点・特徴量の抽出(SURF 特徴量など)
1枚の画像から複数個の特徴量(ベクトル)
27
【例題】画像のカテゴリ分類(一般物体認識)
ベクトル(特徴量)を K-meansによりクラスタリングする
量子化したベクトルを「単語」だと思って出現回数をカウントする
Bag of Visual Words / Bag of Features
28
【例題】画像のカテゴリ分類(一般物体認識)
画像データ
画像のカテゴリ
Bag of Visual Words
特徴抽出
特徴量
分類
入力
出力
画像特徴量+量子化+ワードカウント
多クラス SVM
29
特徴量をどう使うか?
分類以外でも、クラスタリング・情報検索・異常検出などの応用がある
情報検索
手元の記事と似た記事を表示する
異常検出
新規性の高い記事を検索する
クラスタリング
似た記事同士をまとめる
30
情報検索・異常検出
31
【例題】 類似記事の検索
「原子力規制委員会は15日の定例会合で、四国電力伊方原子力発電所3号機(愛媛県)の安全対策が新規制基準を満たして…」
多数の新聞記事の中から、特定の記事に似た記事を見つける
何に使える?応用は?
会員制サイトで類似したプロフィールを見つける
通販サイトで似たレビューを得ている商品を探す
類似記事
http://blogs.mathworks.com/loren/2015/04/08/can-you-find-love-through-text-analytics/
32
【例題】 類似記事の検索
Bag of Words としてベクトル表現された文章の中で近いものを探せばよい
×
この記事に類似した記事を見つける!
※ 文章の長さに依存しないようにしたり、限られた文章だけで出現するような単語に重み付けをしたりすること(TF-IDF)もよく行われている
33
【例題】 新規性の高い記事の検索
多数の記事の中から、過去のどの記事にも似ていないものを見つける
過去の記事との類似性
8/237/14 8/29
34
【例題】 類似画像の検索
特徴抽出を行ってベクトル表現された画像の中で近いものを探せばよい
35
クラスタリング
36
【例題】 記事データのクラスタリング
Bag of Words としてベクトル表現された記事データをクラスタリングできる
D = pdist(bow, ‘euclidean’); % ペアワイズ距離Z = linkage(D, 'ward'); % 群平均法dendrogram(Z) % デンドログラム
45
NMF(非負行列因子分解)とは?
𝐷𝑊
𝑁𝐾𝑁
≃ 𝑊 𝑈
𝑉
与えられた行列の非負の行列の積への分解
文書データ、購買データ、音、画像などの解析に利用される
非負の値しかとり得ないデータの解析に用いられる
×
46
【例題】 記事データからのトピックの発見
𝐷𝑊
𝑁𝐾𝑁
≃ 𝑊 𝑈
𝑉
単語・文章行列 D に NMF を適用すると…
値 K を指定して、K個のトピックを見つけることができる
トピックを介して、単語と文書を同時にクラスタリングできる
(トピック数 × 文章数)
(単語数 × トピック数)(単語数 × 文章数)
×
47
【製品紹介】 新聞記事の解析
特徴抽出・分類
– MeCab による形態素解析
– 単語・文章行列の生成
– 単純ベイズ分類器による記事の分類
情報検索・異常検出
– 最近傍探索による記事の検索
– 新規性の高い記事の検索
クラスタリング
– 記事データの階層クラスタリング
– NMFによるクラスタリング
MATLAB
Statistics andMachine Learning Toolbox
48
【参考文献】
[1] 石田基広 : 「テキストマイニング入門」 森北出版, 2008
[2] 持橋大地 : 統計数理研究所 公開講座資料 「確率的トピックモデル」, 2013
http://www.ism.ac.jp/~daichi/lectures/H24-TopicModel/ISM-2012-TopicModels-daichi.pdf
[3] Chris Ding, Tao Li, Wei Peng : On the equivalence between Non-negative Matrix
Factorization and Probabilistic Latent Semantic Indexing
53
Deep Learning
54
特徴抽出と Deep Learning
特徴抽出 特徴量 分類入力 出力
うまい特徴量の探索 機械学習
Deep Learning 以前は、特徴抽出の部分を試行錯誤で人間が探索していた
データに適した特徴量を見つけ出すことがよい性能を出すためのキーであった
55
特徴抽出と Deep Learning
特徴抽出 特徴量 分類入力 出力
Deep Learning では、特徴抽出の部分もデータから学習させることができる
19
5
Deep Learning
56
Deep Neural Network とは?
概要:
既存のニューラルネットと異なる深い階層を持ったニューラルネット。
従来広く利用されている誤差逆伝搬法ではうまく学習をさせることができず長い間省みられることがなかった。しかし、近年になり学習を効率的に行う方法が開発されたことと、その性能の高さから多方面での注目を集めている。R2015a からNeural Network Toolbox にて、サンプルコードが提供されている。
Stacked Autoencoder
特徴:
• 圧倒的な高性能• 特徴自身の学習• チューニングの難しさ• 膨大な計算コスト
57
Deep Neural Network のための幾つかのアルゴリズム
• Deep Belief Network (DBN)
• Convolutional Neural Network (CNN)
• Stacked Autoencoder (SAE)
58
MATLAB での Deep Learning の対応状況
http://jp.mathworks.com/help/releases/R2015a/nnet/examples/training-a-deep-neural-network-for-digit-classification.html
幾つかある手法のうち、まずは Stacked Autoencoder から対応を開始サンプルコードの提供を開始した(Neural Network Toolbox R2015a)
59
【例題】 手書き文字の認識
1
9
8
2
28 x 28 pixel
手書き文字 整数 (0-9)
Stacked Autoencoder による手書き文字の認識
最初の2層のウェイトを Autoencoder により構成し最後に誤差逆伝搬法を用いて学習する
60
Step 1 : Autoencoder によるウェイトの学習
上のネットワークが恒等写像になるようにウェイトを学習する
Autoencoder
※ 正確には、MATLAB の Autoencoder は Sparse Autoencoder と呼ばれる中間層の活性に疎性を仮定したものになっている。詳細は後述の PDF を参照
61
Step 2 : Encoder 部分のみ残す
Encoder Decoder
Encoder 部分のみ残す
62
【補足】 ウェイトの可視化
ウェイトを可視化
63
Step 3 : Autoencoder によるウェイトの学習
2段目の Autoencoder
1段目の Encoder
1段目の Encoder 出力を使い、次の Autoencoder を学習させる
64
Step 4 : Encoder 部分のみ残す
2段目の Encoder
1段目の Encoder
65
Step 5 : 分類のために最終層を追加
最終層で分類(softmax)
66
Step 6 : 微調整(Fine Tuning)を行う
誤差逆伝搬法により、ウェイトの微調整(Fine Tuning)を行う
67
Deep Learning に関する情報源
書籍:深層学習(機械学習プロフェショナルシリーズ)
岡谷貴之さんによる Deep Learning 全般の日本語による解説。おそらく日本初の Deep Learning に関する成書。
書籍:コンピュータビジョン最先端ガイド6(CVIMチュートリアルシリーズ)
岡谷貴之さん、斎藤真樹さんによる Deep Learning 全般の日本語による解説。但し、Deep Learning に関する記述は第4章のみ。
PDF : Sparse autoencoder (Lecture notes)
Deep Learning の大家 Andrew Ng による Sparse autoencoder の解説。下のURLよりダウンロード可能。比較的短く読みやすい。
https://web.stanford.edu/class/cs294a/sparseAutoencoder_2011new.pdf
PDF : Learning Deep Architecture for AI
同じく Deep Learning の大家 Yoshua Bengio による Deep Learning 全般の解説。深い洞察があり、読み応えがある。
68
MATLAB Code for Deep Learning
MatConvNet(CNN)
GPUでの計算にも対応した畳み込みニューラルネットの環境。GPU上での計算にはParallel Computing Toolbox が必要。
http://www.vlfeat.org/matconvnet/
Caffe (CNN)
C++ と CUDA でより書かれたライブラリで、MATLABより呼び出すことが可能。
標準での対応 OS は、Linux と Mac OS のみ。cuDNN に対応。
http://caffe.berkeleyvision.org/
http://caffe.berkeleyvision.org/tutorial/interfaces.html
Classifier on MNIST digits (DBN)
Ruslan Salakhutdinov さんと Geoff Hinton さんによる MATLAB Code
http://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html
69
Statistics and Machine Learning Toolbox 新機能
分類学習器アプリの追加 教師あり学習の手法でデータを分類する
モデルを学習するアプリケーション
での新機能 分類学習器アプリの改善
– 主成分分析 (PCA) を使用した次元削減
– カテゴリカル予測子を用いたモデル学習
– 分類手法の追加 – 判別分析
ノンパラメトリック回帰
– サポートベクトル回帰 (SVR)
– ガウス過程回帰 (クリギング)
機械学習手法のテーブル型、カテゴリカルデータへの対応
65 関数が GPU 計算に対応
kmeans クラスタリングが C コード生成に対応 Requires MATLAB Coder
Requires Parallel Computing Toolbox
70
ノンパラメトリック回帰
サポートベクトル回帰回帰曲線の周りのチューブからはみ出した誤差を最小化
ガウス過程回帰曲線のランダム性とデータのランダム性のバランスを取りながら、ベイズ則に従った予測を行う
71© 2015 The MathWorks, Inc.
Questions?