SlideShare a Scribd company logo
1 of 34
Download to read offline
2014/10/30 
PyData Tokyo MeetUp #1 
@デンソーアイティーラボラトリ 
Caffeとmafを⽤用いた 
ディープラーニング 
開発・実験⽅方法 
株式会社 Preferred Networks 
⼤大野 健太 oono@preferred.jp
⾃自⼰己紹介 
• ⼤大野健太(@delta2323_) 
• 経歴:数理理科学研究科(共形幾何)→2012.3 PFI→2014.10 PFN 
• 所属:研究班(担当領領域:理理論論解析・ライフサイエンス) 
• ブログ:http://delta2323.github.io 
• 謝辞 
• mafは得居誠也さん(PFN・@beam2d)・能地宏さん(総研⼤大/NII・ 
@nozyh)が中⼼心となり開発されています 
• Caffe・mafデモは得居さんの助⾔言を元に作成しています 
2
株式会社Preferred Networks 
Preferred Infrastructure(PFI、2006年年創業) 
l 検索索・機械学習のソフトウェア研究開発 
Preferred Networks(PFN、2014年年設⽴立立) 
l IoTにフォーカスするためスピンオフ 
l ディープラーニング等最新技術を開発 
l 様々な業界向けソリューションを加速 
l 製造業、交通、セキュリティ、⼩小売… 
代表取締役 
⻄西川徹 
取締役副社⻑⾧長 
岡野原⼤大輔 
ディープラーニング 機械学習 
(深層学習) 
検索索エンジン 
/ 
分析ソフト 
3
アジェンダ 
• Caffeの紹介 
• ディープラーニング関連⽤用語について 
• ディープラーニング実験の困難さ 
• mafの紹介 
• デモ:Caffeとmafを⽤用いた実験 
注意 
• Caffeは現在進⾏行行形で開発が進んでいます、本資料料は資料料作成時の 
masterブランチ(c18d22e)またはdevブランチ(30651a2)を参考 
に作成しています 
4
Caffe
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
画像分類デモ* 
* デモURL:http://demo.caffe.berkeleyvision.org7
特徴: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
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
Caffeで実現された技術例例(2):GoogLeNet, VGG 
• ILSVRC2014(画像認識識コンテスト) の上位陣 
• 200種類のカテゴリ分類で候補を5個提⽰示するタスクで、エラー率率率 
6.6%(GoogLeNet)、7.3%(VGG) 
10
⽤用語:アーキテクチャ関連 
• 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
Layerに関する注意 
• 論論⽂文ではNodeの中で活性化関数を含む事が多いが、実装では活性化関 
数をLayerで実現することが多い 
 
X 
W 
Y=σ(WX) 
X 
W 
WX 
σ 
Y 
12
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
Caffeの使⽤用⽅方法:⼤大きく分けて3通り 
• コマンドラインツール(ディレクトリ:build/tools/) 
• prototxt(後述)の記述のみ、“プログラム”の必要なし 
• 既存モジュールを使⽤用するだけなら⼀一番簡単 
• C++ライブラリを利利⽤用(ディレクトリ:build/include, build/lib) 
• ⾃自由度度の⾼高い設計が可能 
• オリジナルのLayerを実装可能 
• Python / Matlabのバインディングを利利⽤用(ディレクトリ:python/) 
• タスク特化のクラスが実装済(Classifier/Detector) 
• インタープリタ上での試⾏行行錯誤が可能 
14
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
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
prototxtの記述(2):Deploy⽤用Net 
Net 
ip 
Deploy 
prob 
data 
ip 
Layerに挟まれないBlobは 
4次元テンソルで指定 
Blob 
probLayer 
17
デモ:コマンドラインからの実⾏行行
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
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
mafを⽤用いた深層学習の開発・実験
ディープラーニングの特徴: 
設計の⾃自由度度が⾼高い = チューニングが難しい 
• 設計時の選択肢: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
実験プログラムだけでなく実験環境の管理理が必要 
サーバー 
ライブラリ 
実験⼿手順 実験結果・ログ 
プログラム 
実験プログラム 
データセット 
設定 
ファイル 
出⼒力力 
本体 
⼊入⼒力力 
環境 
24
maf概要:実験ビルドツール 
 
