MATLABで始める 機械学習/Deep Learning. Hinton先生の再現...

Preview:

Citation preview

MATLABで始める

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

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

村瀬知彦・山本真司

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

何ができる?

ハンドサイン認識中

本日のお品書

• MATLABとは?

• 機械学習とは?

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

1. Hinton先生の再現

2. Neural Network Toolbox

3. RCNNの再現

• 弊社について

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

MATLAB で実装

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

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

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

3種のデモとMATLAB

本日のお品書

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

MATLABとは?

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

MATLABとは?

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

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

MATLABとは?

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

• 今日は、以下を紹介

– Parallel Computing Toolbox(公式)

– Statistics and Machine Learning Toolbox (公式)

– Neural Network Toolbox(公式)

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

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

機械学習とは?

• そも、機械学習とは?

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

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

• そのためには、

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

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

賢い 判断

機械学習のアプローチ

機械学習とは?

データ

データの本質 判別結果

機械学習のアプローチ

機械学習とは?

データ 判別結果

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

SVM,NN,RandomForest etc

特徴量

SIFT,HOG,PCA etc

ベクトル空間

機械学習のアプローチ

機械学習とは?

データ 判別結果

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

SVM,NN,RandomForest etc

特徴量

SIFT,HOG,PCA etc

ベクトル空間

研究者が

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

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

Deep Learningの凄いところ

機械学習とは?

データ 特徴量

分類器 回帰器

ラベル・値・etc

Deep Neural Network

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

Deep Learningの凄いところ

機械学習とは?

データ 特徴量

分類器 回帰器

ラベル・値・etc

Deep Neural Network

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

ここが画期的! 30年来の

ブレークスルー

データは とても沢山 必要

• データからパターンを学習 – 判別、回帰、クラスタリング、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の登場

機械学習とは?

ア・ラ・カルト

1. Hinton先生の再現

– Restricted Boltzman Machine

2. Neural Network Toolbox

– AutoEncoder

– Parallel Computing Toolbox

3. RCNNの再現

– Regions with CNN feature

– Caffe と cuDNN

Hinton先生の再現

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

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

• 何が画期的?

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

• Pre-training は教師なし学習

• Fine Tuning は教師あり学習

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

推論

X1

W1 W2 W3 W4

Y

b

X2 X3 X4

W1 W2 W3 W4

b

学習 誤差伝搬

・・・ 推論結果 Y

入力データ X

誤差伝搬

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

誤差がうまく

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

Hinton先生の再現

• 教師あり学習

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

• 教師なし学習

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

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

識別モデル

–識別器を学習する

– SVM/Random Forest/CNN など

生成モデル

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

– Naive Bayes/RBM など

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

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

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

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

• RBMの式

Restricted Boltzman Machine Hinton先生の再現

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

ここで、

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

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

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

・・・

学習

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)する

・・・

学習

デモ Hinton先生の再現

デモ実演中

Neural Network ToolBox

• MATLAB の公式 ToolBox のご紹介

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

AutoEncorder のデモを行います

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

– Parallel Computing Toolbox が必要です

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

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

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

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

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

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

デモ Neural Network Toolbox

デモ実演中

RCNNの再現

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

• CNNとは「Convolutional Neural Network」 の略

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

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

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

• 何をしているのか?

デモの内容 RCNNの再現

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

CNNで認識 させる

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

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

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

Caffe と cuDNN RCNNの再現

m-ファイル Caffe

CPU実装

GPU実装

cuDNN

デモの構成 RCNNの再現

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

デモ RCNNの再現

デモ実演中

本日のデモのまとめ

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

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

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

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

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

–最新の業績の再現

会社概要

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

• 設立:1977年11月10日

• 資本金:8,000万円

• 所員数:100名

• 事業内容 • 医療情報

• 制御・宇宙

• 通信・ネットワーク

• 画像処理

お終い!

Recommended