Your SlideShare is downloading. ×
0
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7

16,646

Published on

JSAI's AI Tool lecture series part 6,7,8. Deep Learning, the glance, Pylearn2 and Torch7

JSAI's AI Tool lecture series part 6,7,8. Deep Learning, the glance, Pylearn2 and Torch7

Published in: Science
0 Comments
51 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
16,646
On Slideshare
0
From Embeds
0
Number of Embeds
31
Actions
Shares
0
Downloads
258
Comments
0
Likes
51
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Simard et al. (2003)が,クラス分類では交差エントロピー誤差関数のほうが二乗和誤差関数より良いことを示した(訓練速度・汎化能力共に)
  • 2 phases: Pre-training, feature extraction, Tuning
    Unsupervised, supervised.

  • Transcript

    • 1. ディープラーニングツール 「Pylearn2」「Torch7」 とその仕組み The University of Tokyo K. Nakayama #AIT8
    • 2. 今日の目次 • Deep Learning基礎 • 環境構築 • Pylearn2 基礎編 • Pylearn2 応用編 • ライブラリ比較 • Torch7 • まとめ
    • 3. 今日の目次 • Deep Learning基礎 • 環境構築 • Pylearn2 基礎編 • Pylearn2 応用編 • ライブラリ比較 • Torch7 • まとめ
    • 4. ニューラルネットワーク 再訪
    • 5. ニューラルネットワーク? x0 x1 xn y0 y1 yn… … Out In Hidden Units
    • 6. ニューラルネットワーク? x0 x1 xn y0 y1 yn… … Out In Hidden Units ?
    • 7. 線形分離不能な問題
    • 8. アプリケーション例 レストラン評価マイニング 入力:単語集合良い レストラン度 低い クオリティ 値段 },,,{ 値段クオリティ低い高いx 高い
    • 9. ニューラルネットワークの学習 x0 x1 xn y0 y1 yn… … Out In Hidden Layer 0 1 9 Error Error
    • 10. 主なビルディングブロック • 誤差逆伝播法(BP) • 最急降下法 • 確率的勾配降下法(SGD) • 活性化関数 –シグモイド関数 / tanh • コスト関数: –二乗和誤差 –交差エントロピー誤差
    • 11. 活性化関数 ステップ関数 シグモイド関数         a a af ,1 ,1 )( )exp(1 1 )( a af   微分可能 
    • 12. ニューラルネットワークの学習 x0 x1 xn y0 y1 yn… … Out In Hidden Layer 0 1 9 Error Error
    • 13. いろんな ニューラルネットワーク x0 x1 xn y0 y1 yn… … Out In Hidden Layer 前層への出力を持つもの
    • 14. いろんな ニューラルネットワーク ネットワーク形状のもの ホップフィールドモデルなど
    • 15. 多層パーセプトロン(MLP) x0 x1 xn y0 y1 yn… … Out In Hidden Layer
    • 16. 身近なNN • 画像認識 • 文字認識 • ロボット制御 • 天気予報 • 巡回セールスマン問題 • ゲームのアルゴリズム
    • 17. NNの問題 • 従来のNN – すぐに局所解に陥る – オーバーフィッティング • 多層にすることで表現力は上がるが… – 下層へ誤差情報が伝播されない – 収束速度が遅い
    • 18. Deep Learning
    • 19. Deep Learning ~研究サイド~ • Hinton 2006 – 1階層ごとに教師無し学習で事前訓練すれば良い結果 が得られることを示した • 大規模解析をすれば、高次の概念を学習できる? – Google 猫ニューロン • 各種コンペで上位がことごとく Deep Learningが上位を占める • 何が良いのか? – 「特徴表現学習」 – 多層にしても学習ができる。収束する – 汎化性能が高い
    • 20. Google 猫ニューロン
    • 21. Deep Learningの アルゴリズムたち
    • 22. - SdA - Stacked Denoising Autoencoder
    • 23. SdA x0 x1 xn y0 y1 yn… … Out In Hidden Layer
    • 24. SdA - dA x0 x1 xn…In Hidden Layer Encode Decode 入力情報を復元
    • 25. SdA - dA x0 x1 xn…In Hidden Layer Encode Decode … Hidden Layer 前の層の情報を復元
    • 26. SdA - Denoising? x0 x1 xn…In Hidden Layer Encode Decode … Hidden Layer ロバスト性を高める
    • 27. … Input Visible Hidden Layer Layer Layer Output (Top level layer) Label Pre-training Encode Decode Fine-tuning
    • 28. - DBN - Deep Belief Network
    • 29. DBN • RBM: Restricted Boltzmann Machine Ref. deeplearning.net
    • 30. RBM • 生成モデル • データの分布をモデル 化するアルゴリズム • CD-k, CD-1 • An Introduction to Restricted Boltzmann Machines 参照 0x 1x 2x 3x Visible Layer Hidden Layer 0h 1h 2h 3h
    • 31. Convolutional DBN Honglak Lee, et al., Convolutional Deep Belief Networks for Scalable Unsupervised Learning of Hierarchical Representations (ICML 2009)
    • 32. Pylearn2
    • 33. Pylearn2の構造 Python C / C++ / Fortran SdADBN Convolutional NN CUDANumpy Theano (Python) Tensor / Gradient / Algebra / Code Gen. BlasScipy Pylearn2
    • 34. Pylearn2とは • Yoshua Bengio先生の研究室 • LISAラボ発祥 • Theanoをベース • Theanoの自動微分が秀逸 • GPUコードの生成も可能
    • 35. 今日の目次 • Deep Learning基礎 • 環境構築 • Pylearn2 基礎編 • Pylearn2 応用編 • ライブラリ比較 • Torch7 • まとめ
    • 36. まずはPylearn2
    • 37. Pylearn2の環境構築 • 依存関係 – Theano, PIL, matplotlib • 手順 – Git cloneでソースを取得 – setup.py – 環境変数の設定 • 簡単と思いきや結構面倒な部分も – Theano,PyYAML,環境変数とか... • VM配布:Vagrant
    • 38. Pylearn2_installer
    • 39. インストーラが必要? わりと大変な場合もある • Theanoは必要なパッケージが多い – Blas, numpy, scipy, ipython, PyYAML, … • バージョンの制限が強いものもある • どのパッケージ管理を使うか? – Tar.gz, configure, make – APT – PIP / easy_installer • 環境変数
    • 40. Torchは?
    • 41. Torch環境の構築 • pylearn2, Torch7, Caffeの中では最も導入がス ムーズなイメージ • 基本的な手順 – Git, Curlのインストール – Gitからソースをクローン – インストールスクリプトの実行 • VM配布:Docker,AMI • 今回配布のAWSのイメージにはすでにインストー ル済み
    • 42. 環境構築が終わっている人 ~ Theanoを使ってみよう ~ つまり2 * x
    • 43. Theano Sample2 ((fill(sigmoid(x), TensorConstant{1.0}) * sigmoid(x)) * (TensorConstant{1.0} - sigmoid(x))) fill(a, b):aの形の行列をbの値で埋める つまりsigmoid(x) * (1.0 – sigmoid(x))
    • 44. Theano Sample3 (((fill(sigmoid((x * w)), TensorConstant{1.0}) * sigmoid((x * w))) * (TensorConstant{1.0} - sigmoid((x * w)))) * x) 変数が行列でもOK コスト関数に対する各パラメータの微分も自動で計算
    • 45. Pylearn2のすごさ • SGDの実装とTheanoの自動微分が秀逸 • グラディエント – W, W’, vb, hb – FineTune時の各レイヤーのパラメータ
    • 46. 今日の目次 • Deep Learning基礎 • 環境構築 • Pylearn2 基礎編 • Pylearn2 応用編 • ライブラリ比較 • Torch7 • まとめ
    • 47. Pylearn2の 主要なディレクトリ • Datasets • Scripts – Tutorials • Deep_trainer • Stacked_autoencoders • Grbm_smd – Papers • Dropout • Maxout • Training_algorithms • Models 利用する人 研究する人
    • 48. Grbm_smd? • Quick-Start サンプル • CIFAR10を利用した画像認識 • Usage: $ cd ~/pylearn2/pylearn2/scripts/tutorials/grbm_smd $ python make_dataset.py (実行済み) $ train.py cifar_grbm_smd.yaml (2m+) $ show_weights.py --out=weights.png cifar_grbm_smd.pkl $ print_monitor.py cifar_grbm_smd.pkl
    • 49. CIFAR10
    • 50. train.py? • YAMLファイルに記述されいている内容に従 い、学習するためのスクリプト • 学習結果をpklファイルとして出力 • 出力の読み方 – Epochs seen:学習回数 – Objective: 目的関数 (エポックに応じて下がることを確認する)
    • 51. YAMLの読み方
    • 52. Mini-batch SGD SGD 1つだけ利用 X X X X X X X X y y y y y y y y Batch-SGD 全部 X y Minibatch SGD X X X y y y
    • 53. Mini-batch SGD SGD 1つだけ利用 Batch-SGD 全部 Minibatch SGD Andrew Ng.資料より
    • 54. Pylearn2の一般的な使い方 • YAMLの作成 • train.py実行 • 評価・変更 – show_weights.py --out=weights.png xxx.pkl – print_monitor.py xxx.pkl | grep test_y_misclass
    • 55. ちょっと複雑な例「SdA」 • Datasets • Scripts – Tutorials • Deep_trainer • Stacked_autoencoders • Grbm_smd – Papers • Dropout • Maxout • Training_algorithms • Models 利用する人 研究する人
    • 56. Stacked_autoencoders? • SdAのサンプル • MNISTを利用した画像認識 • Usage: $ cd ~/pylearn2/pylearn2/scripts/datasets $ python download_mnist.py (実行済み) $ cd ~/pylearn2/pylearn2/scripts/tutorials/ stacked_autoencoders/tests $ python test_dae.py
    • 57. MNIST?
    • 58. Stacked Autoencoderの構造 • 3つのYAMLファイル – Dae_l1.yaml (1つ目のdAレイヤー) – Dae_l2.yaml (2つ目のdAレイヤー) – Dae_mlp.yaml(全体のMLP) • Test_dae.py – パラメータを設定 – 1st dA のPre-train – 2nd dA のPre-train – 全体のFine-Tune
    • 59. さらに複雑な例「Deep Trainer」 • Datasets • Scripts – Tutorials • Deep_trainer • Stacked_autoencoders • Grbm_smd – Papers • Dropout • Maxout • Training_algorithms • Models 利用する人 研究する人
    • 60. Deep_trainer? • SdAなどをさらに多層することが可能 • MNIST/CIFARなどに対応 • YAMLを使わない方法 • Usage: $ cd ~/pylearn2/pylearn2/scripts/tutorials/ deep_trainer $ python run_deep_trainer.py –d mnist (1m+)
    • 61. 今日の目次 • Deep Learning基礎 • 環境構築 • Pylearn2 基礎編 • Pylearn2 応用編 • ライブラリ比較 • Torch7 • まとめ
    • 62. 「Maxout」 • Datasets • Scripts – Tutorials • Deep_trainer • Stacked_autoencoders • Grbm_smd – Papers • Dropout • Maxout • Training_algorithms • Models 利用する人 研究する人
    • 63. Maxout? • Maxout Networksの論文で発表した内容 • MNISTを利用した画像認識 • CIFAR用YAMLもある • Usage: $ cd ~/pylearn2/pylearn2/scripts/papers/maxout $ train.py mnist_pi.yaml (904m23.683s (15h)) (途中で止める) $ train.py mnist_pi_continue.yaml (実行しない)
    • 64. Maxout • 活性化関数を学習する • Ian J. G., Maxout Networks • MNIST エラー率 0.94%,CIFAR 11.68%
    • 65. Maxout 各種凸関数の近似 Ref; Maxout Networks
    • 66. Dropout • ランダムにニューロンを停止する • オーバーフィッティングを防ぐことができる • 実装上はマスキングベクトル(1/0)をかける • シンプルな割にかなり有効
    • 67. 次のステップは?
    • 68. GPUを利用しましょう
    • 69. GPU • Maxoutの計算時間 – on AWS 904m23.683s (15h) – with GeForce GTX 780 Ti 1482.33s (24m, 36x faster) • 利用方法 – ~/.theanorc に以下を記述 [global] device=gpu floatX = float32
    • 70. Pylearn2 / Deep Learning 注意事項 • Pre-trainあるか無いかより、パラメータのほうが大 きな影響を与える – Learning Rate – Batch size – Epoch数 – Hiddenレイヤーのユニット数 • Pre-trainは最後の寄り切りに近い? – 高次のフィーチャを取得できる可能性もある
    • 71. Pylearn2ハック
    • 72. Deep Learningハック • なぜハックするか? – 論文を読むと分かった気になるが… • なぜPylearn2はハックする必要があるか? – ライブラリとしては未完 – カスタマイズが必要 – 汎用データ形式に対応してない – 学習の過程がわかりにくい – 学習と検証は分けたい – YAMLの定義が面倒 – 新しいアルゴリズムを作りたい…
    • 73. 新しいデータへ適用したい
    • 74. 新しいデータへの対応方法 • 基本 – pylearn2/pylearn2/datasetsにクラスを追加 • 汎用っぽいものもある – Npy dataset – CSVDataset – MatlabDataset – Vectorspacesdataset – だいたいが情報不足・動作するか不明 • ハック – pylearn2/pylearn2/datasets/libsvm.py
    • 75. LibSVM形式 行の先頭にクラス 以降、素性と値
    • 76. そもそもYAML定義や Pythonコードが面倒
    • 77. Confusion Matrix • 正解ベクトルと出力ベクトルの内積を単純に足したもの • クラス「0」の正解データを利用して推定した結果、「0」に推定される場合 が非常に多く、975.276 • また、次に高い値はクラス「6」の1.842であり、0を6と間違える場合が多 い • 5は3,6、 8、0と間違えやすい 0 1 2 3 4 5 6 7 8 9 0 975.276 0.028 0.780 0.008 0.805 0.101 1.842 0.997 0.120 0.043 1 0.043 1132.765 0.629 0.915 0.003 0.012 0.361 0.107 0.165 0.000 2 4.347 0.413 1018.481 1.295 0.594 0.000 0.200 3.574 3.068 0.028 3 0.086 0.005 0.042 999.280 0.001 2.165 0.000 2.536 3.172 2.714 4 0.850 0.085 1.659 0.002 963.359 0.008 4.337 0.975 0.061 10.664 5 1.989 0.046 0.000 7.363 0.112 878.174 2.081 0.514 1.093 0.629 6 2.976 2.145 0.034 0.030 1.111 1.547 948.634 0.000 1.519 0.003 7 0.161 2.472 5.211 0.101 0.117 0.088 0.020 1014.079 2.260 3.493 8 1.488 0.162 1.436 1.994 0.287 0.760 0.332 3.108 959.650 4.784 9 0.464 2.996 0.005 1.987 6.322 2.243 0.012 2.926 1.182 990.864
    • 78. 学習過程の可視化
    • 79. (偽)Handwritingデータ • Datasets/Handwritingクラスの作成 • WindowsのTTF • 変形 – 拡大・縮小 – 平行移動 – 回転
    • 80. 認識精度の可視化
    • 81. 構成 Server Side Client Side jQuery Backbone.js Socket.io Socket.io.js python pylearn2 dl_hacks lib socketio dl_tester socketio
    • 82. Pylearn2まとめ • Pylearn2 / Theano – Theanoをベースにしているので拡張性が高い – SdA,DBN,Maxout… – GPUへの対応が用意 • ライブラリとしては未完 • ハックが必要 – データ読み込み – パラメータ調整 – 可視化
    • 83. 今日の目次 • Deep Learning基礎 • 環境構築 • Pylearn2 基礎編 • Pylearn2 応用編 • ライブラリ比較 • Torch7 • まとめ
    • 84. Deep Learningに関する ライブラリ • 殿堂入り – Theano / Pylearn2 – Caffe – Torch7 • Deeplearning.jp – GeSdA • ニューフェイス – Keras – Chainer (PFI)
    • 85. Theano / Pylearn2 • Maxout,Dropout,CNN,RBM,SdAなど有 名どころは一通りそろっている • Theanoの自動微分が秀逸 • GPU / CPUの切り替えが楽 • YAMLでネットワークを定義 • 拡張性が高い • おもてなしの精神が少し欠けてる – 定義の冗長性 – 機能性,汎用性 – ドキュメント更新してほしい
    • 86. Caffe • 画像処理では不動の位置を確立 • 高速 • コミュニティが強力 • 精度の高い定義などが数多く公開されている • 各種のバインディングが充実 • モデルを書くときは結局CかC++ • やっぱりおもてなしの精神が少し欠けてる – すんごい長いPrototext – 機能性,汎用性
    • 87. Torch7 • 機械学習向けの数値計算機能が豊富 • Facebookの参入など成長著しい • 非常に簡潔にネットワークの定義が可能 • 強力なパッケージ管理機能 • Lua言語 -> Cへのインタフェース • やっぱりおもてなしの精神が少し欠けてる – 機能面
    • 88. Deep Learningに関する ライブラリ • 殿堂入り – Theano / Pylearn2 – Caffe – Torch7 • Deeplearning.jp – GeSdA • ニューフェイス – Keras – Chainer (PFI)
    • 89. GeSdA? GPU enpowered Stacked denoising Auto-encoder
    • 90. GeSdA • GPUベースのSdA – Minibatch-SGD – Numpy + Blasの5~16倍程度高速 – GPU / Numpyの切り替えオプション • グリッドサーチ機能、パラメータ自動調整(LR) • インタラクティブな可視化機能 • 汎用データセットへの対応(LibSVM形式) • 精度:MNISTで98.7% – Bengio’s Tutorial: 98.5% – Maxout on Pylearn2: 99% 以上
    • 91. GPU? • グラフィック(3D等)のレンダリングに利用 • Nvidia Geforce GTX 780 Ti – 2,880コア – 5,040 GFLOPS • Intel Xeon E5-4650 – 8コア – 172.8 GFLOPS Source: Nvidia
    • 92. Source: Nvidia
    • 93. Deep Learning ライブラリの状況 • Pylearn2 – Python, Numpy, Theanoベース – 依存ライブラリが多すぎる – 使い勝手が... • Caffe – Cがメイン – Pythonなどのインタフェースはあるが – Pylearn2に負けずと依存関係が大変 – Include,ライブラリのリンクが面倒... • Torch7 – Lua言語
    • 94. GeSdAの構造 Python C / C++ / Fortran SdADBN Convolutional NN CUDANumpy BlasPyCUDA GeSdA GeSdA ユーティリティ
    • 95. GeSdA - YAML
    • 96. GeSdA – YAML 可変長レイヤー数対応グリッドサーチ
    • 97. GeSdA - グリッドサーチ
    • 98. アプリケーション
    • 99. DeepMotion | GeSdA
    • 100. Torch7 • Facebookの参入など成長著しい • 強力なパッケージ管理機能 • 非常に簡潔にネットワークの定義が可能 • Deep Learningのパッケージが充実 • 強力なLua言語→C言語バインディング
    • 101. Torch7 • Facebookの参入など成長著しい • 強力なパッケージ管理機能 • 非常に簡潔にネットワークの定義が可能 • Deep Learningのパッケージが充実 • 強力なLua言語→C言語バインディング
    • 102. luarocks • パッケージ管理ツール – pip, cpan, pearみたいなもの • 各種のパッケージが公開されている – image, csvigo • Deep Learning系パッケージ – nn, unsup, dp • Usage $ luarocks install [package]
    • 103. Torch7 • Facebookの参入など成長著しい • 強力なパッケージ管理機能 • 非常に簡潔にネットワークの定義が可能 • Deep Learningのパッケージが充実 • Lua言語
    • 104. MLPを作ってみよう
    • 105. 動かしてみよう • まずはダウンロード – $ wget knakayama.com/tmp/exercise/mlp_xor.lua • 二つの実行方法 – コマンドラインから実行 $ th mlp_xor.lua – インタプリタから実行 $ th > dofile(‘mlp_xor.lua’)
    • 106. Torch7のSequential 直感的な理解 • Sequentialで入れ物を作る • nn.Moduleの組み合わせ – Tanh, Linear – SpatialConvolutionMM – ReLU • nn.Moduleの持つ関数 – Forward, backward
    • 107. CNNの例
    • 108. Torch7 • Facebookの参入など成長著しい • 強力なパッケージ管理機能 • 非常に簡潔にネットワークの定義が可能 • Deep Learningのパッケージが充実 • Lua言語
    • 109. Deep Learning系パッケージ • nn – 非常に簡潔にMLPが書ける – ある程度レイヤー,評価関数などがそろっている – CNNまでは非常に簡潔に書ける • dp – nnの拡張パックに近いイメージか – Alexnet,CNN,RNNなど最近のアルゴリズムを中心に, カスタマイズしやすいネットワークや便利機能を提供 – 言語モデル,顔認識など • unsup – Autoencoder系の実装がある – k-means, PCAなども • fbcunn – Facebook製のCUDA対応nn – 高速(らしい) – インストールが大変だが...
    • 110. 今日の目次 • Deep Learning基礎 • 環境構築 • Pylearn2 基礎編 • Pylearn2 応用編 • ライブラリ比較 • Torch7 • まとめ
    • 111. 今日のポイント + いいたいこと • Deep Learningはまだ発展途上の技術 • まだまだ拡張・ハックが必要 • Caffe,Pylearn2に続く期待のTorch7も紹介 • GeSdA開発中 • 新しいライブラリも続々登場中 • まだノウハウの蓄積が必要 Deeplearning.jp
    • 112. ご静聴 ありがとうございました

    ×