documentationによると、@mtrwの回答を拡張するために、これらの条件のいずれかが発生するとトレーニングが停止します。
- エポックの最大数に達しました:
net.trainParam.epochs
- 最大時間を超過しました:
net.trainParam.time
- パフォーマンスは目標に合わせて最小化されます:
net.trainParam.goal
- パフォーマンスの勾配はmin_gradを下回ります:
net.trainParam.min_grad
- mu がmu_maxを超えている:
net.trainParam.mu_max
- 検証のパフォーマンスが、最後に低下してからmax_failの回数を超えて増加しました (検証を使用している場合):
net.trainParam.max_fail
エポックと時間の制約により、トレーニング期間に上限を設けることができます。
目標の制約は、パフォーマンス (エラー) がそれを下回ったときにトレーニングを停止し、通常は時間/精度のトレードオフのレベルを調整できます: 精度の低い結果が実行を高速化します。
これは、勾配の大きさが min_grad より小さい場合、トレーニングが停止するという点で、min_grad (勾配は「降下」の強さを示します) に似ています。誤差関数があまり変化していない場合は、プラトーに達しており、あまり改善しないため、おそらくトレーニングを停止する必要があるという事実から理解できます。
mu、mu_dec、およびmu_maxは、重み更新プロセス (バックプロパゲーション) を制御するために使用されます。
max_failは通常、オーバーフィッティングを避けるために使用されますが、スピードアップにはあまり使用されません。
私のアドバイスは、時間とエポックをアプリケーションの制約が許す限り最大限に設定することです (そうしないと、結果が悪くなります)。また、 goalとmin_gradを制御して、必要な速度/精度のトレードオフのレベルに到達することができます。max_failsは主に優れた汎化能力を確保するために使用されるため、時間の節約にはならないことに注意してください。