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