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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

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

Q&A

解決済

1回答

1378閲覧

間違えたデータを再学習させて二度と間違えないように修正をmodelにする方法

dendenmushi

総合スコア98

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

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

0グッド

1クリップ

投稿2019/08/26 17:39

前提・実現したいこと

質問①
下記の掲載と似ている質問になるのですが、60000枚のMNISTを学習させたあとに間違えた1枚を学習させたところで、
オンライン学習
次回正答率はさほど変わらないものなのでしょうか。
統計学なので6万分の1の画像を学習させても次回正解になるとは限らないということなのでしょうか。
numpy配列の縦横のマス目の0~255の数値が全く同じであれば次回から正解していそうとは思いますがそれは間違えなのでしょうか。

質問②
私は自分で記載した4という数字を認識させたところ、9と初めに判定してしまいました。

python

1predictions = model.predict(img_list_np) 2 3pred = predictions[0] 4print(pred) 5for name, score in zip(class_names, pred): 6 print(f"{name}: {score:.2%}")

イメージ説明

そこで上記リンク(オンライン学習)の通りに学習させようと以下のコードを記載して実行しました。

python

1model.fit(img_list_np, npint_dim) 2predictions = model.predict(img_list_np) 3pred = predictions[0] 4print(pred) 5for name, score in zip(class_names, pred): 6 print(f"{name}: {score:.2%}")

しかし以下のように、なぜか正答率が分散してしまいました。
イメージ説明

他の方法(画像をshapeや次元数を合わせてtrainに追加してからmodel再学習する方法)でも目当ての間違えた画像を追加を試すことも試みましたが、そのときも分散してしまいました。いったいこれは何がおきているのでしょうか。

私の仮説は、4のラベルだけ増えて学習データの均衡が崩れたからでしょうか。といっても6万分の1ですが。

質問③
そもそも、上記の方法は、今までのtrain_dataの学習データに追加するように、手書き数字とラベルがモデルに加わったという認識で間違えないでしょうか。

質問④
そしてさらに私はもう一度学習をさせてみました。

イメージ説明

発生している問題・エラーメッセージ

すると、若干4の確率が上がったくらいの変化しかなかったです。通常一度間違えたのは2度と間違って認識してほしくないというのが、アプリ開発者としては当然なのですが、この機械学習においてはどのような方法で2度と間違わないように修正を加えることができるのでしょうか。アドバイスよろしくお願い致します。

~環境~
win10
Anaconda3
python3
jupyternotebook
keras
tensorflow

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問に示されている数値は正答率ではなく、0番目のデータの予測確率です。再学習後の結果は、どのラベルもほぼ同じ確率で予測していることを表します。

そんなにひどく悪くなることはまずありえないので、再学習のつもりでモデルを初期化してしまったとか、何らかの問題が発生している恐れがあります。


「2回目以降は間違えない」ようにすることはできません。もちろん稼働させながら得られるデータを取り込んでモデルを改善するための方法はいろいろあると思いますが、そういう方法を使ったとしても「2回目以降は間違えない」ことを保証するのは大変というか原理的に無理です。

マス目の0~255の数値が全く同じであれば次回から正解していそう

が実現したら過学習そのものです。

仮に「とても9っぽく見える4」を9と予測していたモデルを「改善」して予測を4にできたとしても、そのモデルの平均的な性能はかえって悪化するかもしれません。そういうことも考慮する必要があります。

投稿2019/08/26 18:07

hayataka2049

総合スコア30933

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

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

dendenmushi

2019/08/26 22:58

回答頂きありがとうございます。大変勉強になりました。分散してしまう件の話についてですが、通常分散は起こりえないですか?セッションか何かの原因があるのか不明でして…もし10個のラベルの1つのラベルの学習をさせた場合、そのラベルの予測確立が上がり、その他は余り影響がないように思えますが(あってもやや下がる程度)そうはならないのでしょうか。 少しずつ精度を上げようと学習させるやり方がmodel.fit(画像,ラベル)で間違えはないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問