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

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

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

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

Python 3.x

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

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

機械学習

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

解決済

[機械学習] EarlyStoppingを用いて,一番いい精度で学習を止める方法

harug
harug

総合スコア22

Keras

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

Python 3.x

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

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

機械学習

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

2回答

0リアクション

0クリップ

550閲覧

投稿2022/07/14 07:54

前提

現在kerasを用いた機械学習で,EarlyStopping関数を用いて過学習の回避とエポックの決定の効率化を試みています.

そこでまずは例として以下のような実装を行ったとします.

python

early_stopping = EarlyStopping(monitor='val_loss', min_delta=0.0, patience=3, mode='min' ) # 学習 history = model.fit( X_train, y_train, epochs=20, batch_size=32, validation_data=[X_test, y_test], callbacks=[early_stopping] # CallBacksに設定 )

そこで仮にval_lossにおける実行結果が以下のようになったとします.

Epoch 1/20 val_loss: 0.4000 Epoch 2/20 val_loss: 0.3500 Epoch 3/20 val_loss: 0.3600 Epoch 4/20 val_loss: 0.3200 Epoch 5/20 val_loss: 0.3300 (省略) Epoch 14/20 val_loss: 0.1000 Epoch 15/20 val_loss: 0.0500 Epoch 16/20 val_loss: 0.0700 Epoch 17/20 val_loss: 0.0600 Epoch 18/20 val_loss: 0.0800

15エポック目までは順調に値は小さくなっていくのですが,16~18エポックまでの値が15エポック目の値よりも大きいため(patience=3のため)18エポックで学習が打ち切られています.

そこで少し疑問に思い質問です.
結局は最終エポック目がそのモデルの精度となるので,この場合のモデルはval_loss: 0.0800として生成されてしまうと思います.
ベストスコアが15エポック目のval_loss: 0.0500であるのに対して,patienceを設定することで,それよりも先(今回であれば18エポック目)のlossやaccuracyの値が悪いところで学習を止めてしまうと,その分精度の劣るモデルになってしまうと思うのですが…どうなんでしょう.

理想としては,この場合はval_loss: 0.0500とするモデルを作成したいのです.
早期かつ一番精度のいい状態で学習を停止してくれるライブラリ,またはそのような方法があれば教えていただきたいです.

よろしくお願いします.

補足情報(FW/ツールのバージョンなど)

ubuntu 20.04
Python 3.8.10

tensorflow-gpu 2.5.3
keras 2.8.0
numpy 1.19.5

jupyter lab 2.3.2

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Keras

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

Python 3.x

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

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

機械学習

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