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

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

新規登録して質問してみよう
ただいま回答率
85.50%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

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

Q&A

4回答

407閲覧

CNN+DNN分類策略について

oookabe

総合スコア126

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

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

2グッド

3クリップ

投稿2018/04/28 12:18

編集2022/01/12 10:55

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

このような分類は視覚上全然類似性のない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の"訓練"精度が高くなるかも知れませんが、意義が全然違います】

leilei, IS.SEKI👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

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/28 12:40

編集2018/04/30 07:16
mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

leilei

2018/04/29 04:14 編集

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

2018/04/29 05:08

同じ構造のネットワークで試しにやってみたところ、先に数字を学習してから、ルールベースで偶奇を分けた方が精度は良かったです。 あとで、平均とか分散をのせます。 恐らくは偶奇だけでのラベルで分類した場合、どの数字かという情報が利用できていないせいだと思います。 工夫の余地はあると思います。
oookabe

2018/04/29 07:45

mkgreiさん いつもお世話になっております。 確かに2分類の場合、ランダム的にでも半分正しいですね (笑)。 さて、MNISTの奇偶性判定に関する ルールベースを利用する場合と、直に2値分類する場合のそれぞれの正確率のような統計数値を 拝見させていただきますか。
oookabe

2018/04/29 16:08 編集

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

2018/04/30 02:46

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

2018/04/30 14:16

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

2018/04/30 22:40

偶奇性を入れることでペナルティ項としての役割を果たすますし、偶奇は数字の形に影響していないと思っていたものが、実は何かの法則があるかもしれません。top-kスコアがあるように、偶奇だけ知りたい時に数字を外しても偶奇が当たるようなバイアスがかかっているのかもしれません。 少なくとも、上記のテストで偶奇性も入れた学習によって、数字自体の判定精度も上がっています。 モデルを作るということは、あることについてよく知ることにもつながっており、先入観を排除することもまた大事だと思います。 問題はやったことに対して論理的な仮説を作ってやれるかどうかだと思います。 原理主義でも良いのですが、現にアウトオブボックスのスコアが上がっています。 後は泥臭くてもうまくスコアを上げれたモデルを使うのか、スコアが少し低くても原理的に納得感のあるモデルを使うかの問題です。 --- いずれにしろ、自分でやってみないと想像ではしにくいことだと思います。 偶奇を判定する出力部の置き場所によって全体的に精度が変わります。 試している限り、数字を判定するsoftmaxの後に入れたもののスコアが暫定一位です。
leilei

2018/05/01 02:41

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

2018/05/01 04:27

それなりの納得感とCVスコアさえあれば、私は特に排斥する主義ではありません。 結局人ではすぐに作れないモデルを作ることが目的なので。
oookabe

2018/05/01 05:01 編集

mkgreiさん ありがとうございます。 確かに、関連性に関して簡単の場合、人間の常識で判断できるが、「複雑な場合」、とりあえずDNNでやって(関連性のあるように)、未知の関連性を発見してくれるかもしれませんね。 例えば、某長いDNA列のパターンと某病気の間の関連性とか。 数値1,2,3...のビジュアルな特徴が奇遇性とは『原理的』に関係ないのは事前にはっきり分かっているから、話は別にしても、世の中に未知の、予め断定できない関連性がたくさん存在します。data mining というのもそのためだと思います。 <<人の顔付と痴漢の間、実は何かの法則があるかもしれません。>> 怖い話ですけれども、これは成立かも知れません。 該当とされる場合、逮捕されてもしようがない(笑)
mkgrei

2018/05/01 09:09

学習と過学習の境界を引くのは難しい問題です。 もちろんある数字かどうかも大事ですが、その数字が偶数か奇数かも正しい情報です。 この情報を入れてモデルを作ることで精度が向上することは1つの仮説として破棄できないものだと考えています。 これは必ずしも画像の特徴として現れなくても、数学的にペナルティ項として現れます。 また、例えばですが、偶数が多いとわかっていればどうせ間違えるのなら9よりも4の方が当たる確率が高い、という作戦も人ならやるわけです。 原理的に正しいことだけを考えることが必ずしもいつも必要とされているわけではないことを申し上げています。 原理主義は学術的にまたは複雑な環境下に置かれて失敗できないモデルを作る際には重要になることは間違いありません。 --- ある顔の人が痴漢をする傾向があることと、必ず痴漢することは言うまでもなく異なります。 機械学習のモデルは補助的にはとても有益ですが、主なる意思決定を行わせるのであればミスっても良いようなターゲットに用いるべきです。 少なくとも今のところ、ご期待に添えるような性能は持ち合わせておりません。
oookabe

