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

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

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

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

機械学習

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

Q&A

解決済

2回答

1298閲覧

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

oookabe

総合スコア126

深層学習

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

機械学習

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

1グッド

1クリップ

投稿2018/03/18 03:31

編集2018/03/18 03:34

皆さんお元気ですか

この間<<DNNをon line訓練したい場合の訓練データのunbalance問題>>を題した質問に
https://teratail.com/questions/117564?whotofollow=
の中の下記のような話を取り上げられました。
【実際に学習させたAIへの考察ですが、
女性の画像はかなりの確率でビルゲイツ氏かイーロンマスク氏が95%以上になり、
これは今回の学習させたデータが全員男性の顔なので、
女性の顔が渡されるとうまく判定できないけど、
とりあえず各ラベルの確率を合わせて100%にして出力しないといけないからこういう結果になるのではないかなーと推測しました。
難しい。】

もし上文の中の**「かなりの確率で」という表現は
『TEST段階で、未学習の女性画像に対しても、DNNの出力(確率分布)において
突出的に高い値を持つカテゴリが現れた**』という意味であれば、
これはDNN自身の特徴を云々以前の問題ではと感じます。
自分が以下のように推測しますが、この分野のプロではないので、間違ったら、是非是非ご指摘頂きたいと思います。。

その訓練済みのDNNは
① 構造的に単に一つの「弱学習器」に過ぎないか、あるいは
② 学習したサンプルの独特的な(本質的な)特徴を身に付けていないか、
③ "過学習"の反対で-----"学習不足"か
④ "汎化性が高過ぎ"か

のいずれかが原因でしょう。

{上記理由は極一般的で,この分野において『常識的な』事かもしれませんね}

それから、ごめんなさい! 
上記4つの原因を解消するために、それぞれの手法も教えてくださいませんか(指針的なものでも宜しいでございます)。

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

leilei👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

① 構造的に単に一つの「弱学習器」に過ぎないか

wikipediaより

弱い学習機は、真の分類と若干の相関のある分類器と定義される。対照的に、強い学習機とは真の分類とよく相関する分類器である。

学習時にないデータをテストする際の、「真の分類」を定義できるのかわからないのですが、
これは言葉の定義の話になると思います。

② 学習したサンプルの独特的な(本質的な)特徴を身に付けていないか

学習したサンプルの特徴を身につけています。
学習したサンプル間の相違を身につけています。
学習していないサンプルの特徴は身につけていません。

③ "過学習"の反対で-----"学習不足"か

テストクラスを学習していないので、明らかに「学習不足」です。

④ "汎化性が高過ぎ"か

未学習クラスに対する汎化性能はありません。
学習済みクラスに属する未学習データに対する汎化性能を持っているはずです。


MNISTに対してやってみましたが、
softmax + categorical_crossentropy + thresholdよりも
sigmoid + binary_crossentropy + thresholdの方が自信を持って未学習データを誤認する傾向を軽減できていました。
また、学習するクラスが多いほうが少ないものよりも未学習データを誤認識する傾向を軽減できていました。
それでも無視できないほどの誤認をします。
小手先のテクニックで処理するよりも、モデルの仮定を見直して「未学習データ」を減らす努力が必要です。


機械学習はパラメータを調整することによって全知全能の神を召喚する儀式ではありません。
学習していないことはどうなるのかわからないのが自然です。

人間の場合に置き換えて想像してみてください。
ある人は生まれてから3匹のしば犬しか見たことがありません。
それぞれa、b、cという名前だったとしましょう。
今、突然dという名前のしば犬をこの人に見せて、この人はこのしば犬をなんだと思うのかについての疑問です。
a、b、cのうち、一番似ていたものだと思うはずです。

別の人はしば犬ソムリエでした。
この人は今まで数多のしば犬とa、b、cを見たことがあります。
この人がdを見るとa、b、cではないことはわかるが、さすがに名前がdだとは予測できなかったことでしょう。

その程度のことです。

このアナロジーから、転移学習することによって誤認率を下げられることが示唆されます。

投稿2018/03/18 04:10

編集2018/03/18 05:07
mkgrei

総合スコア8560

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

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

oookabe

2018/03/18 05:56 編集

mkgreiさん 有難うございます! >学習するクラスが多いほうが少ないものよりも未学習データを誤認識する傾向を軽減できていました。 これは自分のイメージと正反対ですね。 どう解釈すればいいでしょうか。 また『学習するクラスが多い』ほうは[softmax + categorical_crossentropy + threshold]で行い、 『学習するクラスが2つしかない』場合は[sigmoid + binary_crossentropy + thresholdの方]で行うのでしょうか。 またどうぞ宜しくお願いします。
oookabe

2018/03/18 06:53 編集

