26
Deep Predictive Coding Networks (PredNet) をををををを を ををををををををををををををを

Pred net使ってみた

Embed Size (px)

Citation preview

Page 1: Pred net使ってみた

Deep Predictive Coding Networks (PredNet) を使ってみた

【第2回】全脳アーキテクチャ研究会オフ会

Page 2: Pred net使ってみた

目次•自己紹介•PredNet について•今回やってきたこと•エラーユニットの可視化•汎化性能

Page 3: Pred net使ってみた

自己紹介• 名前:落合幸治• 大学時代:• 動画・画像処理の研究

• 職業:• 制御エンジニア• 浄水プラントの制御ソフト開発、データ解析

• 技術分野• MATLAB 、 Python• 時系列解析、現代制御、画像処理

Page 4: Pred net使ってみた

これまでの経緯

PredNet ハッカソン(1日目)PredNet ハッカソン( 2 日目)

第1回オフ会

第 2 回オフ会

論文の arXiv 投稿2016/5/25( 水 )

2016/6/12( 日)2016/6/19( 日 )

2016/6/21( 火 )

2016/6/29( 水 )

Page 5: Pred net使ってみた

これまでの経緯

PredNet ハッカソン(1日目)PredNet ハッカソン( 2 日目)

第1回オフ会

第 2 回オフ会

論文の arXiv 投稿2016/5/25( 水 )

2016/6/12( 日)2016/6/19( 日 )

2016/6/21( 火 )

2016/6/29( 水 )

Deep Predictive Coding Networks for Video Prediction and Unsupervised Learning

David Cox( ハーバード大学の計算論的生物学者 )

Page 6: Pred net使ってみた

これまでの経緯

PredNet ハッカソン(1日目)PredNet ハッカソン( 2 日目)

第1回オフ会

第 2 回オフ会

論文の arXiv 投稿2016/5/25( 水 )

2016/6/12( 日)2016/6/19( 日 )

2016/6/21( 火 )

2016/6/29( 水 )

• 川崎さんからの現状報告• Keras で1層だけ実装• ConvLSTM の実装が難しい

• 1週間後に成果を持ち寄ることにしよう

Page 7: Pred net使ってみた

これまでの経緯

PredNet ハッカソン(1日目)PredNet ハッカソン( 2 日目)

第1回オフ会

第 2 回オフ会

論文の arXiv 投稿2016/5/25( 水 )

2016/6/12( 日)2016/6/19( 日 )

2016/6/21( 火 )

2016/6/29( 水 )

• 桑田さん: PredNet の実装と挙動観察Cheiner を用いた PredNet 実装https://github.com/quadjr/PredNet

Page 8: Pred net使ってみた

これまでの経緯

PredNet ハッカソン(1日目)PredNet ハッカソン( 2 日目)

第1回オフ会

第 2 回オフ会

論文の arXiv 投稿2016/5/25( 水 )

2016/6/12( 日)2016/6/19( 日 )

2016/6/21( 火 )

2016/6/29( 水 )

• 教科学習などと組み合わせたい• LIS など他のグループと合流したい

Page 9: Pred net使ってみた

これまでの経緯

PredNet ハッカソン(1日目)PredNet ハッカソン( 2 日目)

第1回オフ会

第 2 回オフ会

論文の arXiv 投稿2016/5/25( 水 )

2016/6/12( 日)2016/6/19( 日 )

2016/6/21( 火 )

2016/6/29( 水 ) Now!

Page 10: Pred net使ってみた

疑問・やりたいこと1. 汎化性能(学習と違うデータを入れた時の予測結果)2. 隠れ層の可視化3. 並列計算4. 異常検知5. 強化学習6. LIS と連携

ハッカソン、オフ会、 Facebook などで出たアイディア

Page 11: Pred net使ってみた

疑問・やりたいこと1. 汎化性能(学習と違うデータを入れた時の予測結果)2. 隠れ層の可視化3. 並列計算4. 異常検知5. 強化学習6. LIS と連携

ハッカソン、オフ会、 Facebook などで出たアイディア

Page 12: Pred net使ってみた

エラーユニットの可視化

エラーユニット

Page 13: Pred net使ってみた

エラーユニットの可視化• 学習データ

KITTI Vision Benchmark Suite の City に分類されたデータすべて (8477 フレーム )

• 作成• Raquel Urtasun• Toyota Technological

Institute at Chicago

