#目的
畳み込みニューラルネットワークの説明をされているサイトが沢山ある。
勉強になる。
説明の仕方として、CNNの層毎の役割を説明する方法がとられていることがよくある。
しかも、その説明を通常の1枚の画像(すなわち、縦aaa X 横bbbのカラー画像)で表現
しようされている。
間違いなく有用だと思うし、わかったような気になるが、
一方、少し、懐疑的な見方も並行してすべきかと思う。
問題だと思うのは、理解したがっている人の認識が、提示された表示結果から過剰に情報を
読み取ってしまうことがあるのではないか?ということ
どこまでいっても、CNNの認識を人に認識させることを、直接的に実施しようと
すると、無理が集中する気がする。
今回は、
MathWorksのdeepDreamImageとかも
という副題。
(なんか、記事が不躾な感じしますね。。。。すみません。)
# 分析結果表示の例
MathWorksのサイトで、
deepDreamImageというのを使って、
なんと、
全結合層の結果を可視化している。
以下は、"hen"を可視化した例として提示されているものである。
出典:AlexNet を使用した Deep Dream イメージ
(https://jp.mathworks.com/help/deeplearning/examples/deep-dream-images-using-alexnet.html)
## この図の解釈
この図をみての、ワタシの解釈は、以下のような感じになる。
- 【理解1】この図に何匹か(何ケースか)の'hen'が、存在し、
おそらく、CNNは、こんな感じでいくつかのパターンで、'hen'を理解しているのだろう。 - 【理解2】'hen'の場所とかは、あくまで、この分析の表示の仕方都合で、右下にいようが、左上にいようが意味はない。重なり気味のものも、何か意味があるのだろうが、人が解釈できる意味はない。
この図に対する意見
示していることがうまく理解できない以上、ちょっと、価値が怪しいと思う。
むしろ、
もっと、
バラバラで、複数の画像を提示するとか、多くのパターンで'hen'と認識されるチャンスがある
ことを示しているのであれば、場合によっては、**変動する動画(アニメ?)**で表示するとかでも
いいと思う。
1枚の画像(すなわち、縦aaa X 横bbbのカラー画像)で、表示する意味が不明確。
もしくは、
共有されたわかりやすい図示ルールが共有されるのであれば、それは、それで、情報としては
利用できる気もする。
図の雰囲気をマネしてみると
以下の図は、単に、PowerPointの3Dの図を並べただけですが、
イルカの場合、全結合は、以下のようにイルカを把握しているとかになるのでしょうか?
このような図をみて、
次のアクションを考えるのは、ちょっと、厳しい気がします。
例)ちょっと、後ろ向きが弱いか???右向きも弱そうとか。。。
(余談)月にウサギが、DeepDreamImageにhenが。。。
CNNの最後のほうにそれらしい画像がみえることに、深い意味はない感じがいつもしてしまう。
どう見えるかには、意味があると思うが、
より、それらしいことには、意味がないと思う。
それが、人の目にどうみえるかは、特に。
例えると、月にウサギがみえる話と近い気が。
引用元:https://ja.wikipedia.org/wiki/月の兎
言いたいのは、CNNの説明性とかにそのような画像を使うのは、適当じゃないような気がするということ。どちらかというと、突き放した感じ、それらしくは見えないサンプルを強調するほうが、長い目では良い気がします。
#まとめ
畳み込みニューラルネットワークの説明が、やや、うまくいっていないというか、少し、意味を付与しすぎな気がするので、それを示した。
単に、素人が、ストンと理解しようとして、理解できない不満を示しているだけであることは認識していますが。
コメントなどあれば、お願いします。
#関連(本人)
##本件と関係ある関連(本人)
畳み込みニューラルネットワーク(CNN)の説明が煽りすぎでは?(1層目ぐらいしか成功していないのでは?)
全22行のコードでGradCAM。tf_explainは、使い易いかも、お薦め!
##本件とあまり関係がない件(本人)
良書「ゼロから作るDeep Learning -- Pythonで学ぶディープラーニングの理論と実装」を読む
Grad-CAMで、湖畔と谷とマッシュドポテト、構成と質感認識、VGG16の。