セッション「Caffeとmafを用いたディープラーニング開発・実験方法」
PyData Tokyoオーガナイザーの田中(@atelierhide)です。
2つ目の講演として、株式会社Preferred Networksの大野健太さん(@delta2323_)に「Caffeとmafを用いたディープラーニング開発・実験方法」というタイトルで発表していただきました。
株式会社Preferred NetworksはディープラーニングやIoT(Internet of Things)にフォーカスした研究開発を行っており、大野さんは理論解析やライフサイエンス分野の研究を担当しています。また、株式会社Preferred Networksでは毎週木曜日にUstreamでセミナーを配信しているため、私も興味のあるテーマを視聴したいと思っています。
今回の講演では、ディープラーニングのためのフレームワークとして大きな注目を集めている「Caffe」と、機械学習におけるパラメータチューニング作業の簡略化を目的とした実験ビルドツール「maf」について、デモを通じてディープラーニングの実験を行う具体的な手法を紹介していただきました。大野さんの講演で特に印象に残ったところをレポートします。
ディープラーニングのためのフレームワーク「Caffe」
「Caffe」は、アメリカのカルフォルニア大学バークレー校のBVLC(Berkeley Vision and Learning Center)を中心に開発が進められているディープラーニングのためのフレームワークです。C++をコア言語として実装されていますが、Pythonのバインディングがあり、IPython Notebookでの実例が公式サイトに充実しています。
筆者はCaffeのPythonバインディングをUbuntu 14.04上で以前から利用していますが、最初の環境構築のハードルが高いという印象を持っており、参加者からもこの件に関して質問が挙がりました。Ubuntu 14.04、Ubuntu 12.04、OS X 10.9、OS X 10.8については開発者により動作確認がされていますが、特にOS X 10.9にインストールする場合は、デフォルトのC++ライブラリが変更されたことが理由で、Mac OS 10.8以前と手順が異なるため注意が必要とのことです。この課題は大野さんも苦労された経験があるとのことで、発表資料の最後に補足として説明を追加していただきました。
Caffeとmafを用いたディープラーニングのパラメータチューニング
ディープラーニングは、ネットワーク設計と学習方法の自由度が高く、その選択肢の多さからパラメータのチューニングが困難という特徴があります。そして、この課題を解決するために使用できるツールが「maf」です。
mafは、大野さんが所属する株式会社Preferred Networks、および株式会社Preferred Infrastructureが中心となって開発している機械学習に便利な実験ビルドツールで、Pythonベースのビルドツールである「waf」のラッパーとして実現されています。
デモとして、画像分類のベンチマークとして広く利用されている「CIFAR-10」を用い、パラメータのチューニングを行う手法について紹介していただきました。具体的には、複数の学習パラメータの自動生成(Caffeのprototxt)、学習中のエラー推移の可視化、結果とログの管理をmafで行います。
デモのサンプルコードがGitHub上に公開されていますので、ここではサンプルコードを実行するまでの手順を解説します。なお、CaffeはUbuntu14.04上に既にインストールされていることを想定しています。
はじめに、Caffeディレクトリにある2つのスクリプトを実行し、実験に必要なデータセットを準備します。「create_cifar10.sh」の実行後に「cifar10_train_leveldb」「cifar10_test_leveldb」「mean.binaryproto」の3つのファイルが作成されることを確認してください。
$ cd $CAFFE_ROOT $ ./data/cifar10/get_cifar10.sh $ ./examples/cifar10/create_cifar10.sh
次に、サンプルコードをGitHubから取得し、特徴量の可視化に用いるデータを別途ダウンロードします。
$ cd $DEMO_ROOT $ git clone https://github.com/pfnet/maf_example $ cd maf_example/caffe $ mkdir data $ cd data $ wget wget http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz $ tar xvfz cifar-10-python.tar.gz
次に、mafを実行するための準備として、DEMO_ROOT/maf_example/caffe/wscriptにCAFFE_ROOTを設定します。サンプルコードでは、GPU上での計算を想定しているため、CPUで計算を行いたい場合は'solver_mode' : ['GPU']を['CPU']に変更します。これにより、mafが学習パラメータを記述する「solver.prototxtを生成する」際に、CPUモードが指定されます。
最後に、以下のコマンドを実行することで、パラメータチューニングの実験を行うことができます。
$ cd $DEMO_ROOT/maf_example/caffe $ ./waf configure $ ./waf build -j1
まとめ
メディアでもディープラーニングというキーワードが取り上げられることが増え、注目を集めていますが、その利用はまだまだ一部の研究者だけに限られるものという印象を持っている方が多いのではないでしょうか。
筆者もパラメータチューニングが困難という印象を持っていましたが、大野さんにデモを通じて比較的簡単に実験ができることが分かり、とても参考になりました。
発表資料、サンプルコード、ビデオが公開されていますので、これらを参考にして、これからディープラーニングをはじめる方が増えることを期待しています。
「PyData Tokyo Meetup #1」全体を通して
PyData Tokyoのキックオフとして、ディープラーニングをテーマにした「濃い」勉強会を開催しました。今回、参加枠を大幅に上回る参加申し込みをいただき、改めてディープラーニングの注目度の高さを感じました。現在は画像認識分野での利用が中心となっていますが、他の分野での話も含めて、再度ディープラーニングをテーマに勉強会を開催できればと考えています。
イベント第2回も「PyData Tokyo Meetup #2」として、「濃い」勉強会を11月28日に開催しました。次回のレポートもご期待ください!