2018/05/01 13:47

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

0

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

投稿2018/04/28 19:41

R.Shigemori

総合スコア3376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

leilei

2018/04/29 04:15 編集

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

2018/04/29 07:49

ニューラルネットおよびその発展形も万能なものではなく、(1)正しい問いを設定すること、(2)問いに適合した正しいデータを収集すること、が満たされていなければ、正しい答えを導くモデルは学習できないと思っています。 先の野菜と果物の例示の場合、視覚的に類似しているものは同じ仲間という発想は、分類学的アプローチとして正しいのですが、分類学において野菜・果物というクラス分けは存在しないため、視覚的情報からこのふたつに分類するという問いそのものがあまり適切とは言えないと考えます。実は、分類学的にいうと、視覚的類似性→名称→共通する属性という感じで整理され、ヒトはこの属性(草か樹木か、食する部位、単年か多年か、など)をもとに野菜と果物を識別しているので、視覚的情報から名前を識別し、名前から果物と野菜に識別するというモデルのほうが高い精度となることが期待できます。 一方、乗用車の見た目からスポーツカーとファミリーカーを識別するモデルの場合、そもそも、双方のクルマのコンセプトの相違が見た目に現れているはず(少なくとも各会社が考えるスポーツカー・ファミリーカーとは何か)なので、視覚的情報から二値分類の問いを設定することはそれほどおかしなものではないかと思います。 結局のところ、手法の問題というよりも、問いの正しさと学習用に収取したデータと問いとの整合性のほうが重要だというほうが真実に近いような気がします。
oookabe

2018/04/29 11:45 編集

CNNは画像的な特徴しか頼りがないで分類するのに対して、 人間は他の理由で物を分類する場合は多い。 --------- 論理的にきれいで、問題の本質につくコメントは貴重ですね。 R.Shigemori さん ほんとうに有難うございます!
oookabe

2018/04/29 11:47

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

2018/04/29 13:27

mkgreiさんの実験結果も当然の部分があって、数字は「文字」としては意味がありますが、偶数・奇数は数が有している属性であって文字そのものが持つ属性ではありません。よって、文字そのものから偶数・奇数と識別するよりも数字を識別してから偶数・奇数を判定するほうが合理的であると推測されます。 なお、CNNであっても画像以外の属性を取り扱うことは公開されている事例がないだけで不可能なものではありません。さすがに、画像と属性情報(草・樹木、食する部位 など)を交えて畳み込みなどをするのはやりすぎのように思いますが、CNNなどを通じて取り出した特徴量と属性情報を加えた隠れ層3層くらいのモデルとするとほど良いかもしれません。(まぁ、モデルの構造が複雑なので、それ以外にいい方法が考えられない限り、私は採用しないと思います)
oookabe

2018/05/01 04:36 編集

>画像と属性情報(草・樹木、食する部位 など)を交えて畳み込みなどをするのはやりすぎのように思いますが、 CNNの基本原理として、強引に数値合わせする(これで好まれる既定の射影関係を成立させる)のですから、「やりすぎ」ではなく、より複雑な数値合わせの可能性が提供されるかもしれません。 それから、CNNは「視覚的な特徴」を抽出すると言っても、人間が言う「視覚的な特徴」とは基本は全然違い、単に強引に数値合わせするための副産物(これに対して人間が勘違い)に過ぎず、それ以上の意味はないと思います。 なので、理論上では局所関連性のある情報ならCNNの中に交えても宜しいかと思います。
guest

0

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

投稿2018/04/29 08:34

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

投稿2018/04/30 10:25

編集2018/04/30 11:44
leilei

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問