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

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

ただいまの
回答率

90.34%

CNN+DNN分類策略について

受付中

回答 4

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 1,271

oookabe

score 52

例えば、
{キャベツ、トマト、牛蒡、胡瓜、西瓜、ネギ、玉ネギ、、、}を野菜とし
{メロン、林檎、砂糖キビ、ナツメ、キウイフルーツ }を果物とします。

このような分類は視覚上全然類似性のないobjectを人間の概念による強引に分類されちゃうのです。
CNN+DNNなら、勿論このような強引さに対応できるのですが、分類精度と安定性を考えたら、やはり視覚的に近いobjectを同じclassにするほうが良いではと思い、

例えば、以下のようなやり方なら、理論上、分類の精度や安定度またはマシン訓練の難易度が改善できるかどうか、お尋ねしたいのです。

1.まずは各object毎に識別を行います。胡瓜なら胡瓜、トマトならトマト、、、きちんと識別してから、

2.人間のロジック トマト➡野菜、キウイフルーツ➡果物、、、のように既定ロジックで再度分類します。

1では誤認識が発生しにくくなり、2はNNとは関係なく、単にindexingするので、誤差が発生しない、
という都合の良いやりかたではと思いますが、理論上の支持を得られるかどうか分かりません。

★若しかして、もっとまずくなります?

どんなご意見やアイディアでも宜しいですので、

どうぞご発言、ご教授ください。

【CONCLUSION】

このDNN学習に関する議論を通じて、非常に重要な問題に気付きました。 

自分の中に『意味のあるDNN学習』と『意味のないDNN学習』という概念が生まれました。 

即ち,DNNの利用形態によく吟味しなければなりません。 

例えば、たくさんの痴漢の写真と非痴漢の写真をCNN・DNNに学習させても「現実的な意味を持たない」という事です。
何故ならば、訓練に使われていない人の写真をテストする時、その推定結果は何であれ、テストされた人が本当に痴漢であるかどうかは判断できないのです。 

ところが、たくさんの美人の写真とブスの写真をCNN・DNNに学習させてから、
学習写真にない新しい写真をテストする時に、CNN・DNNの判定結果(美人か、ブスか)はけっこう信用度高いと思います。 

なので、野菜・果物の分類問題にしても、奇数・偶数の問題にしても、
やはり、先にビジュアル特徴によってそのobjectの正体を断定してから、
ビジュアル以外のロジックで分類するのは論理的に妥当だと思います。 

【論理的に妥当でない分類形態にする場合、かえってDNNの"訓練"精度が高くなるかも知れませんが、意義が全然違います】

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 4

+6

mnistで偶奇性のテストをしてみてはいかがですか。

自明ではないので、やってみるのが一番だと思います。


一気にやると、学習が難しくなります。
そのかわりに、外し方を少し緩和してくれるかもしれません。

つまり3を5と間違えてもいいけど、3を2と間違えるのはまずいということです。


テスト:(修正後:StratifiedKFoldのランダムシードを固定しました)

Input
-> Conv2D(32, 3, relu)
-> Conv2D(64, 3, relu)
-> MaxPooling2D(2)
-> Dropout(0.25)
-> Flatten
-> Dense(128, relu)
-> Dropout(0.5)
-> Dense(10, softmax)


のような単純なネットワークがベースです。

MNISTのTrain(60000個)をStratifiedFold(10)でわけて、Test(10000個)でスコアを出しています。

数字を最初に学習させてからルールベースで偶奇性を判定すると、
数字:99.094%±0.060
偶奇:99.539%±0.049
の精度です。

これに対して、偶奇性を一発で学習させることにして、最後のところを
-> Dense(10, softmax)
から

-> Dense(10, relu)
-> Dense(2, softmax)


にすると、
偶奇:99.419%±0.110
となります。


