TFUG#4 TensorFlowを使ったCNNの可視化手法

TFUG#4 TensorFlowを使ったCNNの可視化手法

六本木ヒルズで喋ってきました

連絡はこちらまで
y.ashi@xcompass.com

2e9a73c9fb3e3cfaeac99620fb009238?s=128

YutaAsupara

April 19, 2017
Tweet

Transcript

  1. 2017.4.19版 XCompass Intelligence  Ltd. WBA  wakate UEC  Kuri Lab. Yuta

     Ashihara TensorFlowを使ったCNNの可視化⼿手法 intelligence
  2. 1 ⽬目次 1.⾃自⼰己紹介 2.CNN可視化のアプローチ 3.まとめ

  3. 2 1.⾃自⼰己紹介 ・電気通信⼤大学 情報理理⼯工学卒業 (「⼆二次元波動⽅方程式の表⾯面波観測」を研究→ 解析学) ・電気通信⼤大学 ⼤大学院情報システム学研究科 ⾸首席 (「回転を認識識するDeep

     Learning」と 主にDeep  Learningの数理理について研究) ・株式会社クロスコンパス・インテリジェンス 研究員 電気通信⼤大学⼤大学院 博⼠士課程 複雑ネットワークの研究 全脳アーキテクチャ若若⼿手の会 社会⼈人⽀支部代表
  4. 3 1.⾃自⼰己紹介 ・趣味:⿂魚釣り,ニコニコ動画,バイク乗る ・好きなもの:数式,コンピュータ (だいたいchai◯er,  cuda,  を使う) ↓冬の普段着 ↓どアップ

  5. 4 1.⾃自⼰己紹介 コンピュータが好きな理理由: こんな僕でもヒトとして認めてくれるから

  6. 5 1.⾃自⼰己紹介 個⼈人的趣向:Deep  Learningで物を作ったりもします 例例: ImageNetが嫌い

  7. 6 1.⾃自⼰己紹介 個⼈人的趣向:Deep  Learningで物を作ったりもします 例例: ImageNetが嫌い 僕のことをATMとして⾒見見てくるから

  8. 7 2.  可視化のアプローチ ・なんとなく、CNNが何してるのか気になってくる →内部表現というよりは,⼊入⼒力力からその出⼒力力を⾏行行った 理理由、証拠のようなものが知りたい

  9. 8 2.  可視化のアプローチ ・CNNのごく普通な考え⽅方 イメージをセットして、そこから⽬目的に応じた出⼒力力を 正しい出⼒力力になるようにトレーニングする →出⼒力力までの特徴量量を⾃自動学習し、正しい(⽤用意した) 出⼒力力を出してくれる

  10. 9 2.  可視化のアプローチ ・CNNのごく最近なとらえ⽅方 だいたいうまくいく(はず)だけど、論論⽂文では、 ノイズに弱い(すぐ騙される)とか⾔言われてるらしい ex)  Adversarial  Example  の存在

  11. 10 2.  可視化のアプローチ ・CNNのごく最近なとらえ⽅方 意味不不明な画像でも、とあるカテゴリの出⼒力力確率率率が 異異常に⾼高くなってしまう現象があるらしい

  12. 11 2.  可視化のアプローチ 問題再掲 ・なんとなく、CNNが何してるのか気になってくる ⾃自分たちと違うところを⾒見見ているのだとしたら、 なんかビジネスに使いにくい・・・という気持ちもある →サービスの説明に⾮非常に曖昧な表現を使わないといけない ex)  「CNNがうまくやってくれるので・・・」

    「Deep  Learningですから・・・」
  13. 12 2.  可視化のアプローチ ・結局、CNNの中⾝身を解剖して、調べたくなる →単に解剖しても、ただの重み(⾏行行列列・数値)ゆえに理理解不不能 ・考えうるアプローチは(興味あるので)だいたい三つぐらい ①最⾼高のラベル出⼒力力を出す画像を作る(CNNのイデア的) ②中間層の中⾝身を直接⾒見見る ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る

  14. 13 2.  可視化のアプローチ ①最⾼高のラベル出⼒力力を出す画像を作る(CNNのイデア的) →あらかじめ鍛え上げたネットワークが、特定のラベルを One-‐‑‒Hotに出⼒力力するように、画像を編集していく⽅方法 MIT  CSAIL Advances  in

     Computer  Vision http://6.869.csail.mit.edu/fa15/
  15. 14 2.  可視化のアプローチ ①最⾼高のラベル出⼒力力を出す画像を作る(CNNのイデア的) なんかフラミンゴっぽい なんかペリカンっぽい 画像は作れる CNNが特定のラベルを 出⼒力力するのに必要な 情報は探ることができる

    Understanding Neural Networks Through Deep Visualization http://yosinski.com/deepvis
  16. 15 2.  可視化のアプローチ ②中間層の中⾝身を直接⾒見見る 特定のレイヤーからのUnpoolingにより、 特徴マップ(中間層)の可視化を⾏行行っていく Visualizing  and  UnderstandingConvolutional Networks

    Zeiler &  Fergus,  2013
  17. 16 2.  可視化のアプローチ ②中間層の中⾝身を直接⾒見見る

  18. 17 2.  可視化のアプローチ ②中間層の中⾝身を直接⾒見見る Visualizing  and  UnderstandingConvolutional Networks Zeiler &

     Fergus,  2013
  19. 18 2.  可視化のアプローチ ②中間層の中⾝身を直接⾒見見る なんとなく中間層には、⼊入⼒力力された画像のうち、 その画像中に認識識するべき(あくまで正解出⼒力力のため)情報を 残しているような様⼦子がうかがえる ex)  ⽝犬の画像を⼊入れた時、背景情報などがある程度度排除され ⽝犬の情報が残っているように⾒見見える

    Visualizing  and  UnderstandingConvolutional Networks Zeiler &  Fergus,  2013
  20. 19 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る →先にGuided  BackPropagation(GBP)の概要について説明 •Idea:  neurons  act  like

     detectors  of  particular  image   features •We  are  only  interested  in  what  image  features  the   neuron  detects,  not  in  what  kind  of  stuff   it  doesnʼ’t  detect •So  when  propagating  the  gradient,  we  set  all  the   negative  gradients  to  0 •We  donʼ’t  care  if  a  pixel  “suppresses”  a  neuron   somewhere  along  the  part  to  our  neuron CSC321:  Intro  to  Machine  Learning  and  Neural   Networks,  Winter  2016 Michael  Guerzhoy
  21. 20 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る →先にGuided  BackPropagation(GBP)の概要について説明 簡単に⾔言えば、必要以上の情報が残らないようにしたい ex)  普通の逆伝播では、何が何やらわかりにくい Striving

     for  Simplicity:  The  all  convolutional  net,   Springenberg,  Dosovitskiy,  et  al.,  2015 逆伝播
  22. 21 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る Striving  for  Simplicity:  The  all  convolutional

     net,   Springenberg,  Dosovitskiy,  et  al.,  2015
  23. 22 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る Guided  BackPropは、理理論論はとてもシンプル ⼀一般的な逆伝播、Deconvにおいて、⾮非正値を0とする Striving  for  Simplicity:

     The  all  convolutional  net,   Springenberg,  Dosovitskiy,  et  al.,  2015
  24. 23 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る 逆伝播による画像復復元が、良良くなった(ちゃんと輪輪郭が残る)

  25. 24 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る しかし・・・ Guided  BackPropだけでは、ラベルの意味があまり説明できず ex)  ⽝犬⾒見見ろ、猫⾒見見ろって⾔言っても、どちらの情報も残る

  26. 25 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る そんなGBPの⽅方法よりも、顕著にラベル情報から復復元する ⽅方法論論が出てくる。CAM(Class  Activation  Mapping) GAPと呼ばれる、GoogleのNINの⼿手法内で⾏行行われた、 MAPからの局所結合を出⼒力力にする考え⽅方を応⽤用

    →特徴マップをGAPすれば、特徴マップにつき1つの素⼦子が 対応する(FC層の密な結合による情報の不不透明化を回避?) Learning Deep Features for Discriminative Localization Bolei Zhou,  Aditya  Khosla,  et  al.,  2015
  27. 26 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る CAMの考え⽅方 →GAP後のマップに対し、逆伝播すれば、ラベルからの情報を 直接的に得ることができると考えられる。 Learning Deep Features

    for Discriminative Localization Bolei Zhou,  Aditya  Khosla,  et  al.,  2015
  28. 27 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る CAMは最終層の付近にGAPを挟む必要性があるが、 その必要性を排除したものがGrad-‐‑‒CAMだと考えられる 出⼒力力層から、好きな層に逆伝播できる Grad-­CAM: Visual  Explanations

     from  Deep  Networks  via  Gradient-­based  Localization Selvaraju,  Cogswell,  et  al.,  2017
  29. 28 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る さらに⾔言えば、Grad-‐‑‒CAMは教師があれば逆伝播できる (ラベルがカテゴリである必要がない) ex)  画像説明⽂文の⽣生成問題や、VQA(画像クイズ)でもOK Grad-­CAM: Visual

     Explanations  from  Deep  Networks  via  Gradient-­based  Localization Selvaraju,  Cogswell,  et  al.,  2017
  30. 29 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る Grad-‐‑‒CAM部分の、アルゴリズムは⽐比較的優しい 逆伝播して、GAPして、活性化関数に通す GAP 逆伝播 活性化

  31. 30 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る CAMのこの部分と、さほど変わらないはず Learning Deep Features for Discriminative

    Localization Bolei Zhou,  Aditya  Khosla,  et  al.,  2015
  32. 31 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る なので、実装もそこまで難しくない

  33. 32 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る なので、実装もそこまで難しくない

  34. 33 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る 結果:画像中にある、そのラベルを 出⼒力力するためによく使われている情報が抽出できる こちらの結果は https://github.com/Ankush96/grad-‐‑‒cam.tensorflow

  35. 34 2.  可視化のアプローチ ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る GBPと⽐比べると、ラベル情報が反映されることが確認できる

  36. 35 Grad-‐‑‒CAMを通じて⾒見見た世界では、 ATMとして⾒見見てるのは、僕じゃなくて窓だった 2.  可視化のアプローチ

  37. 36 2.  可視化のアプローチ まとめ ①最⾼高のラベル出⼒力力を出す画像を作る(CNNのイデア的) →鍛え上げたCNNがこのラベルを出⼒力力する時に、 ⼀一番⾒見見てる(らしい)画像を作り上げる ②中間層の中⾝身を直接⾒見見る →CNNが抽象的な部分から具体的な部分を⾒見見ているだろう という結果は観測できる

    ③逆伝播使って、CNNが使⽤用したであろう画像中の証拠を探る →これに個⼈人的には注⽬目したい 改善される⽅方法論論はいくつかあるだろうし、それをネタに 美味しい思いができるかもしれない 参考にした実装 https://github.com/Ankush96/grad-‐‑‒cam.tensorflow
  38. 37 3.  まとめ 余談、笑い話 https://neil.fraser.name/writing/tank/

  39. 38 3.  まとめ 余談、笑い話 A group of researchers trained a

    Neural Network to distinguish between scenes with and without tanks. Their Neural Net achieved 100% accuracy on their held out test set. When these spectacular results were presented at a conference, a person from the audience raised a concern about the training data they collected. After further investigation it turned out that all the images with tanks were taken on a cloudy day, and all images without tanks were taken on a sunny day. So, at that time the US Government was a proud owner of a multi-billion dollar computer that could tell you whether it was cloudy or not.
  40. 39 3. まとめ ・CNNが出⼒力力をうまく出している時、中ではどんなことが 起きているのか、可視化するアプローチについて紹介 ・コードも書いて、使ってみたGrad-‐‑‒CAMは、 CNNを使ったアーキテクチャになら⾊色々応⽤用できるように なっている ・TensorFlowを使ってみた感想としては、 cha◯nerと、さほど使⽤用感が⼤大きく変わらない

    gitの公開数とかで、便便利利さでは上なのだろうか・・・ ch◯iner使っている⾃自分としては、 なかなかにうらやm・・・いや、悔しいとこもある
  41. 40 3. まとめ ・俺の作ったモデルがなぜこんな出⼒力力をしたのだろう? ・なぜこのタスクができるのだろう? ・上記の疑問は、少しずつ晴れていくかもしれない ・結果はいいのに、汎化しない時、この⼿手法による判断も 有効かもしれない →実際に、使い始めてみています、なかなかお勧め ・みんなも、ペンタゴンのタンク発⾒見見みたいな話に

    ならないように、モデルが何をしているか、確認できると いいなと思い、この情報を共有しようと思いました