Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Pred net使ってみた

1,696 views

Published on

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

Published in: Science
  • Be the first to comment

Pred net使ってみた

  1. 1. Deep Predictive Coding Networks (PredNet)を使ってみた 【第2回】全脳アーキテクチャ研究会オフ会
  2. 2. 目次 • 自己紹介 • PredNetについて • 今回やってきたこと • エラーユニットの可視化 • 汎化性能
  3. 3. 自己紹介 • 名前:落合幸治 • 大学時代: • 動画・画像処理の研究 • 職業: • 制御エンジニア • 浄水プラントの制御ソフト開発、データ解析 • 技術分野 • MATLAB、Python • 時系列解析、現代制御、画像処理
  4. 4. これまでの経緯 PredNetハッカソン(1日目) PredNetハッカソン(2日目) 第1回オフ会 第2回オフ会 論文のarXiv投稿2016/5/25(水) 2016/6/12(日) 2016/6/19(日) 2016/6/21(火) 2016/6/29(水)
  5. 5. これまでの経緯 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(ハーバード大学の計算論的生物学者)
  6. 6. これまでの経緯 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週間後に成果を持ち寄ることにしよう
  7. 7. これまでの経緯 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
  8. 8. これまでの経緯 PredNetハッカソン(1日目) PredNetハッカソン(2日目) 第1回オフ会 第2回オフ会 論文のarXiv投稿2016/5/25(水) 2016/6/12(日) 2016/6/19(日) 2016/6/21(火) 2016/6/29(水) • 教科学習などと組み合わせたい • LISなど他のグループと合流したい
  9. 9. これまでの経緯 PredNetハッカソン(1日目) PredNetハッカソン(2日目) 第1回オフ会 第2回オフ会 論文のarXiv投稿2016/5/25(水) 2016/6/12(日) 2016/6/19(日) 2016/6/21(火) 2016/6/29(水) Now!
  10. 10. 疑問・やりたいこと 1. 汎化性能(学習と違うデータを入れた時の予測結果) 2. 隠れ層の可視化 3. 並列計算 4. 異常検知 5. 強化学習 6. LISと連携 ハッカソン、オフ会、Facebookなどで出たアイディア
  11. 11. 疑問・やりたいこと 1. 汎化性能(学習と違うデータを入れた時の予測結果) 2. 隠れ層の可視化 3. 並列計算 4. 異常検知 5. 強化学習 6. LISと連携 ハッカソン、オフ会、Facebookなどで出たアイディア
  12. 12. エラーユニットの可視化 エラーユニット
  13. 13. エラーユニットの可視化 • 学習データ KITTI Vision Benchmark SuiteのCityに分類されたデータすべて(8477フレーム) • 作成 • Raquel Urtasun • Toyota Technological Institute at Chicago
  14. 14. エラーユニットの可視化 • 桑田さんのPredNet実装を使用 • ライブラリ:Chainer • 最適化アルゴリズム:Adam • 層数:4 • Loss:予測値と次フレームとの2乗誤差 • バックプロパゲーション:10ステップ • 学習回数:140000(データセットを16.5周) • 学習時間:5時間くらい 学習 論文合わせ
  15. 15. エラーユニットの可視化 • 紅莉栖(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) 学習環境
  16. 16. エラーユニットの可視化 学習可視化方法 1. 学習済みのモデルで予測画像のセットを作成 2. 予測画像と次フレームの画像を使い、以下の計算で誤差を計算
  17. 17. エラーユニットの可視化 1フレーム目 2フレーム目 Predict True Error Relu(True-Predict) Relu(Predict-True)
  18. 18. エラーユニットの可視化 考察・感想 • エッジ検出画像に似ている • 何故か? • 予測画像はぼやけている →元画像と差分を取ると高周波成分だけが残る • エッジ以外の部分は入力をそのまま出せば正解と一致する • よく考えれば当たり前だけど初めて見た時は驚いた • もかすると、Predictive Codingの考え方だけでエッジに反応する ニューロンが生まれる理由が説明できるかも? (今はスパースコーディングで説明されている)
  19. 19. エラーユニットの可視化 327フレーム目 328フレーム目 Predict True Error Relu(True-Predict) Relu(Predict-True)
  20. 20. エラーユニットの可視化 考察・感想 • 予測に失敗した場合、フレーム間差分をプラスとマイナスで分けた ような画像 • 意外性はない • 今回の場合 • 左が無いと予想していてたが存在したもの • 右が有ると予想していたが存在しなかったもの • 白い背景に黒い物体があった場合おそらく左右反転
  21. 21. 汎化性能 疑問 • PredNetに訓練と違う動きの動画を見せたらどうなるか? • 車載カメラの動画で学習、衛星の画像を予測 →無理そう • 車載カメラの動画で学習、定点カメラに映る歩行者を予測 →微妙なライン(できそうな気はする) • 前述のモデルを用いKITTIのPersonデータを予測
  22. 22. 汎化性能 結果 26 27 28 29 30 31 32 ※0フレーム目から順に入力、0~26フレームは背景のみ • 背景に強すぎる? • 人の影も入力がそのまま出ているように見える
  23. 23. 汎化性能 予測できていない? • 少ないデータで学習させた時はもう少し予測できる • 動作確認用に作ったモデル • 学習データ:KITTI Cityの番号の若いほうから7つ(1477フレーム) • 学習回数:80000(データセット54周) • 他の条件は前述のモデルと同じ
  24. 24. 汎化性能 結果(少ないデータで学習したモデル) 26 27 28 29 30 31 32 ※0フレーム目から順に入力、0~26フレームは背景のみ • かなり形が崩れているが移動方向に向かってずれている。
  25. 25. 汎化性能 考察・感想 • なぜデータ量を増やした時にテストデータを予測できなくなるの か不明 • 偶然? →同じデータで再度学習させてみたが再現性がある • 学習回数? 動作確認用モデル:データセット54周 City全てで学習したモデル:データセット16周 →56周まで学習させたが結果は改善されない • データ量が増えて、学習量も増やした場合は上位互換になって ほしいがそうはなっていない
  26. 26. まとめ • エラーユニットの可視化 • エッジ検出画像に近い • 予測に失敗した場合フレーム間差分に近い画像 • 汎化性能 • 初めて見るような画像でもある程度予測できる • なぜデータ量を増やしたモデルで予測できなくなるのか不明

×