2016-06-01 1 views
0

私はMLPを実行しており、一連の値を10種類のクラスに分類しています。トレーニングを停止するタイミング - LOOV MLP

簡略化して、私はオブジェクトの400の「読み取り値」を与えるソナーを持っています。各読み値は1000浮動小数点値のリストです。

私は合計100個のオブジェクトをスキャンし、それらを分類し、leave-one-outの相互検証に基づいてモデルを評価したいと考えています。

各オブジェクトについて、データを99個のオブジェクトのトレーニングセットと残りのオブジェクトのテストセットに分割します。私はトレーニングセット(99オブジェクト、99 * 400 "読み取り値")をMLPに送り、テストセット(1オブジェクト、1 * 400 "読み取り値)を使用して検証します。

私の質問は:最終的な "ベスト"モデルとして使用する訓練のエポック私は周りをぐるぐると、最高の検証確度を持ったエポックを使用すると言った人がいましたが、これは私に騙されているようです。 (私の思考プロセスでは、トレーニングでランダムに体重を入れ直すと、人工的に高い検証精度が得られ、将来スキャンできる新しいオブジェクトに有用なモデルを提供しない可能性があります)

SOトレーニングエポックを使用すると答えた最高の検証精度を与える時間:

whats is the difference between train, validation and test set, in neural networks?

ベスト、 Deckwasherあなたは通常、あなたの汎化/真・エラーを(どのように良い見えないデータ上の私の予測がある)、最適化したい

+0

これは数学の問題のように見えますが、プログラミングの問題ではありません。非常に有効で、よく定義され、明確に述べられている問題ですが、残念ながら間違ったサイトにあります。 –

答えて

1

これは、早期停止と呼ばれます。

必要なのは検証セットです。

各エポックの後に、検証セットに対して必要な評価指標を計算します。

- 変数に設定されている検証よりもパフォーマンスの良いモデルのパラメータを常に保存します。

- 2回またはn回反復した場合、検証結果が改善されず、エポックを停止し、最高のパフォーマンスパラメータでMLPをリセットします。

-これまでに保存した検証セットよりも優れたモデルを使用してテストセットで結果を計算します。

0

(この概念を含む論文についてはhereを参照。ただし、別の文脈で - > SGD + SVM):

  • 近似エラー:データは、お使いのモデルによって説明可能性がどのように良い
  • 推定エラー:期待するのではなく、経験的リスクを最小限に抑える効果リスク
  • 最適化エラー:対策、予想されるリスク
    • 最適化のおおよその最適化の影響 エラーは、いつ停止する真・エラーが部分的にしかあなたの最適化エラー(決定によって記述されていること、(ここではあなたの変数である)長いあなたが見

をオプティマイザを実行することによって減少させることができます)。しかし、良い相互検証スキームは、真のエラーの記述/評価に関してはるかに正確です。(それは基本的にCVが行われる理由です。いくつかのコストで)。したがって、CVベースの使用にエポックのchosingは非常に一般的です。

もちろん、クロスバリデーションスキームをやや正気にすることも非常に重要です。小さすぎるkを使用しないk-foldベースのスキームがしばしば使用されます(少なくともNN以外のアプリケーションでは、NNにはコストがかかるかもしれません)。

0

停止する時期を決定する1つの方法は、テストセット(または検証セット)の精度を評価し、各エポック後に印刷することです。最大エポックに達すると、それを止めることができます。

もう1つの方法は、現在の重みとバイアスの精度が現在の最大値よりも良い場合に、重み付けとバイアスのセットをファイルまたはディスクに保存して(Javaで)ピケット化(シリアル化)またはシリアル化(Javaで)することです。

関連する問題