git clone git@github.com:pfi/maf.git 
• 開発者:Preferred Infrastructure / Preferred Networks 
• バージョン:2013年年12⽉月公開、現在 ver. 0.2 
• ⾔言語:Python 
• waf (Pythonベースのビルドツール) のラッパーとして実現 
• ⽬目的:機械学習の典型的(だが煩雑)な操作の簡易易化 
• 前処理理/データセットの分割/クロスバリデーション 
• 複数の(ハイパー)パラメータセットの⼀一括実⾏行行/中間⽣生成物の管理理 
25
mafを⽤用いた実験例例:liblinear 
交差検定⽤用に 
データ分割 
訓練 
テスト 
集計 
プロット 
パラメータの作成 
パラメータの作成 
パラメータの集約 
パラメータの集約 
26
mafデモ:実⾏行行結果例例 
27
デモ:mafを⽤用いた 
ディープラーニングのパラメータチューニング 
• タスク 
• Cifar10データを様々なパラメータを持つNetで分類し結果を可視化 
• ポイント 
• mafで様々な学習パラメータのprototxtを⾃自動⽣生成 
• イテレーション事のエラー推移をプロット 
• モデル・結果・ログをmafで管理理 
• フィルター可視化にCaffeのClassifierモジュールを利利⽤用 
28
まとめ 
• Caffeは2014年年10⽉月現在最も活発に開発されているディープラーニングラ 
イブラリの⼀一つです 
• Caffeには最近のディープラーニング研究の成果が多数実装されています 
• ディープラーニングを含む機械学習の効果的な開発・実験には様々な実験 
設定での⼊入出⼒力力データの管理理が課題となります 
• mafは機械学習・データ解析で現れる典型タスクを簡略略化する為の実験ビ 
ルドツールです 
• Caffeでの実験にmafを組み合わせて効果的なディープラーニングの開発・ 
実験する⽅方法を提案しました 
29
2014/11/6追記 
質問への回答 
30
⾼高次元な⼊入⼒力力データを扱う⽅方法について 
Q. ⾼高次元で疎な⼊入⼒力力を、効率率率的に学習を⾏行行う⽅方法はないか? 
A. Sparse Blobの実装はありますが、マージはされていません 
疎データを⼊入⼒力力するためのInput Blobは、Sparse Blobとして既に実装され、Pull 
Requestが提案されています*。しかしまだマージされていないため、もし利利⽤用する場合、 
⾃自⼰己責任で利利⽤用する必要がありそうです。 
「Torch7と混同しているかもしれない」と話しましたが、疎データを⼊入⼒力力し内積計算す 
るLayerはSparse Linear LayerとしてTorch7に存在していました (masterブランチ、コ 
ミット=704684)** *** 
 
* Sparse Data Support #937(https://github.com/BVLC/caffe/pull/937) 
** https://github.com/torch/nn/blob/master/SparseLinear.lua 
*** https://github.com/torch/nn/blob/master/doc/simple.md#nn.SparseLinear 
31
mafを⽤用いたCaffeの並列列実⾏行行について 
Q. デモでmafを⽤用いたCaffeを実⾏行行した際、1並列列での実⾏行行を指定する-j1オプ 
ションを付けたのはなぜか? 
A. Data Layerに⽤用いたleveldbファイルを同時アクセス出来ないためです 
Data Layerを⽤用いて訓練データを与える場合、⼊入⼒力力ファイルを予め適切切なファイル形式に変 
換しなければなりません(変換コマンドはCaffe側で⽤用意されています)。 
その形式の1つのleveldb形式では、同じファイルに複数のプロセスから同時にデータにアク 
セスすることができません (下記issue参照*)。 
今回のデモでは、様々なprototxtを⽣生成しましたが、⼊入⼒力力ファイルは共通していました。複 
数のタスクが並列列に⾛走って競合が発⽣生するのを防ぐため1並列列で実⾏行行しました。 
issueによるとleveldb形式ではなくLMDB形式を⽤用いれば並列列実⾏行行でも問題ないようです。 
* Parallel access to Leveldb #695(https://github.com/BVLC/caffe/issues/695) 
32
Mac OS 10.9でのCaffeのインストール (1/2) 
Q. Mac OS 10.9上でCaffeを簡単にインストールする⽅方法はないか? 
A. GPUを使わないならば10.8とほぼ同等の⽅方法でできます 
公式サイトのインストール⼿手順にある通り、Mac OS 10.9でのインストール⽅方法は10.8 
以前とは異異なります。 
その原因の⼀一つがデフォルトで使⽤用するC++ライブラリです。Mac OS 10.9ではデフォ 
ルトC++コンパイラであるClang++はlibc++をデフォルトで⽤用いています。しかし、 
NVIDIAのCUDAはlibstdc++でコンパイルしたライブラリとしかリンクできません。 
33
Mac OS 10.9でのCaffeのインストール (2/2) 
回避策は⼤大きく分けて2通りあります。 
1. ⼀一つ⽬目はClang++のコンパイラをlibc++からlibstdc++に変更更する⽅方法(本家サイトで 
紹介されている⽅方法)。 
2. (GPUを使⽤用しない場合) 10.8以前の⽅方法にいくつか⼿手順を加える⽅方法。make allを⾏行行 
う前にMakefile.configを2箇所修正します( (1)--libstdc++の削除(2)コメントアウトされ 
たCPU_ONLY:=1の有効化) 。NVIDIAのライブラリを使わないのでデフォルトのライブ 
ラリがlibc++でも問題なくCaffeをビルドできます。 
※ GPU未使⽤用のインストール⼿手順は@mooopanさんに指摘していただきました 
34