ちなみに、出力を2つ設けて、数字と偶奇性を同時に学習させると、
数字:99.145%±0.031
偶奇:99.582%±0.024
(ルールベース:99.539%±0.049)
になります。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/05/01 13:49 編集

    mkgreiさん ありがとうございます。
    確かに、関連性に関して簡単の場合、人間の常識で判断できるが、「複雑な場合」、とりあえずDNNでやって(関連性のあるように)、未知の関連性を発見してくれるかもしれませんね。
    例えば、某長いDNA列のパターンと某病気の間の関連性とか。

    数値1,2,3...のビジュアルな特徴が奇遇性とは『原理的』に関係ないのは事前にはっきり分かっているから、話は別にしても、世の中に未知の、予め断定できない関連性がたくさん存在します。data mining というのもそのためだと思います。

    <<人の顔付と痴漢の間、実は何かの法則があるかもしれません。>>
    怖い話ですけれども、これは成立かも知れません。
    該当とされる場合、逮捕されてもしようがない(笑)

    キャンセル

  • 2018/05/01 18:09

    学習と過学習の境界を引くのは難しい問題です。
    もちろんある数字かどうかも大事ですが、その数字が偶数か奇数かも正しい情報です。
    この情報を入れてモデルを作ることで精度が向上することは1つの仮説として破棄できないものだと考えています。
    これは必ずしも画像の特徴として現れなくても、数学的にペナルティ項として現れます。

    また、例えばですが、偶数が多いとわかっていればどうせ間違えるのなら9よりも4の方が当たる確率が高い、という作戦も人ならやるわけです。
    原理的に正しいことだけを考えることが必ずしもいつも必要とされているわけではないことを申し上げています。

    原理主義は学術的にまたは複雑な環境下に置かれて失敗できないモデルを作る際には重要になることは間違いありません。

    ---

    ある顔の人が痴漢をする傾向があることと、必ず痴漢することは言うまでもなく異なります。

    機械学習のモデルは補助的にはとても有益ですが、主なる意思決定を行わせるのであればミスっても良いようなターゲットに用いるべきです。
    少なくとも今のところ、ご期待に添えるような性能は持ち合わせておりません。

    キャンセル

  • 2018/05/01 22:47

    mkgrei さん ありがとうございます。
    とても勉強になりました!

    キャンセル

+3

二値分類よりも多値分類のほうが複雑なので、想定する方法のほうがうまくいかない可能性が高いように思えます。
途中経過の多値分類結果の精度にこだわらない(つまり、リンゴをミカンに間違えても同じ果物なので問題ないとする)のであれば、同じくらいの精度になるかもしれません。ただ、途中経過に誤りがある状況で最終的な結果が正しいものになっても偶然にしか見えないので、その処理結果が正しいとはいいにくいように思えます。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/04/29 20:47

    でも、mkgreiさんの実験結果を拝見したいですね。

    キャンセル

  • 2018/04/29 22:27

    mkgreiさんの実験結果も当然の部分があって、数字は「文字」としては意味がありますが、偶数・奇数は数が有している属性であって文字そのものが持つ属性ではありません。よって、文字そのものから偶数・奇数と識別するよりも数字を識別してから偶数・奇数を判定するほうが合理的であると推測されます。

    なお、CNNであっても画像以外の属性を取り扱うことは公開されている事例がないだけで不可能なものではありません。さすがに、画像と属性情報(草・樹木、食する部位 など)を交えて畳み込みなどをするのはやりすぎのように思いますが、CNNなどを通じて取り出した特徴量と属性情報を加えた隠れ層3層くらいのモデルとするとほど良いかもしれません。(まぁ、モデルの構造が複雑なので、それ以外にいい方法が考えられない限り、私は採用しないと思います)

    キャンセル

  • 2018/04/30 23:10 編集

    >画像と属性情報(草・樹木、食する部位 など)を交えて畳み込みなどをするのはやりすぎのように思いますが、

    CNNの基本原理として、強引に数値合わせする(これで好まれる既定の射影関係を成立させる)のですから、「やりすぎ」ではなく、より複雑な数値合わせの可能性が提供されるかもしれません。

    それから、CNNは「視覚的な特徴」を抽出すると言っても、人間が言う「視覚的な特徴」とは基本は全然違い、単に強引に数値合わせするための副産物(これに対して人間が勘違い)に過ぎず、それ以上の意味はないと思います。
    なので、理論上では局所関連性のある情報ならCNNの中に交えても宜しいかと思います。

    キャンセル

+2

私はこういう問題は安直に考えるので、「両方使えるなら、両方とも教師データに入れたら良いんじゃ?」と思ってしまいます。出力層の構造が面倒臭そうですが(うまく構造を分けて、損失関数と学習率をそれぞれ設定しないとできなさそう)、やれば「objectごと」「一気にぜんぶ」のいいとこ取りに・・・なるかもしれませんよ。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+1

【CONCLUSION】参考させていただきます。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

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