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

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

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

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

Python 3.x

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

パラメータ

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

機械学習

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

Q&A

解決済

2回答

3130閲覧

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

harug

総合スコア28

Keras

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

Python 3.x

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

パラメータ

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

機械学習

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

0グッド

0クリップ

投稿2022/07/14 07:54

前提

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

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

python

1early_stopping = EarlyStopping(monitor='val_loss', 2 min_delta=0.0, 3 patience=3, 4 mode='min' 5 ) 6 7 8# 学習 9history = model.fit( 10 X_train, 11 y_train, 12 epochs=20, 13 batch_size=32, 14 validation_data=[X_test, y_test], 15 callbacks=[early_stopping] # CallBacksに設定 16 )

そこで仮に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

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

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

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

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

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

guest

回答2

0

ベストアンサー

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

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

TakaiY

2022/07/15 00:58

ありがとうございます。勉強になりました。
harug

2022/07/15 08:21

ありがとうございます. そちらを参考にModelCheckpointを実装すると理想どおり機能してくれました.
guest

0

一部だけ回答します。

その分精度の劣るモデルになってしまうと思うのですが…どうなんでしょう

はい、その通りです。
未来は予測できませんので、__通り過ぎないと高みであっっことはわからない__のです。 パラメータを調整することで通り過ぎる距離を減らすことはできますがばらつきに弱くなります。

投稿2022/07/14 09:47

TakaiY

総合スコア12765

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

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

harug

2022/07/14 10:44

ご回答いただきありがとうございます. そうなんですね…少し精度の劣るモデルになってしまうことはやむを得ないことなのですね.
TakaiY

2022/07/14 12:18

そうですね。 学習をやりなおして、15回で切ったとしても、学習は同じように進むとは限らないのでえ、精度の高いものができるわけでもありませんし。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問