36
MATLABで始める 機械学習/Deep Learning ア・ラ・カルト G-DEPソリューションパートナー (株)システム計画研究所 村瀬知彦・山本真司 2015/06/08 @計算工学講演会

MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

  • Upload
    donhi

  • View
    229

  • Download
    4

Embed Size (px)

Citation preview

Page 1: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

MATLABで始める

機械学習/Deep Learning ア・ラ・カルト

G-DEPソリューションパートナー (株)システム計画研究所

村瀬知彦・山本真司

2015/06/08 @計算工学講演会

Page 2: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

何ができる?

ハンドサイン認識中

Page 3: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

本日のお品書

• MATLABとは?

• 機械学習とは?

• ア・ラ・カルト(デモ)

1. Hinton先生の再現

2. Neural Network Toolbox

3. RCNNの再現

• 弊社について

Page 4: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

1. Hinton先生の再現 2006年に発表された画期的な成果

MATLAB で実装

2. Neural Network Toolbox Toolbox で AutoEncoder を手軽に実装したサンプル

3. RCNNの再現 MATLAB と Deep Learning ミドルウェアのコラボの例

2014年発表の出来立てホヤホヤの成果

3種のデモとMATLAB

本日のお品書

多くの研究者が成果をMATLABコードで発表!

Page 5: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

MATLABとは?

http://jp.mathworks.com/products/matlab/features.htmlより

Page 6: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

MATLABとは?

http://jp.mathworks.com/products/matlab/features.htmlより

Page 7: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

MATLABとは?

• 元々 MATrix LABoratory の略

• 名は体を表し、行列演算が得意

• A = [1 2 0; 2 5 -1; 4 10 -1] ,A’ (転置)と書くと、

A = A’ = となり、

• B = A*A’ と書けば、行列同士の積となる

• コードがシンプルになります

1, 2, 0 2, 5,-1 4,10,-1

1, 2, 4 2, 5,10 0,-1,-1

Page 8: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

MATLABとは?

• さらに分野特化の機能は Toolbox として提供

• 今日は、以下を紹介

– Parallel Computing Toolbox(公式)

– Statistics and Machine Learning Toolbox (公式)

– Neural Network Toolbox(公式)

– Deep Learning Toolbox (コミュニティ)

• Toolbox の公式コミュニティ(MATLAB Central)も運営されています

Page 9: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

機械学習とは?

• そも、機械学習とは?

「与えられたデータから判断基準を学ぶもの」と見たり!

「未知のデータも判断できるといいネ!」

• そのためには、

データの本質をついた特徴を見つけ出し、

賢く判断できるようになればいいのでは?

Page 10: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

賢い 判断

機械学習のアプローチ

機械学習とは?

データ

データの本質 判別結果

Page 11: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

機械学習のアプローチ

機械学習とは?

データ 判別結果

ラベル・値・etc 分類器 回帰器

SVM,NN,RandomForest etc

特徴量

SIFT,HOG,PCA etc

ベクトル空間

Page 12: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

機械学習のアプローチ

機械学習とは?

データ 判別結果

ラベル・値・etc 分類器 回帰器

SVM,NN,RandomForest etc

特徴量

SIFT,HOG,PCA etc

ベクトル空間

研究者が

頑張って考える職人芸の世界

コンピューターに賢く学習してもらう 手法が発展

Page 13: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

Deep Learningの凄いところ

機械学習とは?

データ 特徴量

分類器 回帰器

ラベル・値・etc

Deep Neural Network

自動抽出 表現学習とも言います

Page 14: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

Deep Learningの凄いところ

機械学習とは?

データ 特徴量

分類器 回帰器

ラベル・値・etc

Deep Neural Network

自動抽出 表現学習とも言います

ここが画期的! 30年来の

ブレークスルー

データは とても沢山 必要

Page 15: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

• データからパターンを学習 – 判別、回帰、クラスタリング、etc

• パーセプトロン 1960頃~ – 特徴空間を線形に分離

• 多層パーセプトロン 1980頃~ – 3層構造でOK

– 非線形に分離する複雑な手法が発展

– SVM, Boosting, Neural Network, ... など 1990頃~

• Deep Learning 2006頃~ – ネオコグニトロンなどの先行研究

– Layer-wise Training 2006年(Hinton先生の有名な論文) Deep Neural Networkの学習が過学習してしまう問題を解決

– Convolutional Neural Network 2012年

機械学習の発展~Deep Learningの登場

機械学習とは?

Page 16: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

ア・ラ・カルト

1. Hinton先生の再現

– Restricted Boltzman Machine

2. Neural Network Toolbox

– AutoEncoder

– Parallel Computing Toolbox

3. RCNNの再現

– Regions with CNN feature

– Caffe と cuDNN

Page 17: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

Hinton先生の再現

• 2006年に発表された画期的な論文

• ここから現在のDLの勃興が始まったとも

• 何が画期的?

• Layer-wise Pre-training という手法を提案して、従来からあったDNNがうまく学習できない悩み(逆誤差伝搬に関する問題)を解消