Page 14: Pred net使ってみた

エラーユニットの可視化• 桑田さんの PredNet 実装を使用• ライブラリ :Chainer• 最適化アルゴリズム :Adam• 層数: 4• Loss: 予測値と次フレームとの 2 乗誤差• バックプロパゲーション: 10 ステップ• 学習回数 :140000( データセットを 16.5 周 )• 学習時間: 5 時間くらい

学習

論文合わせ

Page 15: Pred net使ってみた

エラーユニットの可視化• 紅莉栖 (http://dwango.co.jp/pi/ns/2015/0917/index2.html)

• 使用した GPU は1つのみ

ノード数 CPU GPU ディスク メモリ100 台(予定) Xeon

E5-2623 v3 ×2(4C/8T, 3GHz)

TITAN   X(Maxwell 世代3,072 CUDA コア &12GB) × 4

128GB SSD (OS 起動用 )+480GB SSD ×2

128GB(2 台は 1TB)

学習環境

Page 16: Pred net使ってみた

エラーユニットの可視化学習可視化方法

1. 学習済みのモデルで予測画像のセットを作成2. 予測画像と次フレームの画像を使い、以下の計算で誤差を計算

Page 17: Pred net使ってみた

エラーユニットの可視化

1フレーム目

2 フレーム目

Predict True

Error

Relu(True-Predict) Relu(Predict-True)

Page 18: Pred net使ってみた

エラーユニットの可視化考察・感想• エッジ検出画像に似ている• 何故か?• 予測画像はぼやけている→元画像と差分を取ると高周波成分だけが残る• エッジ以外の部分は入力をそのまま出せば正解と一致する

• よく考えれば当たり前だけど初めて見た時は驚いた•もかすると、 Predictive Coding の考え方だけでエッジに反応するニューロンが生まれる理由が説明できるかも?(今はスパースコーディングで説明されている)

Page 19: Pred net使ってみた

エラーユニットの可視化

327 フレーム目

328 フレーム目

Predict True

Error

Relu(True-Predict) Relu(Predict-True)

Page 20: Pred net使ってみた

エラーユニットの可視化考察・感想• 予測に失敗した場合、フレーム間差分をプラスとマイナスで分けたような画像• 意外性はない

• 今回の場合• 左が無いと予想していてたが存在したもの• 右が有ると予想していたが存在しなかったもの

•白い背景に黒い物体があった場合おそらく左右反転

Page 21: Pred net使ってみた

汎化性能疑問• PredNet に訓練と違う動きの動画を見せたらどうなるか?•車載カメラの動画で学習、衛星の画像を予測→無理そう•車載カメラの動画で学習、定点カメラに映る歩行者を予測→微妙なライン(できそうな気はする)• 前述のモデルを用い KITTI の Person データを予測

Page 22: Pred net使ってみた

汎化性能結果

26 27 28 29 30 31 32

※0 フレーム目から順に入力、 0~ 26 フレームは背景のみ•背景に強すぎる?•人の影も入力がそのまま出ているように見える

Page 23: Pred net使ってみた

汎化性能予測できていない?•少ないデータで学習させた時はもう少し予測できる• 動作確認用に作ったモデル• 学習データ: KITTI City の番号の若いほうから 7 つ (1477 フレーム )• 学習回数: 80000( データセット 54 周 )• 他の条件は前述のモデルと同じ

Page 24: Pred net使ってみた

汎化性能結果(少ないデータで学習したモデル)

26 27 28 29 30 31 32

※0 フレーム目から順に入力、 0~ 26 フレームは背景のみ• かなり形が崩れているが移動方向に向かってずれている。

Page 25: Pred net使ってみた

汎化性能考察・感想• なぜデータ量を増やした時にテストデータを予測できなくなるのか不明•偶然?→同じデータで再度学習させてみたが再現性がある• 学習回数?動作確認用モデル:データセット 54 周

City 全てで学習したモデル:データセット 16 周→ 56 周まで学習させたが結果は改善されない• データ量が増えて、学習量も増やした場合は上位互換になってほしいがそうはなっていない

Page 26: Pred net使ってみた

まとめ• エラーユニットの可視化• エッジ検出画像に近い• 予測に失敗した場合フレーム間差分に近い画像

• 汎化性能• 初めて見るような画像でもある程度予測できる• なぜデータ量を増やしたモデルで予測できなくなるのか不明