Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
#はじパタ  LT

実装  ディープラーニング

@0kayu
1
紹介


岡  右⾥里里恵  (早⼤大理理⼯工M1)    



出⾝身、住まい等          横浜



趣味  映画鑑賞,  シンセ  /  kaggle歴  3ヶ⽉月      



好きな物  redbullと最近はド...
DEEP LEARNING
1.  Deep  Learning  の  仕組み スライド	
  がたくさん!	
  
2.  Deep  Learning  パラメータ/学習法  について
3.  実装:  パッケージ調べ  ←	
  今日は...
1. ディープラーニング概要(1)
ディープラーニング?

画像認識を例にして....

従来法

ディープ
ラーニング

h'p://www.slideshare.net/kazoo04/deep-­‐learning-­‐15097274
...
1. ディープラーニング概要(1)
ディープラーニングの定義(諸説あり)
以下を満足するDeep	
  Architecture
・多層構造をもつ
・階層的な処理理である
・⾼高位の問題解決を⽬目的とする

5
1. ディープラーニング概要(2)
プレトレーニング  +  ファインチューニング

各層の●,●,●は
入力データ●の特徴量を表す

http://www.vision.is.tohoku.ac.jp/files/9313/6601/7876...
1. ディープラーニング概要(2)

判別器

プレトレーニング  +  ファインチューニング

SVM,  LR,  ...  etc

AE(3)
AE(2)
AE(1)

教師無し学習器群
AE:オートエンコーダー
RBM:制限ボルツマン...
制約つきボルツマンマシン(RBM)
•  ⽣生成モデルの1つ
生成モデルの学習方法

vi,  hj  は{0,1}をとる
h/p://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/CVIM_tu...
RBM +

DeepStructure

制約つきボルツマンマシン(RBM)

可視層と隠れ層からなる2層ネット
ワーク

判別器

