Upload
ryosuke-okuta
View
11.370
Download
0
Embed Size (px)
Citation preview
ディープラーニングフレームワーク Chainer の紹介
と分散深層強化学習による
ロボット制御
奥田 遼介
2015/8/19
ディープラーニングセミナー 2015@ 名古屋
自己紹介&会社紹介
奥田遼介
– 2014 東北大学 修士卒業
現在
– PFN エンジニア
– OSS Chainer 作ってます
2
Preferred Networks, Inc.– Preferred Infrastructure よりスピンオフ
— 2014 年 3 月設立
オフィス
– 本郷(東京都文京区)
– San Jose ( CA, USA)
ミッション:
– IoT 時代に向けた新しいコンピュータを創造する
– あらゆるモノに知能をもたせ、分散知能を実現する
アジェンダ
分散深層強化学習
強化学習とは何か
深層学習 + 強化学習
ロボット制御への適用
Chainer– 今後どのような NN が使われるか
– 他のフレームワークとの差異
– クイックスタート
3
IoT 時代の到来で発生する課題
膨大なデータがエッジ側で生成されるようになる
– 例:映像はカメラ 1 台で年間 100TB 、タービンセンサ、ポイントクラウド
4
5
機械学習の活用
学習 行動
web サービスゲーム AIルーターロボット自動車...
ヒストグラム線形モデル
SVMDeep NN
...
データ
画像音声テキスト行動ログ…
前処理 データ収集
結果を利用
6
機械学習の活用
学習 行動
web サービスゲーム AIルーターロボット自動車...
ヒストグラム線形モデル
SVMDeep NN
...
データ
前処理 データ収集
画像音声テキスト行動ログ…
人が作業する
結果を利用
7
強化学習のモチベーション
学習 行動
web サービスゲーム AIルーターロボット自動車...
ヒストグラム線形モデル
SVMDeep NN
...
データ
前処理
結果を利用
データ収集
画像音声テキスト行動ログ…
人が作業する
前処理の自動獲得
8
強化学習のモチベーション
学習 行動
web サービスゲーム AIルーターロボット自動車...
ヒストグラム線形モデル
SVMDeep NN
...
データ
前処理
結果を利用
データ収集
画像音声テキスト行動ログ…
人が作業する
前処理の自動獲得 このループを自動で回したい
状態 s の時に
どの行動 a を
取ればよいかを
報酬 r を
手掛かりに学習する
強化学習の問題設定(簡易版)
9
エージェント
行動 a良い結果
・すいすい走る
悪い結果・他車とぶつかる
評価報酬 r を与える
(罰の場合もある)
状態 s :周りの情報
状態 s に対する行動 a
は直接教えない
強化学習の問題設定
エージェントが環境から状態 s を観測する
エージェントが行動 a(s) を行う。 a(s): 戦略関数
行動 a の結果として報酬 r(s,a) を受け取り、環境が変化する
環境が終状態になるまで繰り返し
行動履歴「 s1, a1, r1, s2, a2, r2, … 」を元に、合計の報酬が最も多く得られるように a(s) を更新する
エージェント
環境
状態 s行動 a
報酬 r
11
強化学習 + 深層学習
Deep Q Network (DeepMind 2014)
入力:画面の画像データ 出力:操作コマンド
複数ロボットカーの協調走行
状態 s : 273 次元
– 視線: 32 方向の視線に対する情報など(障害物までの距離)
行動 a : 5種類(前後加速 , 左右回転 , ブレーキ ) 報酬 r :
– 良い:指定されたパスに沿って速く移動する
– 悪い:壁や障害物、他の車にぶつかる
どのように走行すれば最適かを学習
– 状態 s の時に各行動 a の報酬を予測する NN を学習
12
273 600 400 200 100 50
入力:状態 s
前加速後加速右回転左回転ブレーキ
活性化関数には ReLU出力:各行動 a の報酬予測
分散学習
13
273 600 400 200 100 50 5
273 600 400 200 100 50 5
273 600 400 200 100 50 5
重みを共有
重みを共有
14
強化学習のまとめ
学習 行動
ロボットカー
Deep NN
データ
前処理
結果を利用
データ収集
距離、角度などのセンサーデータ
強化学習でループを自動で
回す
深層学習フレームワーク
Chainer : 深層学習フレームワークを OSS として公開中
2015/6/9公開( chainer.org )
Python + CUDA
pip による簡単なインストール
系列・可変長データの学習アルゴリズムをネイティブにサポート
マルチ GPU 対応 (Model Parallel / Data Parallel)16
既存フレームワークとの比較
主要実装言語 Python C++ Lua Python
主要開発者 Preferred Networks Inc.
BVLC Idiap Research Institute, DeepMind
Univ. of Montreal
コミュニティ △ ◎ ○ ○
RNN/LSTM 対応
◎ × ○ ○
動的ネットワーク構築
○ × × ×
拡張性 ○ △ ○ ○
ネットワーク設計
言語内 DSL 設定ファイル(prototxt)
言語内 DSL 設定ファイル(YAML)
特徴 ネットワーク動的構築による省リソース
画像認識が得意 LuaJIT による高速化
自動微分機構
17
Chainer の何が良いか
インストールが簡単
– pip コマンドでインストール
Python で書ける
– Luaや C++はちょっとつらい
ネットワーク定義を制御構文を使って書ける
– Caffe のネットワーク定義は巨大になると辛い
– 動的なネットワークを扱うのが苦手
可変長のネットワークをネイティブに扱える
– 論文で出てくる最新のネットワークを簡単に実装できる18
アーキテクチャの複雑化
深層学習で扱われるアーキテクチャーの複雑化
– GoogLeNet, RNN, LSTM
既存フレームワークではネットワークの記述は困難
– 繰り返し構造、分岐などプログラムと同レベルの複雑さ
19
Chainer Caffe167 行 2058 行
GoogleNet のアーキテクチャ定義の必要行数(2012) Supervision, 7 層 ↑
(2014) GoogLeNet, 22 層→
ネットワーク構造の変化、固定長から可変長へ
アーキテクチャ 入出力 タスク 応用
これまで 全結合 , CNN 固定長 分類・回帰 画像・音声
これから RNN, LSTM, NTM 可変長 強化学習プログラム実行
映像・音声自然言語・ IoT
20
x1
xN
h1
hH k
M
k1
CNN(LeNet) RNN LSTM
Chainer リリースヒストリー
隔週水曜のリリースで進行中
21
6/9 Ver1.0.0 公開
6 月 7 月 8 月 9 月
6/23 Ver1.0.1
7/15 Ver1.1.0Caffe モデル読み込み対応など
7/26 Ver1.1.1
8/5 Ver1.1.2
8/19 Ver1.2.0新ファンクション追加など
9/2 Ver1.3.0 (予定)CuPyバックエンドに移行など
CuPy Cuda を利用する計算ライブラリ Numpy のサブセットを実装
:の使い方
22
Chainer のインストール
おすすめの環境
– Ubuntu14.04 + CUDA7.0– Python 2.7 / Python3.4
Pyenv などを利用するとさらに良い
CPU のみ
– $pip install –U chainer
CPU+ GPU– $pip install –U chainer chainer-cuda-deps– クリーンでない環境では上手くいないときがあります
トラブル時はフォーラムなど見てください23
MNIST の実行 (quick start)1. Example をダウンロード取ってくる
– 「 $pip list 」を実行し対応する chainer のバージョンを調べる
– 例えば chainer (1.2.0) なら
– https://github.com/pfnet/chainer/tree/v1.2.0/examples/mnist
2. 学習を実行
– $./train_mnist.py– データセットのダウンロード後に学習が始まります
24
Imagenet example/imagenet
– $ python train_imagenet.py
アーキテクチャー
– Alexnet– Network in Network– GoogleNet– GoogleNet(Batch Normalization )
25
Chainer へのアクセス
公式サイト
– http://chainer.org Github
– https://github.com/pfnet/chainer– Issue, PRお待ちしています
Twitter– https://twitter.com/chainerofficial– @ChainerOfficial
Google Grop– https://groups.google.com/forum/#!forum/chainer– 困ったときはこちらに
– 日本語でも英語でも OK26