More Related Content

What's hot

Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Etsuji Nakai
 
TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築Hirokatsu Kataoka
 
ICML2013読み会 ELLA: An Efficient Lifelong Learning Algorithm
ICML2013読み会 ELLA: An Efficient Lifelong Learning AlgorithmICML2013読み会 ELLA: An Efficient Lifelong Learning Algorithm
ICML2013読み会 ELLA: An Efficient Lifelong Learning AlgorithmYuya Unno
 
Twitter分析のためのリアルタイム分析基盤@第4回Twitter研究会
Twitter分析のためのリアルタイム分析基盤@第4回Twitter研究会Twitter分析のためのリアルタイム分析基盤@第4回Twitter研究会
Twitter分析のためのリアルタイム分析基盤@第4回Twitter研究会Yuya Unno
 
Kerasで深層学習を実践する
Kerasで深層学習を実践するKerasで深層学習を実践する
Kerasで深層学習を実践するKazuaki Tanida
 
Jubatusの特徴変換と線形分類器の仕組み
Jubatusの特徴変換と線形分類器の仕組みJubatusの特徴変換と線形分類器の仕組み
Jubatusの特徴変換と線形分類器の仕組みJubatusOfficial
 
開発者からみたTensor flow
開発者からみたTensor flow開発者からみたTensor flow
開発者からみたTensor flowHideo Kinami
 
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFAShohei Hido
 
ChainerでDeep Learningを試す為に必要なこと
ChainerでDeep Learningを試す為に必要なことChainerでDeep Learningを試す為に必要なこと
ChainerでDeep Learningを試す為に必要なことJiro Nishitoba
 
言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクール言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクールYuya Unno
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情Yuta Kikuchi
 
Jubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニングJubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニングYuya Unno
 
Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Tatsuya Tojima
 
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...Yuya Unno
 
SensorBeeでChainerをプラグインとして使う
SensorBeeでChainerをプラグインとして使うSensorBeeでChainerをプラグインとして使う
SensorBeeでChainerをプラグインとして使うDaisuke Tanaka
 
深層学習時代の自然言語処理
深層学習時代の自然言語処理深層学習時代の自然言語処理
深層学習時代の自然言語処理Yuya Unno
 
TensorFlowで遊んでみよう!
TensorFlowで遊んでみよう!TensorFlowで遊んでみよう!
TensorFlowで遊んでみよう!Kei Hirata
 
A Chainer MeetUp Talk
A Chainer MeetUp TalkA Chainer MeetUp Talk
A Chainer MeetUp TalkYusuke Oda
 

What's hot (20)

bigdata2012nlp okanohara
bigdata2012nlp okanoharabigdata2012nlp okanohara
bigdata2012nlp okanohara
 
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編
 
TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築
 
ICML2013読み会 ELLA: An Efficient Lifelong Learning Algorithm
ICML2013読み会 ELLA: An Efficient Lifelong Learning AlgorithmICML2013読み会 ELLA: An Efficient Lifelong Learning Algorithm
ICML2013読み会 ELLA: An Efficient Lifelong Learning Algorithm
 
Twitter分析のためのリアルタイム分析基盤@第4回Twitter研究会
Twitter分析のためのリアルタイム分析基盤@第4回Twitter研究会Twitter分析のためのリアルタイム分析基盤@第4回Twitter研究会
Twitter分析のためのリアルタイム分析基盤@第4回Twitter研究会
 
Kerasで深層学習を実践する
Kerasで深層学習を実践するKerasで深層学習を実践する
Kerasで深層学習を実践する
 
Deep learning を用いた画像から説明文の自動生成に関する研究の紹介
Deep learning を用いた画像から説明文の自動生成に関する研究の紹介Deep learning を用いた画像から説明文の自動生成に関する研究の紹介
Deep learning を用いた画像から説明文の自動生成に関する研究の紹介
 
Jubatusの特徴変換と線形分類器の仕組み
Jubatusの特徴変換と線形分類器の仕組みJubatusの特徴変換と線形分類器の仕組み
Jubatusの特徴変換と線形分類器の仕組み
 
開発者からみたTensor flow
開発者からみたTensor flow開発者からみたTensor flow
開発者からみたTensor flow
 
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
 
ChainerでDeep Learningを試す為に必要なこと
ChainerでDeep Learningを試す為に必要なことChainerでDeep Learningを試す為に必要なこと
ChainerでDeep Learningを試す為に必要なこと
 
言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクール言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクール
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
Jubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニングJubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニング
 
Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門
 
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
 
SensorBeeでChainerをプラグインとして使う
SensorBeeでChainerをプラグインとして使うSensorBeeでChainerをプラグインとして使う
SensorBeeでChainerをプラグインとして使う
 
深層学習時代の自然言語処理
深層学習時代の自然言語処理深層学習時代の自然言語処理
深層学習時代の自然言語処理
 
TensorFlowで遊んでみよう!
TensorFlowで遊んでみよう!TensorFlowで遊んでみよう!
TensorFlowで遊んでみよう!
 
A Chainer MeetUp Talk
A Chainer MeetUp TalkA Chainer MeetUp Talk
A Chainer MeetUp Talk
 

Similar to Development and Experiment of Deep Learning with Caffe and maf

ディープラーニング最近の発展とビジネス応用への課題
ディープラーニング最近の発展とビジネス応用への課題ディープラーニング最近の発展とビジネス応用への課題
ディープラーニング最近の発展とビジネス応用への課題Kenta Oono
 
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hareDAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也harePreferred Networks
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Kenta Oono
 
#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーション#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーションYasushi Hara
 
Chainer Contribution Guide
Chainer Contribution GuideChainer Contribution Guide
Chainer Contribution GuideKenta Oono
 
ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)Kazunori Sakamoto
 
[DLHacks]Comet ML -機械学習のためのGitHub-
[DLHacks]Comet ML -機械学習のためのGitHub-[DLHacks]Comet ML -機械学習のためのGitHub-
[DLHacks]Comet ML -機械学習のためのGitHub-Deep Learning JP
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎Etsuji Nakai
 
使い捨て python コードの書き方
使い捨て python コードの書き方使い捨て python コードの書き方
使い捨て python コードの書き方Sho Shimauchi
 
Chainerで学ぶdeep learning
Chainerで学ぶdeep learningChainerで学ぶdeep learning
Chainerで学ぶdeep learningRetrieva inc.
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data scienceTakami Sato
 
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保するDNA Data Bank of Japan center
 
Kubeflowで何ができて何ができないのか #DEvFest18
Kubeflowで何ができて何ができないのか #DEvFest18Kubeflowで何ができて何ができないのか #DEvFest18
Kubeflowで何ができて何ができないのか #DEvFest18Shunya Ueta
 
[DL Hacks]Visdomを使ったデータ可視化
[DL Hacks]Visdomを使ったデータ可視化[DL Hacks]Visdomを使ったデータ可視化
[DL Hacks]Visdomを使ったデータ可視化Deep Learning JP
 