• Pre-training は教師なし学習

• Fine Tuning は教師あり学習

Page 18: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

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

推論

X1

W1 W2 W3 W4

Y

b

X2 X3 X4

W1 W2 W3 W4

b

学習 誤差伝搬

・・・ 推論結果 Y

入力データ X

誤差伝搬

誤差が小さくなるようにwを調整

誤差がうまく

伝わらない層は学習できない!

Hinton先生の再現

Page 19: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

• 教師あり学習

–教師データと学習データをペアにして学習させる方法

• 教師なし学習

–学習データのみで学習する方法

学習(教師ありと教師なし) Hinton先生の再現

Page 20: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

識別モデル

–識別器を学習する

– SVM/Random Forest/CNN など

生成モデル

–入力データの生成確率を学習する

– Naive Bayes/RBM など

モデル(識別モデルと生成モデル) Hinton先生の再現

Page 21: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

• 生成モデルに基づく、Restricted Boltzman Machine(RBM) を多数重ねたDeep Belief Network(DBN)です

Hinton先生のネットワーク Hinton先生の再現

http://qiita.com/t_Signull/items/f776aecb4909b7c5c116

Page 22: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

• RBMの式

Restricted Boltzman Machine Hinton先生の再現

https://dl.dropboxusercontent.com/u/2048288/RestrictedBoltzmannMachine.pdf

ここで、

Page 23: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

Layer-wise Pre-Training(RBM) Hinton先生の再現

1. 一番下の4+3の層に着目 2. RBMとして学習 3. 上の3+4の層に着目 4. 前の層の出力を入力にする 5. RBMとして学習 6. 順次、上の層をRBMとして学習 7. 他の層のことを気にせずにローカル

な層で個別に学習したので 8. 最後に全体調整(Fine Tuning)する

・・・

学習

Page 24: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

Layer-wise Pre-Training(AutoEncoder) Hinton先生の再現

1. 一番下の4+3の層に着目 2. 入力の4つを出力層として追加 3. 4+3+4の3層NNとみなして学習 4. 更に、3+4+3 → 4+2+4 →・・と学習 5. 他の層のことを気にせずにローカル

な層で個別に学習したので 6. 最後に全体調整(Fine Tuning)する

・・・

学習

Page 25: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

デモ Hinton先生の再現

デモ実演中

Page 26: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

Neural Network ToolBox

• MATLAB の公式 ToolBox のご紹介

• 数あるサンプルコードの中から本日は、

AutoEncorder のデモを行います

• GPU化の例をご紹介します

– Parallel Computing Toolbox が必要です

Page 27: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

デモのネットワーク構成 Neural Network Toolbox

• 入力層+隠れ層×2+出力層=4層のディープニューラルネットです

• 層が3層より多いのでディープです

• 0~9のフォントデータを10種類に分類する分類器になります

• 画像サイズが 28x28=784画素で、10種類に

分類するので、隠れ層はともかく、入力層は784ユニット、出力層は10ユニットの構成です

Page 28: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

デモ Neural Network Toolbox

デモ実演中

Page 29: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

RCNNの再現

• RCNNとは「Regions with CNN feature」 の略

• CNNとは「Convolutional Neural Network」 の略

• 画像全体の物体のあるなしだけではなく、その物体をどの辺り(=Region)で見つけたかも答えてくれる賢いCNNです

- CNN自体の説明は本日はいたしません

Page 30: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

• https://github.com/rbgirshick/rcnnのコードを実行します

• 何をしているのか?

デモの内容 RCNNの再現

物凄い数のRegion候補を 切り出して

CNNで認識 させる

Page 31: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

• MATLABからCNNのミドルウェである「Caffe」を利用しています

• Caffe は、自身のGPUアクセラレーションの実装を持っていますが、cuDNNの利用もサポートしています

• cuDNNは、NVIDIA社のDeep Learning向けのCUDAライブラリです

Caffe と cuDNN RCNNの再現

Page 32: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

m-ファイル Caffe

CPU実装

GPU実装

cuDNN

デモの構成 RCNNの再現

ここを切り替えて実行します

Page 33: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

デモ RCNNの再現

デモ実演中

Page 34: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

本日のデモのまとめ

1. Hinton先生の再現 –先駆的業績の再現

–データの可視化や GUIの作成例を紹介

2. Neural Network Toolbox – Toolbox を利用したアプローチの紹介

– GPU利用やネットワーク構築 Wizardなど

3. RCNNの再現 – ミドルウェアとのコラボ例の紹介

–最新の業績の再現

Page 35: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

会社概要

• 株式会社システム計画研究所/ISP

• 設立:1977年11月10日

• 資本金:8,000万円

• 所員数:100名

• 事業内容 • 医療情報

• 制御・宇宙

• 通信・ネットワーク

• 画像処理

Page 36: MATLABで始める 機械学習/Deep Learning. Hinton先生の再現 2006年に発表された画期的な成果 MATLAB で実装 2. Neural Network Toolbox Toolbox で AutoEncoder

お終い!