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
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
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