経済学のための実践的データ分析 5.特許データの分析
経済学のための実践的データ分析 5.特許データの分析経済学のための実践的データ分析 5.特許データの分析
経済学のための実践的データ分析 5.特許データの分析Yasushi Hara
 
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さんAkira Shibata
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験についてRakuten Group, Inc.
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructurePreferred Networks
 

Similar to Development and Experiment of Deep Learning with Caffe and maf (20)

ディープラーニング最近の発展とビジネス応用への課題
ディープラーニング最近の発展とビジネス応用への課題ディープラーニング最近の発展とビジネス応用への課題
ディープラーニング最近の発展とビジネス応用への課題
 
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hareDAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
 
#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーション#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーション
 
Chainer Contribution Guide
Chainer Contribution GuideChainer Contribution Guide
Chainer Contribution Guide
 
ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)
 
[DLHacks]Comet ML -機械学習のためのGitHub-
[DLHacks]Comet ML -機械学習のためのGitHub-[DLHacks]Comet ML -機械学習のためのGitHub-
[DLHacks]Comet ML -機械学習のためのGitHub-
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
使い捨て python コードの書き方
使い捨て python コードの書き方使い捨て python コードの書き方
使い捨て python コードの書き方
 
Chainerで学ぶdeep learning
Chainerで学ぶdeep learningChainerで学ぶdeep learning
Chainerで学ぶdeep learning
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
 
Tuning, etc.
Tuning, etc.Tuning, etc.
Tuning, etc.
 
Kubeflowで何ができて何ができないのか #DEvFest18
Kubeflowで何ができて何ができないのか #DEvFest18Kubeflowで何ができて何ができないのか #DEvFest18
Kubeflowで何ができて何ができないのか #DEvFest18
 
[DL Hacks]Visdomを使ったデータ可視化
[DL Hacks]Visdomを使ったデータ可視化[DL Hacks]Visdomを使ったデータ可視化
[DL Hacks]Visdomを使ったデータ可視化
 
経済学のための実践的データ分析 5.特許データの分析
経済学のための実践的データ分析 5.特許データの分析経済学のための実践的データ分析 5.特許データの分析
経済学のための実践的データ分析 5.特許データの分析
 
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure
 
Gamedevenvstudy1
Gamedevenvstudy1Gamedevenvstudy1
Gamedevenvstudy1
 

More from Kenta Oono

Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...
Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...
Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...Kenta Oono
 
Deep learning for molecules, introduction to chainer chemistry
Deep learning for molecules, introduction to chainer chemistryDeep learning for molecules, introduction to chainer chemistry
Deep learning for molecules, introduction to chainer chemistryKenta Oono
 
Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017
Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017
Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017Kenta Oono
 
Comparison of deep learning frameworks from a viewpoint of double backpropaga...
Comparison of deep learning frameworks from a viewpoint of double backpropaga...Comparison of deep learning frameworks from a viewpoint of double backpropaga...
Comparison of deep learning frameworks from a viewpoint of double backpropaga...Kenta Oono
 
深層学習フレームワーク概要とChainerの事例紹介
深層学習フレームワーク概要とChainerの事例紹介深層学習フレームワーク概要とChainerの事例紹介
深層学習フレームワーク概要とChainerの事例紹介Kenta Oono
 
20170422 数学カフェ Part2
20170422 数学カフェ Part220170422 数学カフェ Part2
20170422 数学カフェ Part2Kenta Oono
 
20170422 数学カフェ Part1
20170422 数学カフェ Part120170422 数学カフェ Part1
20170422 数学カフェ Part1Kenta Oono
 
情報幾何学の基礎、第7章発表ノート
情報幾何学の基礎、第7章発表ノート情報幾何学の基礎、第7章発表ノート
情報幾何学の基礎、第7章発表ノートKenta Oono
 
GTC Japan 2016 Chainer feature introduction
GTC Japan 2016 Chainer feature introductionGTC Japan 2016 Chainer feature introduction
GTC Japan 2016 Chainer feature introductionKenta Oono
 
On the benchmark of Chainer
On the benchmark of ChainerOn the benchmark of Chainer
On the benchmark of ChainerKenta Oono
 
Tokyo Webmining Talk1
Tokyo Webmining Talk1Tokyo Webmining Talk1
Tokyo Webmining Talk1Kenta Oono
 
VAE-type Deep Generative Models
VAE-type Deep Generative ModelsVAE-type Deep Generative Models
VAE-type Deep Generative ModelsKenta Oono
 
Common Design of Deep Learning Frameworks
Common Design of Deep Learning FrameworksCommon Design of Deep Learning Frameworks
Common Design of Deep Learning FrameworksKenta Oono
 
Introduction to Chainer and CuPy
Introduction to Chainer and CuPyIntroduction to Chainer and CuPy
Introduction to Chainer and CuPyKenta Oono
 
Stochastic Gradient MCMC
Stochastic Gradient MCMCStochastic Gradient MCMC
Stochastic Gradient MCMCKenta Oono
 
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 Kenta Oono
 
日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料
日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料
日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料Kenta Oono
 
提供AMIについて
提供AMIについて提供AMIについて
提供AMIについてKenta Oono
 
Chainerインストール
ChainerインストールChainerインストール
ChainerインストールKenta Oono
 
Caffeインストール
CaffeインストールCaffeインストール
CaffeインストールKenta Oono
 

More from Kenta Oono (20)

Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...
Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...
Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...
 
Deep learning for molecules, introduction to chainer chemistry
Deep learning for molecules, introduction to chainer chemistryDeep learning for molecules, introduction to chainer chemistry
Deep learning for molecules, introduction to chainer chemistry
 
Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017
Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017
Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017
 
Comparison of deep learning frameworks from a viewpoint of double backpropaga...
Comparison of deep learning frameworks from a viewpoint of double backpropaga...Comparison of deep learning frameworks from a viewpoint of double backpropaga...
Comparison of deep learning frameworks from a viewpoint of double backpropaga...
 
深層学習フレームワーク概要とChainerの事例紹介
深層学習フレームワーク概要とChainerの事例紹介深層学習フレームワーク概要とChainerの事例紹介
深層学習フレームワーク概要とChainerの事例紹介
 
20170422 数学カフェ Part2
20170422 数学カフェ Part220170422 数学カフェ Part2
20170422 数学カフェ Part2
 
20170422 数学カフェ Part1
20170422 数学カフェ Part120170422 数学カフェ Part1
20170422 数学カフェ Part1
 
情報幾何学の基礎、第7章発表ノート
情報幾何学の基礎、第7章発表ノート情報幾何学の基礎、第7章発表ノート
情報幾何学の基礎、第7章発表ノート
 
GTC Japan 2016 Chainer feature introduction
GTC Japan 2016 Chainer feature introductionGTC Japan 2016 Chainer feature introduction
GTC Japan 2016 Chainer feature introduction
 
On the benchmark of Chainer
On the benchmark of ChainerOn the benchmark of Chainer
On the benchmark of Chainer
 
Tokyo Webmining Talk1
Tokyo Webmining Talk1Tokyo Webmining Talk1
Tokyo Webmining Talk1
 
VAE-type Deep Generative Models
VAE-type Deep Generative ModelsVAE-type Deep Generative Models
VAE-type Deep Generative Models
 
Common Design of Deep Learning Frameworks
Common Design of Deep Learning FrameworksCommon Design of Deep Learning Frameworks
Common Design of Deep Learning Frameworks
 
Introduction to Chainer and CuPy
Introduction to Chainer and CuPyIntroduction to Chainer and CuPy
Introduction to Chainer and CuPy
 
Stochastic Gradient MCMC
Stochastic Gradient MCMCStochastic Gradient MCMC
Stochastic Gradient MCMC
 
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
 
日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料
日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料
日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料
 
提供AMIについて
提供AMIについて提供AMIについて
提供AMIについて
 
Chainerインストール
ChainerインストールChainerインストール
Chainerインストール
 
Caffeインストール
CaffeインストールCaffeインストール
Caffeインストール
 