>人間の場合に置き換えて想像してみてください。 人間の場合、猫をよく見て、雀をよく見て、象が見たことがないと言って、 強引に"猫だ!"、或いは"雀だ!" と言わないですね (^^ -----この場合「知らない!」というのです。 学習データの数の多少問題は必ずある程度発生します、理想にならないと思います(そもそもサンプル数に関して標準指標がないからですね) サンプル数のunbalanceによってたまには"虎"を"猫"として認識されても容認できても(ある程度似ているから)、しかし、いくら"象"を見た事がないと言って、無理やりに、そして『自信満々』に"猫だ!" というのは深刻な問題ですね(とても似ていないだから)。 ★何らかのテクニックでこのようなケースを避けないでしょうか。 (それとも 機械だから、避けられない? 哲学的な問題?)
mkgrei

2018/03/18 11:19

> これは自分のイメージと正反対ですね。 学習するクラスが多ければ、バイナリ学習において、「Aでない」という情報をより与えていることになります。 いずれも両方を行ってその比較です。 -------- 「知らない」というのはそのように判断するための情報がなければなりません。 例えば、 > しかし、いくら"象"を見た事がないと言って、無理やりに、そして『自信満々』に"猫だ!" というのは深刻な問題ですね(とても似ていないだから)。 これはいくらなんでもこんなに大きな「猫」はいないという知識を使っています。 哲学というよりも原理的な問題です。 例えば、 「人」と「犬」を分類した後に、「いす」を分類したいとしましょう。 「四本脚」だから「犬」、「大きい」から「人」。 いずれも論理的な破綻はありません。 https://miyaneta.exblog.jp/6327928/ ラフレシアはDNA解析されるまでポインセチアの仲間であることがわかりませんでした。 DNA配列を見える種族からすると、人間はどうしてラフレシアをひと目で見てポインセチアの仲間であることがわからないのか不思議でたまらなかったことでしょう。 モデルの学習時に十分な情報を与えていますか? 例えば「男」「女」を分類するとき、男性の写真はみんなヒゲが生えたものを与えたとしましょう。 そうすれば、ヒゲのない男性の写真は「男」分類される保証はありますか?
oookabe

2018/03/18 12:40

回答本当に有難うございます。 【 学習するクラスが多ければ、バイナリ学習において、「Aでない」という情報をより与えていることになります。 いずれも両方を行ってその比較です。】 さすが、、、そうですか。 A classの認識精度を上げるために、わざと対比classを設け、訓練して、微妙な差しかないが、A classでないケースをAから分離させるという手ですね。
oookabe

2018/03/18 14:37 編集

mkgrei さんが書かれました: > 「知らない」というのはそのように判断するための情報がなければなりません。 そうですか。これは動物世界の認識ロジックと随分違いますね。 動物世界ではこれまで見た物と「差が大きい」だから、「知らない物」としますね。別に特定の「知らない物」に関してその他の"情報"があるわけではなくて、これまでの経験との「差」だけできちんと「知らない物」として判断するのです。 逆にその「知らない物」に対して"情報"を持っていれば、「知らない物」と言えなくなりますね。 簡単な想像実験をやってみましょうか。 例えば、10人の小学校1年生に 希少動物「キタケバナウォンバット」と「トンキンシシバナザル」のモノクロ写真を沢山見せて、それぞれの名前を覚えさせておいてから、 まったく同じサイズの「キューバオオアシナガコウモリ」のモノクロ写真を見せて、"これは何?"と聞いたら、 恐らく8人以上は"知らない!"と言います。 決して、この「キューバオオアシナガコウモリ」に関してなんらかの情報を知っててから"知らない!"と言うでなく、全く知らない(= これまでの写真との差が大きい)だから、"知らない!"と言うでしょう。 なんで、D-CNNにこの程度の機能はないのか、理解できません。 即ち、どうしてD-CNNは「差」という重大な情報を利用できないの?という疑問ですね。 実際低等動物も含め、「差」こそ認識のキーであると思います。 その「差」が何らかの閾値以下または以上であれば、同定や区別が成立して「認識」が発生します。 D-CNNの場合でも、トレーニングになかったTEST画像を入力したら、トレーニング画像と同様に「特徴」が抽出されるはずで、 この「情報」をD-CNNの末尾の判定部に与えるわけです----即ち、この異質なTEST画像に関する「情報」がないわけでもないですね。 このTEST画像の「情報/特徴」がトレーニング画像のそれとの「差」が一定水準以上であれば、 「未知」として判定すれば良いでは、と思います。 "「未知」として判定できない"と言われたら、やはり原理的に不可能でなく、比較的に小さいテクニック的な問題かと思います。 自分が解決能力ありませんが、問題としてここに提起し、皆さんの英知や議論をお伺いしたい同時に、 これからの自分の勉強課題にしたいですね。 ★勿論自分はまだ誤解している可能性があります。 ★深刻的な反論や見解ほどいつも心より歓迎し、お待ちします。
mkgrei

2018/03/18 14:39

おっしゃることも部分的には理解できます。 問題は、機械学習のモデルにこれまでの経験がないわけです。 あれは小学生どころか赤ちゃんに覚えさせようとしている状態です。 まさに仰るように「差」が学習されるものです。 「キタケバナウォンバット」と「トンキンシシバナザル」しか「見たことのない」モデルには「他のものも存在するという概念」がありません。 そのような概念の形成は、まず「名前はないがなにかがあるらしいという認識」そして、その「命名」の二段階に別れます。 認識するためには学習が必要です。 これは、正しくないことを教えてあげるということです。 いま、学習データにこのようなデータを与えておりませんので、まず「認識」することはありえません。 --- 最後に書いたつもりが、ページ更新で情報がどこかに失われたようですね。 最後に「転移学習」についてのコメントをしていました。 「転移学習」を使うことによって、誤認率を軽減できることが期待できるかもしれません。 検証していないのでただの仮説ですが。もしかしたらなにか論文があるかもしれません。 --- 知ることについてよく考えてみてください。 「差」を学習するには「比較項目」と「その差」が必要です。 例えば「1」と「0」と「8」を区別するのに必要な情報は「穴の数」です。 すると「6」は「0」に分類されてもおかしくありません。 次に「1」と「0」と「6」と「8」を学習させると穴の数以外に、「穴が1個の場合」突き出ているものがあるかどうかを見る必要があります。 それならば「9」は「6」です。 次に「1」と「0」と「6」と「9」と「8」を学習させます。穴が1個の場合突き出ている場合それが「上なのか」下なのかも重要らしいことが学習されます。 すると「4」は「9」でしょう。 どうやら下に突き出ている場合、それが「2本なのか」1本なのかに意味があるようなのです。 これをどこかで切り上げてみてください。 原理的に考えて誤認してしかるべきでしょう。
oookabe

2018/03/19 01:50

素晴らしいご解説! mkgreiさん ありがとうございます!! お陰様で機械学習の特徴に関する理解が深まった感じですね。 ★ それに DNNの仕事原理やそのような原理由来の弱点について悟った事があります。   疑問点もありますから、別途掲示し、是非ご指導宜しくお願い致します。
guest

0

そもそもの部分で指摘させていただくと、
『女性の画像はかなりの確率でビルゲイツ氏かイーロンマスク氏が95%以上になり』
という文章に対する誤解があると思われます。

この文章には、①女性の画像をビルゲイツ氏かイーロンマスク氏と誤認する確率がかなり高い、②この誤認をする場合、95%以上の確率でそうであると計算する、というふたつの意味が含まれています。
これをモデルの性能評価の観点からまとめると、『この識別器は、かまり高い割合で自信満々で女性をビルゲイツ氏またはイーロンマスク氏と誤認識する』ということになります。これは、女性の画像に対する学習不足と言わざるを得ません。特に学習データには女性のデータがなく、試験データには含まれているようであると、そう判断するしかなく、mkgreiさんが指摘されているようにモデルの仮定を見直しなどを行うべきでしょう。

投稿2018/03/18 05:39

R.Shigemori

総合スコア3376

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

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

oookabe

2018/03/18 06:29 編集

R.Shigemoriさん ご教授いただき本当にありがとうございます。 「かなりの確率」でなくて、後ろの95%はDNNの出力確率に相当ですね。 うっかりして誤解しました。 >試験データには含まれているようであると、そう判断するしかなく これについて、やはりDNN自身に何らかの工夫で回避したいですね。 少なくとも「これについて分からない」「知らない」、「自信がない」というような情報をDNNから取得したいですね。 サンプルの多少は絶対的指標が無く、これによってよく誤分類が「密かに」起こされれば応用面に非常に不都合です。 機械だから無理か? 自分は何も言えませんが、 人間の子供でも猫をよく見て、雀をよく見て、象を始めてみたら、 決して、"猫" や”雀”のどれかに無理矢理に「認識」するのではく、 「これ、分からない!」「知らないやつ!」と言うはずですし。 犬レベルの動物であっても、見知らぬ人に対して「見知らぬ人だから、うちの飼い主としましょう」のような行為はしないです。
R.Shigemori

2018/03/18 08:24

おっしゃっているような問題は、結構昔から議論されていて、最終的に、答えや考慮すべき事項(これは説明変数側の話になります)の境界外のものは考慮することも予測することもできないということで決着しています。したがって、2値分類問題において『知らない』を識別することは、この境界を越えた答えを求めていることになるので、今のところ不可能だと思うべきでしょう。 したがって、対策として王道なのは、『Aである』、『Bである』、『わからない』の3クラス識別問題として定義するとともにモデルに見合ったデータを準備することでしょう。 もうひとつは、モデルが出力する各クラスに属する確率値をもとにモデルをデプロイするアプリ側で、『どちらともいえない』を識別する方法が考えられます。ただし、そのためには、誤りのケースの確率値がギリギリの線(例えば2値識別なら50%近辺、3値識別なら33%近辺)になるようにチューニングされている必要があります。
oookabe

2018/03/18 14:43

R.Shigemoriさん ご教授ありがとうございます! R.Shigemoriさんが書かれました: > Aである』、『Bである』、『わからない』の3クラス識別問題として > 誤りのケースの確率値がギリギリの線(例えば2値識別なら50%近辺、3値識別なら33%近辺)になるようにチューニング ★ いずれもなかなか啓蒙的アイディアで素晴らしいですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問