27
デデデデデデデデデ デデデデデデデ Chainer デデデ デデデデデデデデデデデ デデデデデデ デデ デデ [email protected] 2015/8/19 デデデデデデデデデデデデデ 2015@ デデデ

DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

Embed Size (px)

Citation preview

Page 1: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

ディープラーニングフレームワーク Chainer の紹介

と分散深層強化学習による

ロボット制御

奥田 遼介

[email protected]

2015/8/19

ディープラーニングセミナー 2015@ 名古屋

Page 2: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

自己紹介&会社紹介

奥田遼介

– 2014 東北大学 修士卒業

現在

– PFN エンジニア

– OSS Chainer 作ってます

2

Preferred Networks, Inc.– Preferred Infrastructure よりスピンオフ

— 2014 年 3 月設立

オフィス

– 本郷(東京都文京区)

– San Jose ( CA, USA)

ミッション:

– IoT 時代に向けた新しいコンピュータを創造する

– あらゆるモノに知能をもたせ、分散知能を実現する

Page 3: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

アジェンダ

分散深層強化学習

強化学習とは何か

深層学習 + 強化学習

ロボット制御への適用

Chainer– 今後どのような NN が使われるか

– 他のフレームワークとの差異

– クイックスタート

3

Page 4: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

IoT 時代の到来で発生する課題

膨大なデータがエッジ側で生成されるようになる

– 例:映像はカメラ 1 台で年間 100TB 、タービンセンサ、ポイントクラウド

4

Page 5: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

5

機械学習の活用

学習 行動

web サービスゲーム AIルーターロボット自動車...

ヒストグラム線形モデル

SVMDeep NN

...

データ

画像音声テキスト行動ログ…

前処理 データ収集

結果を利用

Page 6: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

6

機械学習の活用

学習 行動

web サービスゲーム AIルーターロボット自動車...

ヒストグラム線形モデル

SVMDeep NN

...

データ

前処理 データ収集

画像音声テキスト行動ログ…

人が作業する

結果を利用

Page 7: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

7

強化学習のモチベーション

学習 行動

web サービスゲーム AIルーターロボット自動車...

ヒストグラム線形モデル

SVMDeep NN

...

データ

前処理

結果を利用

データ収集

画像音声テキスト行動ログ…

人が作業する

前処理の自動獲得

Page 8: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

8

強化学習のモチベーション

学習 行動

web サービスゲーム AIルーターロボット自動車...

ヒストグラム線形モデル

SVMDeep NN

...

データ

前処理

結果を利用

データ収集

画像音声テキスト行動ログ…

人が作業する

前処理の自動獲得 このループを自動で回したい

Page 9: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

状態 s の時に

どの行動 a を

取ればよいかを

報酬 r を

手掛かりに学習する

強化学習の問題設定(簡易版)

9

エージェント

行動 a良い結果

・すいすい走る

悪い結果・他車とぶつかる

評価報酬 r を与える

(罰の場合もある)

状態 s :周りの情報

状態 s に対する行動 a

は直接教えない

Page 10: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

強化学習の問題設定

エージェントが環境から状態 s を観測する

エージェントが行動 a(s) を行う。 a(s): 戦略関数

行動 a の結果として報酬 r(s,a) を受け取り、環境が変化する

環境が終状態になるまで繰り返し

行動履歴「 s1, a1, r1, s2, a2, r2, … 」を元に、合計の報酬が最も多く得られるように a(s) を更新する

エージェント

環境

状態 s行動 a

報酬 r

Page 11: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

11

強化学習 + 深層学習

Deep Q Network (DeepMind 2014)

入力:画面の画像データ 出力:操作コマンド

Page 12: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

複数ロボットカーの協調走行

状態 s : 273 次元

– 視線: 32 方向の視線に対する情報など(障害物までの距離)

行動 a : 5種類(前後加速 , 左右回転 , ブレーキ ) 報酬 r :

– 良い:指定されたパスに沿って速く移動する

– 悪い:壁や障害物、他の車にぶつかる

どのように走行すれば最適かを学習

– 状態 s の時に各行動 a の報酬を予測する NN を学習

12

273 600 400 200 100 50

入力:状態 s

前加速後加速右回転左回転ブレーキ

活性化関数には ReLU出力:各行動 a の報酬予測

Page 13: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

分散学習

13

273 600 400 200 100 50 5

273 600 400 200 100 50 5

273 600 400 200 100 50 5

重みを共有

重みを共有

Page 14: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

14

強化学習のまとめ

学習 行動

ロボットカー

Deep NN

データ

前処理

結果を利用

データ収集

距離、角度などのセンサーデータ

強化学習でループを自動で

回す

Page 15: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

深層学習フレームワーク

Page 16: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

Chainer : 深層学習フレームワークを OSS として公開中

2015/6/9公開( chainer.org )

Python + CUDA

pip による簡単なインストール

系列・可変長データの学習アルゴリズムをネイティブにサポート

マルチ GPU 対応 (Model Parallel / Data Parallel)16

Page 17: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

既存フレームワークとの比較

主要実装言語 Python C++ Lua Python

主要開発者 Preferred Networks Inc.

BVLC Idiap Research Institute, DeepMind

Univ. of Montreal

コミュニティ △ ◎ ○ ○

RNN/LSTM 対応

◎ × ○ ○

動的ネットワーク構築

○ × × ×

拡張性 ○ △ ○ ○

ネットワーク設計

言語内 DSL 設定ファイル(prototxt)

言語内 DSL 設定ファイル(YAML)

特徴 ネットワーク動的構築による省リソース

画像認識が得意 LuaJIT による高速化

自動微分機構

17

Page 18: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

Chainer の何が良いか

インストールが簡単

– pip コマンドでインストール

Python で書ける

– Luaや C++はちょっとつらい

ネットワーク定義を制御構文を使って書ける

– Caffe のネットワーク定義は巨大になると辛い

– 動的なネットワークを扱うのが苦手

可変長のネットワークをネイティブに扱える

– 論文で出てくる最新のネットワークを簡単に実装できる18

Page 19: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

アーキテクチャの複雑化

深層学習で扱われるアーキテクチャーの複雑化

– GoogLeNet, RNN, LSTM

既存フレームワークではネットワークの記述は困難

– 繰り返し構造、分岐などプログラムと同レベルの複雑さ

19

Chainer Caffe167 行 2058 行

GoogleNet のアーキテクチャ定義の必要行数(2012) Supervision, 7 層 ↑

(2014) GoogLeNet, 22 層→

Page 20: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

ネットワーク構造の変化、固定長から可変長へ

アーキテクチャ 入出力 タスク 応用

これまで 全結合 , CNN 固定長 分類・回帰 画像・音声

これから RNN, LSTM, NTM 可変長 強化学習プログラム実行

映像・音声自然言語・ IoT

20

x1

xN

h1

hH k

M

k1

CNN(LeNet) RNN LSTM

Page 21: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

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 のサブセットを実装

Page 22: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

:の使い方

22

Page 23: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

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

Page 24: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

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

Page 25: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

Imagenet example/imagenet

– $ python train_imagenet.py

アーキテクチャー

– Alexnet– Network in Network– GoogleNet– GoogleNet(Batch Normalization )

25

Page 26: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

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

Page 27: DLフレームワークChainerの紹介と分散深層強化学習によるロボット制御

Copyright © 2015-

Preferred Networks All Right Reserved.