Recently uploaded

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Recently uploaded (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

Development and Experiment of Deep Learning with Caffe and maf

  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 28. デモ:mafを⽤用いた ディープラーニングのパラメータチューニング • タスク • Cifar10データを様々なパラメータを持つNetで分類し結果を可視化 • ポイント • mafで様々な学習パラメータのprototxtを⾃自動⽣生成 • イテレーション事のエラー推移をプロット • モデル・結果・ログをmafで管理理 • フィルター可視化にCaffeのClassifierモジュールを利利⽤用 28
  • 29. まとめ • Caffeは2014年年10⽉月現在最も活発に開発されているディープラーニングラ イブラリの⼀一つです • Caffeには最近のディープラーニング研究の成果が多数実装されています • ディープラーニングを含む機械学習の効果的な開発・実験には様々な実験 設定での⼊入出⼒力力データの管理理が課題となります • mafは機械学習・データ解析で現れる典型タスクを簡略略化する為の実験ビ ルドツールです • Caffeでの実験にmafを組み合わせて効果的なディープラーニングの開発・ 実験する⽅方法を提案しました 29
  • 31. ⾼高次元な⼊入⼒力力データを扱う⽅方法について Q. ⾼高次元で疎な⼊入⼒力力を、効率率率的に学習を⾏行行う⽅方法はないか? A. Sparse Blobの実装はありますが、マージはされていません 疎データを⼊入⼒力力するためのInput Blobは、Sparse Blobとして既に実装され、Pull Requestが提案されています*。しかしまだマージされていないため、もし利利⽤用する場合、 ⾃自⼰己責任で利利⽤用する必要がありそうです。 「Torch7と混同しているかもしれない」と話しましたが、疎データを⼊入⼒力力し内積計算す るLayerはSparse Linear LayerとしてTorch7に存在していました (masterブランチ、コ ミット=704684)** *** * Sparse Data Support #937(https://github.com/BVLC/caffe/pull/937) ** https://github.com/torch/nn/blob/master/SparseLinear.lua *** https://github.com/torch/nn/blob/master/doc/simple.md#nn.SparseLinear 31
  • 32. mafを⽤用いたCaffeの並列列実⾏行行について Q. デモでmafを⽤用いたCaffeを実⾏行行した際、1並列列での実⾏行行を指定する-j1オプ ションを付けたのはなぜか? A. Data Layerに⽤用いたleveldbファイルを同時アクセス出来ないためです Data Layerを⽤用いて訓練データを与える場合、⼊入⼒力力ファイルを予め適切切なファイル形式に変 換しなければなりません(変換コマンドはCaffe側で⽤用意されています)。 その形式の1つのleveldb形式では、同じファイルに複数のプロセスから同時にデータにアク セスすることができません (下記issue参照*)。 今回のデモでは、様々なprototxtを⽣生成しましたが、⼊入⼒力力ファイルは共通していました。複 数のタスクが並列列に⾛走って競合が発⽣生するのを防ぐため1並列列で実⾏行行しました。 issueによるとleveldb形式ではなくLMDB形式を⽤用いれば並列列実⾏行行でも問題ないようです。 * Parallel access to Leveldb #695(https://github.com/BVLC/caffe/issues/695) 32
  • 33. Mac OS 10.9でのCaffeのインストール (1/2) Q. Mac OS 10.9上でCaffeを簡単にインストールする⽅方法はないか? A. GPUを使わないならば10.8とほぼ同等の⽅方法でできます 公式サイトのインストール⼿手順にある通り、Mac OS 10.9でのインストール⽅方法は10.8 以前とは異異なります。 その原因の⼀一つがデフォルトで使⽤用するC++ライブラリです。Mac OS 10.9ではデフォ ルトC++コンパイラであるClang++はlibc++をデフォルトで⽤用いています。しかし、 NVIDIAのCUDAはlibstdc++でコンパイルしたライブラリとしかリンクできません。 33
  • 34. Mac OS 10.9でのCaffeのインストール (2/2) 回避策は⼤大きく分けて2通りあります。 1. ⼀一つ⽬目はClang++のコンパイラをlibc++からlibstdc++に変更更する⽅方法(本家サイトで 紹介されている⽅方法)。 2. (GPUを使⽤用しない場合) 10.8以前の⽅方法にいくつか⼿手順を加える⽅方法。make allを⾏行行 う前にMakefile.configを2箇所修正します( (1)--libstdc++の削除(2)コメントアウトされ たCPU_ONLY:=1の有効化) 。NVIDIAのライブラリを使わないのでデフォルトのライブ ラリがlibc++でも問題なくCaffeをビルドできます。 ※ GPU未使⽤用のインストール⼿手順は@mooopanさんに指摘していただきました 34