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

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

ただいまの
回答率

90.53%

  • 機械学習

    678questions

    機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

  • TensorFlow

    664questions

  • 深層学習

    145questions

CNN+DNN分類策略について

受付中

回答 4

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 432

oookabe

score 44

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

このような分類は視覚上全然類似性のない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/04/29 13:03 編集

    >mnistで偶奇性のテストをしてみてはいかがですか。
    素晴らしいアイディアですね。

    キャンセル

  • 2018/04/29 14:08

    同じ構造のネットワークで試しにやってみたところ、先に数字を学習してから、ルールベースで偶奇を分けた方が精度は良かったです。
    あとで、平均とか分散をのせます。

    恐らくは偶奇だけでのラベルで分類した場合、どの数字かという情報が利用できていないせいだと思います。
    工夫の余地はあると思います。

    キャンセル

  • 2018/04/29 16:45

    mkgreiさん
    いつもお世話になっております。
    確かに2分類の場合、ランダム的にでも半分正しいですね (笑)。

    さて、MNISTの奇偶性判定に関する
    ルールベースを利用する場合と、直に2値分類する場合のそれぞれの正確率のような統計数値を
    拝見させていただきますか。

    キャンセル

  • 2018/04/30 01:03 編集

    あ、結果が出ましたね!
    mkgreiさん お疲れ様です。
    この結果を踏まえて、個人的な感覚として、各objectの個々instance画像の変動性が大きい場合(Eg., 手書き文字のような場合)、多分類器の精度維持が益々難しく、2-step分類の第1stepの精度が悪くて、総体分類精度が一発分類より低くなる可能性があります。
    何故ならば、1-step分類=2値分類の場合、そもそも混沌状態の度合が高き、objectの個々instance画像が変動性の大きくなっても、それほど強い影響を受けないのです。
    しかし、もし各objectのinstanceがしっかりしていて、それに分類属性と視覚的な特徴とは関係ない場合、2-step分類のほうは精度が高いはずです。

    キャンセル

  • 2018/04/30 11:46

    混沌云々以外に、学習に使っている情報量に違いがあることも問題だと思います。
    偶奇性しか学習させない場合、数字ごとの情報は無視されることになります。
    学習に生かせるかどうかは別にして、使用できる情報量に違いがあるのであれば、そのことが原因で差がつくことが考えられます。

    キャンセル

  • 2018/04/30 23:16

    質問エリアに勝手に【CONCLUSION】を加えたのですが、その内容に関して また皆様のご意見をお伺いしたいのです。。。お願いできるのでしょうか。

    キャンセル

  • 2018/05/01 07:40

    偶奇性を入れることでペナルティ項としての役割を果たすますし、偶奇は数字の形に影響していないと思っていたものが、実は何かの法則があるかもしれません。top-kスコアがあるように、偶奇だけ知りたい時に数字を外しても偶奇が当たるようなバイアスがかかっているのかもしれません。
    少なくとも、上記のテストで偶奇性も入れた学習によって、数字自体の判定精度も上がっています。

    モデルを作るということは、あることについてよく知ることにもつながっており、先入観を排除することもまた大事だと思います。

    問題はやったことに対して論理的な仮説を作ってやれるかどうかだと思います。

    原理主義でも良いのですが、現にアウトオブボックスのスコアが上がっています。
    後は泥臭くてもうまくスコアを上げれたモデルを使うのか、スコアが少し低くても原理的に納得感のあるモデルを使うかの問題です。

    ---

    いずれにしろ、自分でやってみないと想像ではしにくいことだと思います。
    偶奇を判定する出力部の置き場所によって全体的に精度が変わります。
    試している限り、数字を判定するsoftmaxの後に入れたもののスコアが暫定一位です。

    キャンセル

  • 2018/05/01 11:41

    貴重なコメント有難うございます。
    <<偶奇は数字の形に影響していないと思っていたものが、実は何かの法則があるかもしれません。>>
                     =
    <<人の顔付と痴漢の間、実は何かの法則があるかもしれません。>>
    まあ、万物関連性あるという事でしょうが。
    でも、現実に必然でないか、弱い関連性に関して、人間は信用しないのは普通でしょう。

    キャンセル

  • 2018/05/01 13:27

    それなりの納得感とCVスコアさえあれば、私は特に排斥する主義ではありません。

    結局人ではすぐに作れないモデルを作ることが目的なので。

    キャンセル

  • 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 13:02 編集

    横から失礼します。
    >二値分類よりも多値分類のほうが複雑なので
    これは決定的かもしれません!
    ★ でも、二値分類の場合、特徴が全然違うobject同士を人間の概念によって、同じCLASSにラベリングされたり、逆に視覚的に似ている同士を異なるCLASSに分類しなければならないと言う事は、分類精度や安定性が随分下がるのではと想像しますが、、、?

    キャンセル

  • 2018/04/29 16:49

    ニューラルネットおよびその発展形も万能なものではなく、(1)正しい問いを設定すること、(2)問いに適合した正しいデータを収集すること、が満たされていなければ、正しい答えを導くモデルは学習できないと思っています。
    先の野菜と果物の例示の場合、視覚的に類似しているものは同じ仲間という発想は、分類学的アプローチとして正しいのですが、分類学において野菜・果物というクラス分けは存在しないため、視覚的情報からこのふたつに分類するという問いそのものがあまり適切とは言えないと考えます。実は、分類学的にいうと、視覚的類似性→名称→共通する属性という感じで整理され、ヒトはこの属性(草か樹木か、食する部位、単年か多年か、など)をもとに野菜と果物を識別しているので、視覚的情報から名前を識別し、名前から果物と野菜に識別するというモデルのほうが高い精度となることが期待できます。

    一方、乗用車の見た目からスポーツカーとファミリーカーを識別するモデルの場合、そもそも、双方のクルマのコンセプトの相違が見た目に現れているはず(少なくとも各会社が考えるスポーツカー・ファミリーカーとは何か)なので、視覚的情報から二値分類の問いを設定することはそれほどおかしなものではないかと思います。

    結局のところ、手法の問題というよりも、問いの正しさと学習用に収取したデータと問いとの整合性のほうが重要だというほうが真実に近いような気がします。

    キャンセル

  • 2018/04/29 20:43 編集

    CNNは画像的な特徴しか頼りがないで分類するのに対して、
    人間は他の理由で物を分類する場合は多い。

    ---------
    論理的にきれいで、問題の本質につくコメントは貴重ですね。
    R.Shigemori さん ほんとうに有難うございます!

    キャンセル

  • 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.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    ピクセルごとの画像分類 (CNN)

    私は現在、大学で Convolutional Neuron Network について勉強しています。本回はピクセルごとの画像分類 FCN に関して質問があり投稿させていただきました

  • 受付中

    DeepLearning CNN 画像のサイズについて

    CNNで画像分類をやろうと考えています。 現在、画像を収集している段階なのですが、画像のサイズが様々あり、リサイズする必要があります。 そこでなのですが、学習に都合の良い画

  • 受付中

    CNNに関する2つの質問

    初めまして 深層学習関連の質問掲示板があるのは以前知りませんでした。 自分は画像処理の経験少々あって、CNNは初めてです。 これまで画像objectを特定するために、人工的特徴

  • 解決済

    kerasでのcnnの実行時のエラー

    現在、以下の環境でkerasを動かすことを考えております。 Ubuntu16.04 GPU GeForce 1070Ti cuda 9.0 cudnn v7.1.

  • 解決済

    一つのDNN出力実例を考え、質問もさせていただきます

    皆さんお元気ですか この間<<DNNをon line訓練したい場合の訓練データのunbalance問題>>を題した質問に https://teratail.com/questi

  • 解決済

    D-CNNの画像特徴抽出に対する誤解?

     背景 最近この掲示板で皆さんにお伺いしながら、D-CNNの原理を初歩的に勉強した結果として、 次のような感覚を持ちました。 【1】  D-CNNでは 米、車、海藻、虎 、、、

  • 受付中

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

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

  • 受付中

    CNNの各層のneuron数(ノード数)と層数と訓練画像の関係

    今晩は DNNをある程度知りたいため、最近時間がある時に懸命に勉強しましたが、 やはり、設計の基本はまだ分かっていない感じです。 まず現在自分の認識が正しいかどうか確認した

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

  • 機械学習

    678questions

    機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

  • TensorFlow

    664questions

  • 深層学習

    145questions