Development and Experiment of Deep Learning with Caffe and maf
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Development and Experiment of Deep Learning with Caffe and maf

on

  • 65 views

2014/10/30 PyData Tokyo Meetup #1

2014/10/30 PyData Tokyo Meetup #1

Statistics

Views

Total Views
65
Views on SlideShare
65
Embed Views
0

Actions

Likes
4
Downloads
0
Comments
0

1 Embed 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Development and Experiment of Deep Learning with Caffe and maf Presentation Transcript

  • 1. 2014/10/30 PyData Tokyo MeetUp #1 @デンソーアイティーラボラトリ Caffeとmafを⽤用いた ディープラーニング 開発・実験⽅方法 株式会社 Preferred Networks ⼤大野 健太 <oono@preferred.jp>
  • 2. ⾃自⼰己紹介 • ⼤大野健太(@delta2323_) • 経歴:数理理科学研究科(共形幾何)→2012.3 PFI→2014.10 PFN • 所属:研究班(担当領領域:理理論論解析・ライフサイエンス) • ブログ:http://delta2323.github.io • 謝辞 • mafは得居誠也さん(PFN・@beam2d)・能地宏さん(総研⼤大/NII・ @nozyh)が中⼼心となり開発されています • Caffe・mafデモは得居さんの助⾔言を元に作成しています 2
  • 3. 株式会社Preferred Networks Preferred Infrastructure(PFI、2006年年創業) l 検索索・機械学習のソフトウェア研究開発 Preferred Networks(PFN、2014年年設⽴立立) l IoTにフォーカスするためスピンオフ l ディープラーニング等最新技術を開発 l 様々な業界向けソリューションを加速 l 製造業、交通、セキュリティ、⼩小売… 代表取締役 ⻄西川徹 取締役副社⻑⾧長 岡野原⼤大輔 ディープラーニング 機械学習 (深層学習) 検索索エンジン / 分析ソフト 3
  • 4. アジェンダ • Caffeの紹介 • ディープラーニング関連⽤用語について • ディープラーニング実験の困難さ • mafの紹介 • デモ:Caffeとmafを⽤用いた実験 注意 • Caffeは現在進⾏行行形で開発が進んでいます、本資料料は資料料作成時の masterブランチ(c18d22e)またはdevブランチ(30651a2)を参考 に作成しています 4
  • 5. Caffe
  • 6. Caffe概要  git clone git@github.com:BVLC/caffe.git • 開発者:Berkeley⼤大学 Yangqing Jia(現Google) • メンテナンス:Berkeley Vision and Learning Center (BVLC) • ライセンス:BSD 2 clause • バージョン:厳格にはつけられていない? • 動作確認済OS:Ubuntu 14.04, 12.04, Mac OS X 10.9, 10.8 • Mac OS 10.9へのインストールは⼿手間がかかる(libc++関連) • Windowsも対応版がある(⾮非公式*) • ⾔言語:C++, CUDA、バインディング:Python, Matlab • 前バージョンのDecafはPython、⾼高速化の為C++, CUDAで再実装 6 * fork レポジトリ:https://github.com/niuzhiheng/caffe
  • 7. 画像分類デモ* * デモURL:http://demo.caffe.berkeleyvision.org7
  • 8. 特徴:OSS活動が最も活発なディープラーニングラ イブラリの⼀一つ • 開発速度度 • 最新の技術・アルゴリズムが多く実装されている • (API・設定ファイル記述⽅方法は結構頻繁に変わる) • コミュニティーの活動 • issue/Pull Requestベースの開発 • チュートリアル・実例例・開発者⽤用ドキュメントが整備済 • CUDA対応 • CPU, GPUのシームレスな切切り替え可能 • CuDNN対応済(NVIDIA製GPU対応DNNライブラリ) 開発チームが考えるCaffeの売り: https://docs.google.com/presentation/d/ 1UeKXVgRvvxg9OUdh_UiC5G71UMscNPlvArsWER41PsU/ edit#slide=id.g39888e8c1_0398
  • 9. Caffeで実現された技術例例(1) Deep Q Network*(深層学習で強化学習) PongSpace Invader 藤⽥田康博さん 「CaffeでDeep Q-Networkを実装して深 層強化学習してみた」** 松元叡⼀一さん PFIインターン2014 最終発表*** * Playing Atari with Deep Reinforcement Learning, Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Alex Graves, Ioannis Antonoglou, Daan Wierstra, Martin Riedmiller NIPS Deep Learning Workshop, 2013 ** http://d.hatena.ne.jp/muupan/20141021/1413850461 9 *** http://www.ustream.tv/recorded/53153399
  • 10. Caffeで実現された技術例例(2):GoogLeNet, VGG • ILSVRC2014(画像認識識コンテスト) の上位陣 • 200種類のカテゴリ分類で候補を5個提⽰示するタスクで、エラー率率率 6.6%(GoogLeNet)、7.3%(VGG) 10
  • 11. ⽤用語:アーキテクチャ関連 • Net:Neural Net(NN)のアーキテクチャ全体 • Blob:Node、Neuron、(ややこしいが)○○層とも • Layer:異異なる階層のBlobをつなぐモジュール NetBlobLayer x 1 x N h 1 h H k 1 k M y 1 y M t 1 t M Forward Backward 11
  • 12. Layerに関する注意 • 論論⽂文ではNodeの中で活性化関数を含む事が多いが、実装では活性化関 数をLayerで実現することが多い  X W Y=σ(WX) X W WX σ Y 12
  • 13. minibatch j ⽤用語:訓練関連 Epoch 1 Epoch 2 Epoch i Epoch N Epoch i 全訓練データを シャッフル minibatch 1 訓練データ 2 minibatch 2 minibatch j minibatch M 訓練データ 1 訓練データ B パラメータ更更新 時刻 • Epoch (Iteration):全訓練データを1巡する事 → 各訓練データはNetにN回与える • Solver:Netを訓練するモジュール • minibatch:少数の訓練データをまとめてNNに 与えた後にパラメータ更更新 13
  • 14. Caffeの使⽤用⽅方法:⼤大きく分けて3通り • コマンドラインツール(ディレクトリ:build/tools/) • prototxt(後述)の記述のみ、“プログラム”の必要なし • 既存モジュールを使⽤用するだけなら⼀一番簡単 • C++ライブラリを利利⽤用(ディレクトリ:build/include, build/lib) • ⾃自由度度の⾼高い設計が可能 • オリジナルのLayerを実装可能 • Python / Matlabのバインディングを利利⽤用(ディレクトリ:python/) • タスク特化のクラスが実装済(Classifier/Detector) • インタープリタ上での試⾏行行錯誤が可能 14
  • 15. prototxt:いわゆる設定ファイル  • ⽬目的に応じて複数⽤用意 • Train/Test⽤用:Netの構成・Data Layerの設定・Solverの設定 • Deploy⽤用:Netの構成・Input Blobの設定 • 利利⽤用可能なパラメータをProtocol Buffersを⽤用いて実現 * GoogLeNetのprototxt 2000⾏行行以上ある→ https://github.com/BVLC/caffe/pull/1367/files * src/caffe/proto/caffe.proto 15
  • 16. prototxtの記述(1):Train/Test⽤用のNet Train/Test mnist ip loss label Net LayerでTop Blob とBottom Blobを指定 Blob Layer data ip データはData Layer として抽象化 損失関数はLoss Layer として抽象化 16
  • 17. prototxtの記述(2):Deploy⽤用Net Net ip Deploy prob data ip Layerに挟まれないBlobは 4次元テンソルで指定 Blob probLayer 17
  • 18. デモ:コマンドラインからの実⾏行行
  • 19. Python Bindingの特徴* • ⽐比較的薄いラッパーでC++/Cudaを隠蔽 • Boost.Pythonを利利⽤用 • Pythonだけでも実験を⾏行行える設計 • Numpy/Scipy/matpotlibとの親和性は⾼高い • 多次元配列列操作にはNumpy.ndarrayを利利⽤用 • ipython Notebookでの実例例が充実** • Python Bindingを利利⽤用した試⾏行行錯誤の⽅方法論論が学べる * レポジトリ:python/ ** レポジトリ:examples/*.ipynb チュートリアル:http://caffe.berkeleyvision.org/tuto1r9ial/interfaces.html
  • 20. Python Bindingクラス関係図 caffe::Net (C++) NetLayerBlob caffe::Pynet (C++) caffe.Net (Python) Utility関数群 (C++) DerivesDerives caffe::Classifier (Python) has Boost.Python caffe::Detector (Python) has caffe::Layer (C++) caffe::PyLayer (C++) caffe.Layer (Python) caffe::Blob (C++) caffe::PyBlob (C++) caffe.Blob (Python) タスク特化型 クラス 20
  • 21. mafを⽤用いた深層学習の開発・実験
  • 22. ディープラーニングの特徴: 設計の⾃自由度度が⾼高い = チューニングが難しい • 設計時の選択肢:NNの設計は回路路設計に近い • ネットワーク(トポロジー/Layer数/Node数/活性化関数/損失関数) • 学習⽅方法(学習アルゴリズム/Iteration数/学習率率率関連) • チューニングパラメータが精度度に⼤大きく影響を与える • ReLUで少し学習率率率を変えただけで損失がInfになる • アルゴリズムの改善よりもパラメータ探索索が重要になることも → 効率率率的なトライアル & エラーがディープラーニングでの開発・実験の鍵 (様々なチューニングノウハウが知られている * ** ***) * A Practical Guide to Training Restricted Boltzmann Machines, Geoffrey Hinton, https://www.cs.toronto.edu/~hinton/absps/guideTR.pdf ** Practical Recommendations for Gradient-Based Training 22 of Deep Architectures, Yoshua Bengio, arXiv:1206.5533v2 *** Random Search for Hyper-Parameter Optimization, James Bergstra and Yoshua Bengio, JMLR 13 (2012) 281-305
  • 23. 効率率率的な試⾏行行錯誤は難しい • 様々なパラメータを試す時間がない • 前処理理/後処理理は実験プログラム実装と同等以上に⼿手間がかかる • 様々な実験設定での⼊入出⼒力力の管理理が煩雑 • 実験ごとに微妙に異異なるデータセット・設定ファイル • 実験ごとに得られる実験結果・ログ • 結果の再現性を担保できていない • 「この時の実験ログの実験を再現したいのだけれど、設定ファイル どれだろう?」 • 設定ファイルはあるけれど、書かれているディレクトリにデータが ない・データの形式が違いプログラムが動かない 23
  • 24. 実験プログラムだけでなく実験環境の管理理が必要 サーバー ライブラリ 実験⼿手順 実験結果・ログ プログラム 実験プログラム データセット 設定 ファイル 出⼒力力 本体 ⼊入⼒力力 環境 24
  • 25. maf概要:実験ビルドツール  git clone git@github.com:pfi/maf.git • 開発者:Preferred Infrastructure / Preferred Networks • バージョン:2013年年12⽉月公開、現在 ver. 0.2 • ⾔言語:Python • waf (Pythonベースのビルドツール) のラッパーとして実現 • ⽬目的:機械学習の典型的(だが煩雑)な操作の簡易易化 • 前処理理/データセットの分割/クロスバリデーション • 複数の(ハイパー)パラメータセットの⼀一括実⾏行行/中間⽣生成物の管理理 25
  • 26. mafを⽤用いた実験例例:liblinear 交差検定⽤用に データ分割 訓練 テスト 集計 プロット パラメータの作成 パラメータの作成 パラメータの集約 パラメータの集約 26
  • 27. mafデモ:実⾏行行結果例例 27
  • 28. デモ:mafを⽤用いた ディープラーニングのパラメータチューニング • タスク • Cifar10データを様々なパラメータを持つNetで分類し結果を可視化 • ポイント • mafで様々な学習パラメータのprototxtを⾃自動⽣生成 • イテレーション事のエラー推移をプロット • モデル・結果・ログをmafで管理理 • フィルター可視化にCaffeのClassifierモジュールを利利⽤用 28
  • 29. まとめ • Caffeは2014年年10⽉月現在最も活発に開発されているディープラーニングラ イブラリの⼀一つです • Caffeには最近のディープラーニング研究の成果が多数実装されています • ディープラーニングを含む機械学習の効果的な開発・実験には様々な実験 設定での⼊入出⼒力力データの管理理が課題となります • mafは機械学習・データ解析で現れる典型タスクを簡略略化する為の実験ビ ルドツールです • Caffeでの実験にmafを組み合わせて効果的なディープラーニングの開発・ 実験する⽅方法を提案しました 29