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

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

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

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

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1309閲覧

ディープラーニングの損失率の目安(keras + tensorflow)

askyq

総合スコア46

Keras

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

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2021/06/02 10:36

Windows 10 on macOS Parallels Desktop + C# 9.0 + Keras.NET + Visual Studio 2019で、
あるスポーツ競技の結果予測を行うディープラーニングを行っています。

fitを行う時に、損失率や正答率がこのように出てきます。途中まで載せます。

2021-06-02 19:04:06.077316: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found 2021-06-02 19:04:06.083405: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine. 2021-06-02 19:04:24.327254: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'nvcuda.dll'; dlerror: nvcuda.dll not found 2021-06-02 19:04:24.332435: W tensorflow/stream_executor/cuda/cuda_driver.cc:326] failed call to cuInit: UNKNOWN ERROR (303) 2021-06-02 19:04:24.336976: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: DESKTOP-TRDQSA8 2021-06-02 19:04:24.341720: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: DESKTOP-TRDQSA8 2021-06-02 19:04:24.347900: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX AVX2 To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags. 2021-06-02 19:04:24.515449: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:176] None of the MLIR Optimization Passes are enabled (registered 2) Epoch 1/200 19168/19168 [==============================] - 17s 823us/step - loss: 0.7032 - accuracy: 0.0865 Epoch 2/200 19168/19168 [==============================] - 16s 838us/step - loss: 0.6794 - accuracy: 0.0872 Epoch 3/200 19168/19168 [==============================] - 16s 824us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 4/200 19168/19168 [==============================] - 16s 843us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 5/200 19168/19168 [==============================] - 16s 853us/step - loss: 0.6794 - accuracy: 0.0872 Epoch 6/200 19168/19168 [==============================] - 16s 851us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 7/200 19168/19168 [==============================] - 15s 809us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 8/200 19168/19168 [==============================] - 17s 908us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 9/200 19168/19168 [==============================] - 19s 981us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 10/200 19168/19168 [==============================] - 18s 915us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 11/200 19168/19168 [==============================] - 17s 882us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 12/200 (中略 lossもaccuracyも全て同じ数字です) Epoch 60/200 19168/19168 [==============================] - 16s 850us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 61/200 19168/19168 [==============================] - 15s 777us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 62/200 19168/19168 [==============================] - 14s 743us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 63/200 19168/19168 [==============================] - 14s 742us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 64/200 19168/19168 [==============================] - 14s 750us/step - loss: 0.6793 - accuracy: 0.0872 (後略)

損失率が0.6793という数字で収束しているように見えます。
他のサイトを見ていると、0.00...といった数字だったり、0.1...という数字だったり、少なくとももっと低い数字になっています。

そもそも今回題材にしているスポーツ競技の結果は常に不安定で、データと結果が必ずしも比例するわけではありません。
強い選手がビリになったり、実績のない選手が勝利したりすることも、わりと頻繁にあります。
このような事情があっても、損失率として0.6台は適切なのでしょうか?高すぎないでしょうか?
見直すべきであれば、見直すポイントはありませんか?

以下、C#のコード内の設定です。
データの行数は約4万8000(1年分)です。

cs

1var model = new Sequential(); 2 3model.Add(new Dense(300, activation: "relu", input_shape: new Shape(90); 4model.Add(new Dropout(0.2); 5model.Add(new Dense(128, activation: "relu"); 6model.Add(new Dropout(0.2)); 7model.Add(new Dense(128, activation: "relu"); 8model.Add(new Dropout(0.2)); 9model.Add(new Dense(1, activation: "sigmoid"); 10 11model.Compile(optimizer: "adam", loss: "binary_crossentropy", metrics: new string[] { "accuracy" }); 12 13model.Fit(x, y, batch_size: 2, 14 initial_epoch: this.epochs, epochs: this.epochs + 200, verbose: 1);

さらに情報が必要であれば教えて下さい。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

accuracyからも分かる通り低すぎる気がします.詳細が不明なことから何とも言えないのですが,参考程度に聞いて下さい.以下にしてみたらどうかlistを記述しておきます.

  • 最初はoverfitしても良いのでDropoutを抜いてみて下さい

  • 入力データが0, 1の正解データを持つ2値データであることを確認してみて下さい

  • Adamのlearning rateを変えて試して下さい

  • データ自体にラベルノイズがどのくらい含まれているか確認してみて下さい

投稿2021/06/03 08:30

HelloQ

総合スコア81

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

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

askyq

2021/06/03 08:56

お返事ありがとうございます。正解データは0または1のどれかになっています。 試してみますが、なにぶん元になるデータが多く、データベースから取り込む時間も必要で学習に数時間かかる状態です。数日お待ち下さい。 質問ですが、この場合のラベルノイズとはどのようなものでしょうか?順当な結果にならなかった場合とかでしょうか? 順当な結果にならない確率は、試合勝利=結果の数値が1になった場合と定義するなら、統計上40%くらいです。 データ自体はAPIで取得したもので内容に間違いはないと思いますし、あってもデータの量が約5万に及びますのでよほどのことがない限り精度への影響はほとんどないと考えます。
HelloQ

2021/06/03 13:45

ラベルノイズとは、正解が0でなければならないデータのラベルが1となっている場合があり,このような時に学習が上手くいかない時があります.kaggleのCassavaコンペ等はこのような課題に取り組むことが目的とする有名なコンペです. APIで取得した場合でしたら比較的信頼性があるので大丈夫かと思います.
askyq

2021/06/23 13:07

お返事が大変遅くなり申し訳ございません。 ご提案いただいた案も試してみましたが、結局、AdamではなくRAdamを採用しました。 損失値は改善されましたが、肝心の的中率がなかなか上がらず今も試行錯誤している途中です。 ご提案内容、大変参考になりました。ベストアンサーにさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問