SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「PyData.Tokyo Meetup」イベントレポート

Pythonディープラーニングライブラリのツートップ「Pylearn2」「Caffe」とは~PyData Tokyo Meetup #1イベントレポート


  • X ポスト
  • このエントリーをはてなブックマークに追加

セッション「PyLearn2解説」

 PyData Tokyoの中の人、池内(@iktakahiro)です。

 記念すべき1つめの講演は、東京大学 知の構造化センター 特任講師 中山浩太郎先生による「Pylearn2解説」です。

 中山先生は人工知能や大規模データマイニングを専門としており、東京大学で講師を務めているほか、プログラミング系書籍の執筆を数多く行うなど、幅広く活躍されています。今回は、ディープラーニングの代表的なツール「Pylearn2」について解説いただく貴重な機会をいただきました。

 中山先生の講演を通じて学んだことをレポートしたいと思います。

ディープラーニングライブラリ「Pylearn2」

 「Pylearn2」はモントリオール大学で開発されているディープラーニングライブラリで、数値計算ライブラリ「Theano(セアノ)」がベースになっており自動微分が優れているのが特徴です。

 オプションを付与するだけで、GPU用の計算コードを生成できる点もPylearn2の特徴とメリットです。

Pylearn2の利用方法

ディレクトリ構成

 Pylearn2のディレクトリ構成のうち重要なものを記載します。

  • datasets:データセットのディレクトリです。
  • scripts:実行スクリプトが入っているディレクトリです。利用者は主にこのディレクトリの中身を見ていくことになります。
  • training_algorithms, models:研究目的であれば深く見ていく必要があるディレクトリだろうとの解説がありました。

設定と実行

 利用するアルゴリズムやデータセットをYAML形式で記述して実行するのが、Pylearn2のベーシックな利用方法の一つです。

 今回の中山先生の講演ではいくつかのデモを実行していただきましたが、チュートリアルのために用意されているサンプルファイル「cifar_grbm_smd.yaml」を利用した解説がありましたので、その手順をおさらいしてみます。講演で触れられていなかったデータセットの取得手順などについては一部補完しています。

 なお、今回のレポートを書くにあたり、OS X Yosemite(10.10)にPylearn2の環境を構築しています。Pylearn2のセットアップ手順については、今回の主旨とは異なるため割愛します。

 下記に、設定ファイルの雰囲気を掴んでもらうためにコメントアウト部を除外したYAMLを記載します。

!obj:pylearn2.train.Train {
    dataset: !pkl: "cifar10_preprocessed_train.pkl",
    model: !obj:pylearn2.models.rbm.GaussianBinaryRBM {
        nvis : 192,
        nhid : 400,
        irange : 0.05,
        energy_function_class : !obj:pylearn2.energy_functions.rbm_energy.grbm_type_1 {},
        learn_sigma : True,
        init_sigma : .4,
        init_bias_hid : -2.,
        mean_vis : False,
        sigma_lr_scale : 1e-3
    },
    algorithm: !obj:pylearn2.training_algorithms.sgd.SGD {
        learning_rate : 1e-1,
        batch_size : 5,
        monitoring_batches : 20,
        monitoring_dataset : !pkl: "cifar10_preprocessed_train.pkl",
        cost : !obj:pylearn2.costs.ebm_estimation.SMD {
            corruptor : !obj:pylearn2.corruption.GaussianCorruptor {
                    stdev : 0.4
            },
        },
        termination_criterion : !obj:pylearn2.termination_criteria.MonitorBased {
            prop_decrease : 0.01,
            N : 1,
        },
        },
    extensions : [!obj:pylearn2.training_algorithms.sgd.MonitorBasedLRAdjuster {}],
    #Finally, request that the model be saved after each epoch
    save_freq : 1
}

 このYAMLで、

  • データセット
  • アルゴリズム
  • レイヤー構造
  • テスト方法

などを指定することができます。

 設定ファイル中の「pylearn2.models」というのがディレクトリ構成で触れたmodelsに該当します。rbm.GaussianBinaryRBMが指定されていますね。modelsには他に、講演で解説のあったMaxoutなどのアルゴリズムの実装があります。

 では、「cifar_grbm_smd.yaml」を利用して学習を実行してみます。

# データセットの準備
sh scripts/datasets/download_cifar10.sh
python scripts/tutorials/grbm_smd/make_dataset.py

# 学習
cd scripts/tutorials/grbm_smd/
../../train.py cifar_grbm_smd.yaml

 学習の過程でいろいろな数値が標準出力されますが、誤差情報を表すobjectiveの値が小さくなっていく点に着目せよ、との解説がありました。

 学習結果は「cifar_grbm_smd.pkl」に出力されます。.pklはデータなので、可視化を行います。

../../show_weights.py --out cifar_grbm_smb.png cifar_grbm_smd.pkl

 「cifar_grbm_smb.png」が出力されます。

cifar_grbm_smb.png
cifar_grbm_smb.png

全体を通じて

 今回、「Pylearn2解説」というライブラリを打ち出したアジェンダではありましたが、前段として「ニューラルネットワークとは」「ディープラーニングとは」という点も併せて解説いただけました。

 ニューラルネットワークにおいて、オーバーフィッティングや収束速度の問題がデメリットとされてきましたが、そういった問題を解決するためにディープラーニングの領域が研究されてきた、という歴史的経緯の話が非常に印象に残っています。

 会場ディスカッションでは、Pylearn2の設定ファイルが読みにくいという中山先生のコメントに対して、Pythonコードで設定を書いたほうが良いのではないかという意見や、ビジネスの課題を解決するためにはグリッドサーチ的なアプローチでパラメータを最適化していく必要があるのではないかという質問もあり、実際の利用をイメージしている方が多いように感じました。

次のページ
セッション「Caffeとmafを用いたディープラーニング開発・実験方法」

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
「PyData.Tokyo Meetup」イベントレポート連載記事一覧

もっと読む

この記事の著者

シバタアキラ(シバタ アキラ)

データサイエンティスト@DataRobot, Inc. PyData.Tokyoオーガナイザー 人工知能を使ったデータ分析によるビジネス価値の創出が専門分野。物理学博士。NYU研究員時代にデータサイエンティストとして加速器データの統計モデル構築を行い「神の素粒子」ヒッグスボゾン発見に貢献。その後ボストン・コンサルティング・グループでコンサルタント。白ヤギコーポレーションCEOを経て現職 Twitter: @madyagi Facebook: Akira Shibata DATAブログ: http://ashibata.com DataRobot, Incウェブサイト: http://datarobot.com

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

池内 孝啓(イケウチ タカヒロ)

神奈川県横浜市出身。1984年生まれ。ソフトウェア開発会社、インフラサービス提供会社を経て2011年3月株式会社ALBERT入社。クラウドコンピューティングを活用したマーケティングプラットフォーム事業の立ち上げに携わる。2014年1月に同社執行役員に就任。2015年8月株式会社ユーリエを設立。同社代表取締役社長兼CTO。2014年にコミュニティ PyData.Tokyo を共同で立ち上げるなど、Python と PyData ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

田中 秀樹(タナカ ヒデキ)

PyData TokyoオーガナイザーシリコンバレーでPython×データ解析の魅力に出会う。帰国後、ディープラーニングに興味を持ち、PyCon JP 2014に登壇したことがきっかけとなりPyData Tokyoをスタート。カメラレンズの光学設計エンジニアをする傍ら、画像認識を用いた火星および太陽系惑星表面の構造物探索を行うMarsface Project(@marsfaceproject)に参加。インドやモロッコなど、旅先で...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8315 2015/04/10 13:11

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング