質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.11%

CNNに関する他人の"感覚"からですけれども

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 704

IS.SEKI

score 26

oookabe様の質問記事【D-CNNの画像特徴抽出に対する誤解?】
(https://teratail.com/questions/118130)の中に下記内容が書かれました:

【2】 D-CNNでは同一objectであっても、D-CNNにより抽出された「画像特徴data」はそのobjectが属するclassの他のメンバーの画像内容に左右され、一定ではない! 

【3】 D-CNNでは同一objectであっても、D-CNNにより抽出された「画像特徴data」はそのobjectが属するclassのlabel値に左右される (突飛!) 

自分も少し画像特徴抽出するような仕事を担当した事がありますが、
D-CNNによる"特徴抽出"の性格は本当に【2】と【3】に指摘された通りのもんであれば、
それこそ『自動特徴抽出』と『人工特徴抽出』との本質的な違いだと考えて宜しいでしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+3

2
私がこの命題の主張を誤解している可能性にとりあえず言及してから。

objectが例えば一枚の画像だと想定しているのなら、変わるべきではありません。
ただ今の技術で、使い方を間違えると変わりうる操作が2つあります。
DropoutとBatchNormalizationです。
Dropoutを使っていて、同じ画像の予測値が毎回変わる場合、ボルツマンマシンなどという特殊なモデルの場合を除いて、使い方が間違っています。
BatchNormalizationの場合も同様のことが言えると思います。詳細についてはこれらのキーワードで調べて見てください。
そうでない場合、DNNはただの掛け算と足し算、たまに確定的な条件分岐なので一意に決まらない理由がありません。


文の別の解釈

特徴量を畳み込みのフィルタとして想定しているのであれば教師データの全体に依存しています。
分類は区別することなので、自分だけでなく、周りのものに依存して特徴は抽出されるべきです。
これは人間も同じです。

人物を学習するのなら顔に重点を置きますし、人と動物の分類なら骨格を見ます。


3
ラベル値に意味があるのなら依存して正しいです。
例えば好感度を離散的に「好き」、「中立」、「嫌い」としていて、これを1、2、3にエンコードしているのであれば微妙に好きみたいなものをあり得るので問題ありません。

そうでないのならエンコードの仕方を間違っています。
例えば「犬」、「猫」、「うさぎ」を1、2、3にエンコードする場合です。
これだと犬とうさぎの間のものが猫になります。


「label値」というのがメタ的な意味の場合、人間の思い込みについて考える必要があります。

例えば人を認識するモデルを作ろうとして、AさんとBさんの写真を集めました。
分類のラベルとしてそれぞれ2つのバイナリのカテゴリが作れます。
でもこの2人ではない写真があったときにどちらかに勝手に分類されてはまずいと思い、CさんとDさんの写真も集め、これらを1つのバイナリカテゴリとしました。
これによって作ったモデルにEさんの写真を判定してもらいました。
意図としてはAさんでもBさんでもないので、その他のCDさんカテゴリに分類して欲しいです。
が例えばAさんだと認識しました。
思い返してみれば、AEさんは女性で、BCDさんは男性でした。
すると、なんとこのモデル、女性をAに、男性をBかCDに分類するものだったのです。

教師データの時点でモデル化する際の諸々の要素について思いを馳せなければなりません。

人間の思い込みをどうすればうまく学習させることをいつも考えらければなりません。
それがモデリングというものなのです。


これら人間と機械の差ではありません。
ロジックが正しいか正しくないかの差です。

人間には無意識な偏見、使用言語からくる束縛などがあります。
これは人間的な問題で、機械の方がずっと素直なのです。

さてそうすると最後の「本質」とは何かということですが…
人間の直感で作られたか、数値的最適化で自動的に作られたかについては、確かにある意味では「本質」ではありますが、何も言っていないようにも思います。
それがまさにそれぞれの特徴量であるからです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/23 00:25

    わかりやすい例で言い換えていただきありがとうございます。
    「うまい話」なので「希望」が生まれ商機に変わりました。

    宿命論的というよりも、うまく行った例を少し希望をもたせた形で発表されています。
    うまく行っていない例は数え切れず…
    https://www.amazon.co.jp/dp/B00UAAK07S/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
    こちらの本で松尾先生が危惧することをが少し書かれていた記憶があります。

    サンプリングバイアスがあると思われます。
    著名な研究者は天才ばかりというように、ポピュラーなモデルは性能が良い、です。

    ---

    質問への誤解があればご指摘いただければ幸いです。

    Q1について
    「label値を違えれば」というのはどのようなことでしょうか?
    例えば、同じことを意味するラベルを1から7に変更した場合、1ではなく7を発火させる必要がありますので、いろいろと異なってくるでしょう。
    もっと言えば、重み初期値を変えれば、同じラベル値の割り振りでも変わってきます。
    これはある意味、自由度が許されています。
    「ボール」を表現するのに、丸いもの(ただし速度が速い時に歪む可能性)や宙に浮いているもの(ただしたまに地面にある)など、いろいろと「局所値」を持ちます。

    結局学習とはFittingとOverFittingの競合であり、それぞれの境界線でトレードオフして損失関数の極小値を探索しています。

    Q2について
    おそらく「不変量」についての疑問だと思われますが、これは非常に難しい問題です。
    なぜなら、入力から入ってからどこかで全部の重みを0にすればどんな入力に対しても同じラベルになります。
    このようなことは可能ですが、もちろん意味はありません。

    モデルを表現するのに最低限必要な数の説明変数を抽出するのにAutoEncoderなどがあげられます。
    説明変数の数を一定以上に減らしていくと、出力の状態が縮退していきます。

    また、数値モデルは一般に連続的な変化に強く、離散的な変化に弱い傾向があります。(唐突…)

    キャンセル

  • 2018/03/24 18:53

    皆さん 議論ありがとうございます。

    mkgrei様が書かれました:
    > 同じことを意味するラベルを1から7に変更した場合、1ではなく7を発火させる必要がありますので、いろいろと異なってくるでしょう。

    やはりこれに不思議に思いますね。
    例えば医者というカテゴリに対してlabel値を1にする場合と7にする場合、
    DNNにより抽出された『特徴データ』がまったく違うものになるという意味になりますね?

    そして、単に整数の世界でもlabel値が無限にあって、DNNがそれに対するレスポンス(特徴データ)も無限にあります。
    それから、どんなlabel値を付けるかについて基本はランダム的な性格を持つため、
    結局、DNNによって抽出された医者というカテゴリの『特徴』はランダムで無限にあります。
    通常このようなデータや情報は"でたらめ"と言われて、人間にとって無意味と思われるでしょう。
    ◆ ここで注意したいのは「医者の特徴」と言っても多くの側面に対応して多くの特徴があります、もし、それぞれのlabel値がそれぞれの側面を代表する情報であれば、異なるlabel値に応じて異なる「医者の特徴」を抽出されたのは論理的に問題ないですが、実際個々のlabel値は医者のどんな側面とも関連しなくて、人の名前より無意味な数値に過ぎないため、個々のlabel値に応じて抽出された「医者の特徴データ」もまったく無意味だと思わざるを得ません。
    なので、個人的な独断と偏見かもしれませんが、もし、このように抽出されたデータが有意義に解釈できても、まれなケースか、『牽強付会』的な側面があるのではないかと思います。

    ただ、多量で全然異なる自変数を同じ関数値に変換・射影する仕組みとして、DNNが有能だと認めます。
    これ以上でもなければ、以下でもない感じかな。。。
    言い過ぎでしょうか。

    キャンセル

  • 2018/03/25 12:52

    おっしゃるような側面が強いのは否定できません。

    2つだけ考慮の候補に上がることを提示いたします。

    ---

    > 同じことを意味するラベルを1から7に変更した場合、1ではなく7を発火させる必要がありますので、いろいろと異なってくるでしょう。

    この際にネットワーク全体の重みをフレックスにする必要がありません。
    出力層だけを変更するか、一層追加してそこだけ学習させることも考えられます。

    人間でも新しい概念に出会っり、勘違いがあったと思った時に、それまでのすべてを忘却して新しく学び直すわけではありません。
    これは人間の脳を真似ることを始まりとしたニューラルネットワークでも同様です。

    ---

    今でこそ、てきとーに突っ込んでも学習できるノウハウを持っているので、何ともいい難い学習方法をしていますが。

    StackedAutoEncoderという物があって、これは段階的に次元圧縮をかけていく方法です。
    http://wazalabo.com/chainer-stacked-auto-encoder.html
    http://ufldl.stanford.edu/wiki/index.php/Stacked_Autoencoders

    ---

    実用上はただのうまいフィッティングの道具だという認識でほとんど正しいと思われます。

    興味があって、それ以上に理解したいと思うのであれば、
    理論上では、ニューラルネットワークとその学習法の2つの側面に目を向ける必要があります。

    人間もいろいろ個性が異なるようにニューラルネットワークのモデルもみんな異なります。
    それは学習・教育に依存するものと思われます。
    その中で、「本質をついた」モデルを見極めることが使用者に求められる素質になります。

    キャンセル

+2

横から失礼します。
自分出した掲示に関わりがあるようで、一つの問題を提示し、皆さんのご意見をお伺いしたいです。

何がobjectの特徴であるかは確かにテーマや見る角度によって違ってくると思います。
ただ、どの見る角度であれ、その特徴はそのもの固有的であるかどうかに関する判断基準は唯一だと思います。

例えば、単語の文字列(string)から色々算法でハッシュコードを生成できます。
そして、時々内包的にも外延的にも共通性がない単語に対して同じハッシュコードが生成されます。
この場合、同じハッシュコードを持つ単語に必ず『本質的な共通性』を持っているとは言えるのでしょうか。
私は"言えない"と感じますが、皆さんはどう思われるのでしょうか。

それに、人間に意味のある『本質的な共通性』ではない『本質的な共通性』もあれば、もはや人間にとって意味がないではないでしょうか。
これは自分がDeep CNNによる「自動抽出」された「画像の特徴データ」に関する認識です。

★ 要は"Deep CNNがobjectの特徴を自動的に抽出してくれる"というような表現や言い方に非常に欺瞞性を感じます。何故ならば、Deep CNNに抽出された「objectの特徴」は人間にとってどころか、同じ類の他のDeep CNNにとっても全然意味のないデータです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/23 12:40

    あまりこのような場所で"論破"を目的とするコメントがふさわしくないように感じましたが、面白い話なのでコメントいたします。
    以下は私の考えであり、別に正しさなどありませんのでご容赦ください。

    ---

    「同じハッシュコードを持つ単語に必ず『本質的な共通性』を持っている」ものの、それが人間が欲しい共通性かどうかは別の次元の話になります。
    ここで、仮に重要な「仮説」だとした後に、「反例」を想定して、「棄却」しております。
    このような行為を、「当たり前」と思われるようなことに対して人間は無意識に行います。
    これが無意識の偏見です。

    ハッシュを乱雑化するためによく使用するため、そんな破天荒な、と思われるかもしれませんが、
    もっと簡単なfizzbuzzの話を考えてみてください。
    3の倍数か5の倍数かがこの問題で「本質」ですが、これはハッシュ変換のやっていることと変わりございません。

    「特徴の自動抽出」は言語としては間違いはなく、受け取る側の誤解によって「欺瞞」の感覚が生まれています。
    そのような誤解を促す意図で使われる場面もあるのでなんともいえないのですが。
    それ以外に適切な表現があるわけでもないので…

    そもそも、この手の話を理解するのに、因果関係と相関関係を意識する必要があります。
    例えば、10の倍数は最後の桁が0である、というのが「本質」かどうかの議論などです。
    数字の場合当たり前だと思いますが、
    それなら「wrong0」は10の倍数になります。

    「他のネットワークにとっても全然意味のない」は少し議論の余地があります。
    現に転移学習はうまくいっておりますゆえ。

    キャンセル

  • 2018/03/23 14:11 編集

    mkgreiさん
    いつも見識のあるお話を聞かせて有難うございます。
    問題を提起した背景として、自分がデータマイニングのような事に興味を持っております。
    二分木や Bayesian networkなど方法より『自動的に抽出された』objectの特徴や規則はほとんど人間が理解できる意味のものです(場合によって人工的に抽出される物の特徴や規則とまったく同じです)。

    DNNの噂によりますと、強力な「自動的に特徴抽出」能力を持っているそうで、今勉強しているわけですが、
    どうも自分が認識している「物の特徴」という概念から随分かけ離れているように感じますね。
    「移転学習」の話はございましたが、それにしても、少しでも構造的に異なれば、同じ類のDNNでも、他のDNNから生成された「特徴データ」を利用できないでしょ?★

    なので、物の特徴を人間と無関係に広い意味上で定義すれば、DNNに抽出された『特徴データ』も"特徴"ですが、そのような"特徴"はあんまりにも偶然的で、狭い環境(特定のDNN)にしか意味がないという感覚は払拭できていません。 
    果たして、DNNも、これまでのデータマイニング諸道具のように、抽出された『特徴データ』は "人間にとっても"意味があり、まったく違うシステムにそのまま利用されることは可能でしょうか。
    例えば、CNNの最終出力や各poolに溜まってるデータはそういう性格を持たせるのは原理的に不可能でしょ?

    ★ 長い議論だったんですが、自分が知りたいのはこの一点に過ぎません。

    またどうぞ宜しくお願いします。

    キャンセル

  • 2018/03/23 15:36

    二分木などが(人間に)理解できるのは構造が単純だからです。
    今すぐには「理解」できなくても精度が良いものがほしい時に(狭義の)DNNを求めています。

    多くの場合、人間には直感的な特徴量をすぐには作れません。
    そのようなケースにおいて、安価で高速に特徴量を作るDNNに高い期待が寄せられています。
    ここにも感覚のサンプリングバイアスがあります。

    本来重要でないはずの情報を注視してしまうモデルを作ると、「リーク」が生じていると疑います。
    https://machinelearningmastery.com/data-leakage-machine-learning/

    ---

    Haar-like特徴量
    http://kabaoh.hatenablog.com/entry/2016/08/18/112647
    自動抽出した特徴量(フィルタ適用後)
    https://recruit.gmo.jp/engineer/jisedai/blog/deep-learning-keras/

    ---

    転移学習
    https://qiita.com/icoxfog417/items/48cbf087dd22f1f8c6f4
    アピーリングなブログ
    http://d.hatena.ne.jp/shi3z/20160624/1466717545
    ちょっと話を盛ったもの
    https://www.rsipvision.com/exploring-deep-learning/

    ---

    人間に意味のある特徴量の抽出
    https://www.nature.com/articles/ncomms13890

    ---

    DNNの話をする時に、ネットワーク自体を考えているのか、学習させる手法、学習させるデータまで考えているのか、それが結構重要です。
    喩えでいうならば、ネットワーク自体は言語で言う「文字」に過ぎず、それによって膨大な「概念」を「表現」できることが示されています。
    ただ、使う人間によって、”支離滅裂”な文字列を吐き出すこともあれば、”価値”のある文章になることもありえます。

    ○と☓しかないのであれば、表現できるものが少なくなる一方、理解できないパターンも減ります。
    自由度が増せば表現力が増える一方、理解できないパターンも増えます。

    DNNでも線形モデルを作れます。
    さすれば、十分理解できるものになります。
    「そのようなトリビアルなことは理解できるから用はない、DNNとは直感的にはすぐに理解できないものだけを指している」のであれば、DNNは「意味がない特徴量しか抽出できない」と感じてしかるべきです。

    本来DNNには複雑性に関する境界はなく、そのような「分類」をもってDNNを考えることには非常に人間的な誤謬があるように思うのです。

    キャンセル

  • 2018/03/23 22:20 編集

    皆さん 議論ありがとうございます。

    mkgrei様が書かれました:
    > 同じことを意味するラベルを1から7に変更した場合、1ではなく7を発火させる必要がありますので、いろいろと異なってくるでしょう。

    やはりこれに不思議に思いますね。
    例えば医者というカテゴリに対してlabel値を1にする場合と7にする場合、
    DNNにより抽出された『特徴データ』がまったく違うものになるという意味になりますね?

    そして、単に整数の世界でもlabel値が無限にあって、DNNがそれに対するレスポンス(特徴データ)も無限にあります。
    それから、どんなlabel値を付けるかについて基本はランダム的な性格を持つため、
    結局、DNNによって抽出された医者というカテゴリの『特徴』はランダムで無限にあります。
    通常このようなデータや情報は"でたらめ"と言われて、人間にとって無意味と思われるでしょう。
    ◆ ここで注意したいのは「医者の特徴」と言っても多くの側面に対応して多くの特徴があります、もし、それぞれのlabel値がそれぞれの側面を代表する情報であれば、異なるlabel値に応じて異なる「医者の特徴」を抽出されたのは論理的に問題ないですが、実際個々のlabel値は医者のどんな側面とも関連しなくて、人の名前より無意味な数値に過ぎないため、個々のlabel値に応じて抽出された「医者の特徴データ」もまったく無意味だと思わざるを得ません。
    なので、個人的な独断と偏見かもしれませんが、もし、このように抽出されたデータが有意義に解釈できても、まれなケースか、『牽強付会』的な側面があるのではないかと思います。

    ただ、多量で全然異なる自変数を同じ関数値に変換・射影する仕組みとして、DNNが有能だと認めます。
    これ以上でもなければ、以下でもない感じかな。。。
    言い過ぎでしょうか。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.11%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る