DBN(Deep	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  B...
RBM +

DeepStructure

+

max	
  pooling

ConvDBN	
  (ConvoluFonal	
  Belief	
  Network)	
  
RBMに畳み込みニューラル

ネットで使われるmax	
  ...
オートエンコーダー(AE)
  AE  (オートエンコーダー)
⼊入⼒力力データを再現するような[表現h,  encoder,  decoder]  を学習する
  dAE(denoising  Auto  Encoder)
ノイズを加えたデー...
AE

+

DeepStructure

Stacked  Auto  Encoder
学習した表現yを、次の層のオートエンコーダーの⼊入⼒力力とする
AE(2)の入力データ

y(=x)

h
AE(2)の入力データ

入力データ
x

レ...
2. 各層の学習法について
基本    バッチ学習  +  確率率率的勾配法  (SGD)  
バッチ学習  :  全データで学習
確率率率的勾配法(SGD)  :  t個⽬目のサンプルだけを⽤用いて重みが更更新可能
→  データをミニバッチに...
2. パラメータについて
1.  機械全体の形
  レイヤーの数
  教師無し学習器(モデル)の選択
  判別器の選択

太字  =  「特に重要なパラメータ」

2.  各層のモデルのパラメータ
  隠れ層のユニット数
  重みの正規化
  ...
3. 実装 : 現状の関連コード比較
pylearn2
python
+theano

元の言語

Torch7

Lua

python
numpy+scipy

nolearn deepnet
python
+ sklearn

△

導入...
1.  pylearn2

市民権争い pylearn2 VS torch7

  利利点
-‐‑‒  Benjio先⽣生(先のスライドの原著)  の最新のアルゴリズムが実装されて
いる  (Maxout等)
-‐‑‒  市⺠民権の獲得に積極的...
1.  pylearn2

DL実装の流れ@pylearn2(1)
layer_̲1.yaml

1層⽬目学習
train	
  =	
  yaml_parse.load(layer1_yaml)
train.main_loop() **
da...
1.  pylearn2

DL実装の流れ@pylearn2(1)

前準備
インストール時にあらかじめ{PYLEARN2_DATA_PATH}にdataの保存場所のパスを
通しておく

ベンチマークを用意するには
${PYLEARN2_DAT...
1.  pylearn2

DL実装の流れ@pylearn2(2)

2層目の学習で、train.pyに与えるYAMLファイルの例
!obj:pylearn2.train.Train {
dataset: &train !obj:pylearn...
1.  pylearn2

DL実装の流れ@pylearn2(3)

評価例	
  	
  	
  
$	
  print_monitor.py	
  <学習して出力した	
  *.pkl>	
  や	
  summarize_model.py...
1.  pylearn2

DL実装の流れ@pylearn2(4)

重みの可視化について
○	
  学習器にオートエンコーダーを用いた場合
一層目	
  →	
  show_weights.py
二層目→	
  	
  ×	
  

○	
 ...
1.  pylearn2

pylearn2を今からはじめるには

公式のドキュメント  +  script以下のコードのコメントから学ぶ
  ディープラーニングの知識識をコードから学びたい
→  pylearn2の前⾝身の    http:/...
2.  その他のpython系パッケージ

  特徴

-‐‑‒  Theanoを覚えるのが⼤大変なあなたに
-‐‑‒  インストールが簡単,
-‐‑‒  SGD/RBM/dA      多値ロジスティック回帰    が使⽤用可能
-‐‑‒  ...
2.  numpy+scipy

numpy+scipy(使用例)
全体の構造を作成

プレトレーニング

24
3.  nolearn

nolearn使い方(1) インストール	
  は、$	
  pip	
  install	
  nolearn

h'p://packages.python.org/nolearn/
25
3.  nolearn

nolearn使い方(2)

26
3.  nolearn

nolearn使い方(3)

27
ありがとうございました

28
参考文献等
ディープラーニングチュートリアル

h$p://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/CVIM_tutorial_deep_learning.pdf

第7章 パーセプトロン型...
パッケージまとめ
◎	
  	
  	
  pylearn2
h$p://deeplearning.net/soHware/pylearn2/

◎	
  	
  	
  deeplearning	
  Tutorial
h$p://deepl...
Upcoming SlideShare
Loading in …5
×

実装ディープラーニング

143,466 views

Published on

はじパタLT資料です。ディープラーニングのライブラリの使い方が知りたい方は15ページからご覧ください。

  • Be the first to comment

実装ディープラーニング

  1. 1. #はじパタ  LT 実装  ディープラーニング @0kayu 1
  2. 2. 紹介  岡  右⾥里里恵  (早⼤大理理⼯工M1)      出⾝身、住まい等          横浜  趣味  映画鑑賞,  シンセ  /  kaggle歴  3ヶ⽉月        好きな物  redbullと最近はドクペ  @0kayu 研究    脳画像を⽤用いた診断補助法の開発 2
  3. 3. DEEP LEARNING 1.  Deep  Learning  の  仕組み スライド  がたくさん!   2.  Deep  Learning  パラメータ/学習法  について 3.  実装:  パッケージ調べ  ←  今日はこれ!!!!!!!!!!! ディープラーニングをもっと、もっと手軽に 3
  4. 4. 1. ディープラーニング概要(1) ディープラーニング? 画像認識を例にして.... 従来法 ディープ ラーニング h'p://www.slideshare.net/kazoo04/deep-­‐learning-­‐15097274 4
  5. 5. 1. ディープラーニング概要(1) ディープラーニングの定義(諸説あり) 以下を満足するDeep  Architecture ・多層構造をもつ ・階層的な処理理である ・⾼高位の問題解決を⽬目的とする 5
  6. 6. 1. ディープラーニング概要(2) プレトレーニング  +  ファインチューニング 各層の●,●,●は 入力データ●の特徴量を表す http://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/ CVIM_tutorial_deep_learning.pdf 6
  7. 7. 1. ディープラーニング概要(2) 判別器 プレトレーニング  +  ファインチューニング SVM,  LR,  ...  etc AE(3) AE(2) AE(1) 教師無し学習器群 AE:オートエンコーダー RBM:制限ボルツマンマシン http://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/ CVIM_tutorial_deep_learning.pdf DBM,  stacking  AE DBN,  stacking  AE 7
  8. 8. 制約つきボルツマンマシン(RBM) •  ⽣生成モデルの1つ 生成モデルの学習方法 vi,  hj  は{0,1}をとる h/p://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/CVIM_tutorial_deep_learning.pdf 8
  9. 9. RBM + DeepStructure 制約つきボルツマンマシン(RBM) 可視層と隠れ層からなる2層ネット ワーク 判別器 DBN(Deep                      Belief                      Network) RBM(3) RBM(2) DBM(Deep                      Boltzma                    Machine) RBM(1) vi, hj  =  {0,1} 入力データ 9
  10. 10. RBM + DeepStructure + max  pooling ConvDBN  (ConvoluFonal  Belief  Network)   RBMに畳み込みニューラル ネットで使われるmax  pooling を追加したもの http://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/CVIM_tutorial_deep_learning.pdf 10
  11. 11. オートエンコーダー(AE)  AE  (オートエンコーダー) ⼊入⼒力力データを再現するような[表現h,  encoder,  decoder]  を学習する  dAE(denoising  Auto  Encoder) ノイズを加えたデータで学習させる  スパースオートエンコーダー   出⼒力力層がスパースになるように正規化したもの y(=x) h 入力データ x Decoder y = f ´(W´h) スパースオートエンコーダーでは次の 評価関数を最小化する Encoder h = f (Wx) 正規化項 11
  12. 12. AE + DeepStructure Stacked  Auto  Encoder 学習した表現yを、次の層のオートエンコーダーの⼊入⼒力力とする AE(2)の入力データ y(=x) h AE(2)の入力データ 入力データ x レイヤー1(AE1) レイヤー2(AE2) 12
  13. 13. 2. 各層の学習法について 基本    バッチ学習  +  確率率率的勾配法  (SGD)   バッチ学習  :  全データで学習 確率率率的勾配法(SGD)  :  t個⽬目のサンプルだけを⽤用いて重みが更更新可能 →  データをミニバッチに分け、ミニバッチごとに重みを更更新 →  学習の⾼高速化  !   バッチ関連のパラメータ ミニバッチサイズ データを分割する量量。分割したデータ(バッチ)を⽤用いて学習させる。 バッチ毎の学習 バッチを学習させて、バッチごとにパタメータを更更新 モニター数(⇔速度度に影響) すべてのバッチのうち、⼀一部のバッチのみvalidationをしてモデルが学習できているか確認す る max_̲epoch 1つのデータを何回(何epoch)繰り返して学習させるか 13
  14. 14. 2. パラメータについて 1.  機械全体の形  レイヤーの数  教師無し学習器(モデル)の選択  判別器の選択 太字  =  「特に重要なパラメータ」 2.  各層のモデルのパラメータ  隠れ層のユニット数  重みの正規化  ユニットのスパース化  活性化関数の選択 3.  最適化のためのパラメータ  学習⽅方法  学習率率率  (初期値,  減衰)  ミニバッチサイズ  イテレーション回数  Momentum 4.  その他    重みの初期化  (のスケール)  乱数  前処理理 おすすめの参考スライド http://www.slideshare.net/koji_matsuda/practical-recommendationfordeeplearning 14
  15. 15. 3. 実装 : 現状の関連コード比較 pylearn2 python +theano 元の言語 Torch7 Lua python numpy+scipy nolearn deepnet python + sklearn △ 導入しやすさ(mac) ディープラーニン RBM, DBN, AE, MLP, Maxout グの種類等 ー python + gnumpy ー RBM, AE, DBN DBN, RBM RBM, AE, DBM, DBN, CNN, feedforward NN ー GPU計算 とっつきやすさ 入力データの準備 特徴 sugomori さん △ △ 種類が豊富, 画 像の可視化 ー ー ー matlab ライク ー Java版あり, オプションが ー GPU計算が前提 多いsklearn風 シンプル pylearn2    http://deeplearning.net/software/pylearn2/index.html DL先→ torch7            http://www.torch.ch/manual/install/index sugomori    http://blog.yusugomori.com/post/42424440144/pythondeep-learning-stacked-denoising nolearn        h'ps://github.com/dnouri/nolearn  or  pip  install  nolearn deepnet      h'ps://github.com/niQshsrivastava/deepnet 15
  16. 16. 1.  pylearn2 市民権争い pylearn2 VS torch7  利利点 -‐‑‒  Benjio先⽣生(先のスライドの原著)  の最新のアルゴリズムが実装されて いる  (Maxout等) -‐‑‒  市⺠民権の獲得に積極的  (kaggleのベンチマーク) -‐‑‒  実装の⾒見見た⽬目は綺麗麗,  評価を下すのにmonitor.py  がなかなか使える -‐‑‒  設定をエディットしやすい  ⽋欠点 -‐‑‒    データ構造が⽞玄⼈人向け、慣れれば快適...?? -‐‑‒    公式HPのチュートリアルやドキュメントが開発途中 -‐‑‒    pylearn2のgoogle  groups等を追う姿勢が⼤大事 16
  17. 17. 1.  pylearn2 DL実装の流れ@pylearn2(1) layer_̲1.yaml 1層⽬目学習 train  =  yaml_parse.load(layer1_yaml) train.main_loop() ** dae_l1.pkl layer_̲2.yaml 2層⽬目学習 train  =  yaml_parse.load(layer2_yaml) train.main_loop() dae_l2.pkl mlp.yaml 判別器学習 train  =  yaml_parse.load(mlp_yaml) train.main_loop() mlp_best.pkl 簡単3ステップ+α STEP1:  データをpylearn2のデータ形式で登録 (ベンチマーク系は既に登録済み) STEP2:  YAMLファイル形式(テンプレあり)で、    train{入力データ,学習器,学習法}を指定 STEP3:  train.pyに作った  *.yamlを放り込む STEPα:  モニター結果から学習できてるか判断 **:  $  train.py  layer_1.yaml  でも可 17
  18. 18. 1.  pylearn2 DL実装の流れ@pylearn2(1) 前準備 インストール時にあらかじめ{PYLEARN2_DATA_PATH}にdataの保存場所のパスを 通しておく ベンチマークを用意するには ${PYLEARN2_DATA_PAHT}/mnist/以下にMNISTデータを入れておく. dataset.pyを作る必要はない 自分のデータを用意するには 例 : kaggleのicml_2013_emotionsをデータとして登録 1. dataset.py を作成 .csvの場合はemotion_dataset.py が参考になる。 2. ${PYLEARN2_DATA_PATH}/icml_2013_emotions を作成し、中にデータをいれる 18
  19. 19. 1.  pylearn2 DL実装の流れ@pylearn2(2) 2層目の学習で、train.pyに与えるYAMLファイルの例 !obj:pylearn2.train.Train { dataset: &train !obj:pylearn2.datasets.transformer_dataset.TransformerDataset { raw: !obj:pylearn2.datasets.mnist.MNIST { 1.  入力データ:   which_set: 'train', start: 0, #データのうち0から50000を学習 TransformerDataset(MNIST) stop: 50000 }, transformer: !pkl: "./dae_l1.pkl" }, model: !obj:pylearn2.models.autoencoder.DenoisingAutoencoder { nvis : 500, #visible layerの次元 2.  学習器  :  Denoising  Autoencoder nhid : 500, #hidden layerの次元 irange : 0.05, corruptor: !obj:pylearn2.corruption.BinomialCorruptor { corruption_level: .3, #ノイズの程度 }, act_enc: "tanh", act_dec: null, # Linear activation on the decoder side. }, algorithm: !obj:pylearn2.training_algorithms.sgd.SGD { learning_rate : 1e-3, #学習率 3.  学習法:  StochasQcGradient  Descent batch_size : 100, #バッチサイズ(100データごとに学習) monitoring_batches : 5, #モニターするバッチの数 monitoring_dataset : *train, cost : !obj:pylearn2.costs.autoencoder.MeanSquaredReconstructionError {}, termination_criterion : !obj:pylearn2.termination_criteria.EpochCounter { max_epochs: 10, }, }, save_path: "./dae_l2.pkl", save_freq: 1 } 19
  20. 20. 1.  pylearn2 DL実装の流れ@pylearn2(3) 評価例       $  print_monitor.py  <学習して出力した  *.pkl>  や  summarize_model.py  *.pkl epochs  seen:    10 Qme  trained:    141.956558943 learning_rate  :  0.001 monitor_seconds_per_epoch  :  11.0 objecQve  :  11.414127059 $  plot_monitor.py    <学習して出力した  *.pkl  > →  デモ                                 20
  21. 21. 1.  pylearn2 DL実装の流れ@pylearn2(4) 重みの可視化について ○  学習器にオートエンコーダーを用いた場合 一層目  →  show_weights.py 二層目→    ×   ○  学習器にRBMを用いた場合 一層目→  show_weights.py $:  show_examples.py    データ.yaml 二層目→  top_filters.py   ○  各層の重みの値 layer  =  parse.load(“モデル名.pkl”) W  =  layer.weights() $:  show_weights.py  1層目のモデル.pkl  -­‐-­‐out=”hoge.png” 21
  22. 22. 1.  pylearn2 pylearn2を今からはじめるには 公式のドキュメント  +  script以下のコードのコメントから学ぶ  ディープラーニングの知識識をコードから学びたい →  pylearn2の前⾝身の    http://deeplearning.net/tutorial/ →  pylearn2/srcripts/tutorials/*.ipynb      :  数式や⽂文章付きで学べる  ええい!とにかく試してみたい!かじりたい! →  pylearn2/scripts/tutorials/stacked_̲autoencoders.ipynb →  pylearn2/scripts/tutorials/dbm_̲demo/rbm.yaml  kaggleに殴り込みをしようと思うんだが...    ⼿手持ちのデータをさくっとディープラーニングできないかな~∼ →  pylearn2/scripts/icml_̲2013_̲wrepl/emotions/ 22
  23. 23. 2.  その他のpython系パッケージ  特徴 -‐‑‒  Theanoを覚えるのが⼤大変なあなたに -‐‑‒  インストールが簡単, -‐‑‒  SGD/RBM/dA      多値ロジスティック回帰    が使⽤用可能 -‐‑‒  sparse.matrix  に対応していないので、⼤大規模疎⾏行行列列は扱えない -‐‑‒  少量量のデータならばnumpy+scipyのほうがてっとり早い -‐‑‒  速度度はpylearn2と⼤大きく変わらない  (CPU計算の場合) 23
  24. 24. 2.  numpy+scipy numpy+scipy(使用例) 全体の構造を作成 プレトレーニング 24
  25. 25. 3.  nolearn nolearn使い方(1) インストール  は、$  pip  install  nolearn h'p://packages.python.org/nolearn/ 25
  26. 26. 3.  nolearn nolearn使い方(2) 26
  27. 27. 3.  nolearn nolearn使い方(3) 27
  28. 28. ありがとうございました 28
  29. 29. 参考文献等 ディープラーニングチュートリアル h$p://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/CVIM_tutorial_deep_learning.pdf 第7章 パーセプトロン型学習規則 #はじパタ http://www.slideshare.net/Tyee/f5up 自然言語処理まわりのDeep Learningを自分なりにまとめてみた http://kiyukuta.github.io/2013/09/28/casualdeeplearning4nlp.html 機械学習におけるオンライン確率的最適化の理論 http://www.slideshare.net/trinmu/stochasticoptim2013 Practical recommendations for gradient-based training of deep architectures ~Benjio先生のおすすめレシピ~ http://www.slideshare.net/koji_matsuda/practical-recommendation-fordeeplearning 深層学習 http://sugiyama-www.cs.titech.ac.jp/ sugi/2007/Canon-MachineLearning30-jp.pdf Pythonとdeep learningで手書き文字認識 http://www.slideshare.net/mokemokechicken/pythondeep-learning 29
  30. 30. パッケージまとめ ◎      pylearn2 h$p://deeplearning.net/soHware/pylearn2/ ◎      deeplearning  Tutorial h$p://deeplearning.net/tutorial/ ◎      Torch7 h$p://torch.ch ◎      nolearn h$ps://github.com/dnouri/nolearn ◎      deepnet h'ps://github.com/niQshsrivastava/deepnet ◎      sugomiriさん http://blog.yusugomori.com/post/42424440144/python-deep-learning-stacked-denoising 30

×