いい質問です。文献には多くの停止ルールがありますが、コンテキストに応じてそれぞれに長所と短所があります。optim
たとえば、R の関数には、少なくとも3つの異なる停止規則があります。
maxit
、つまり、所定の最大反復回数。私が文献で見た別の同様の代替案は、タイムアウトまでの最大秒数です。必要なものがおおよそのソリューションである場合、これは非常に合理的です。実際、モデルのクラス(特に線形モデル)があり、早期停止はパラメーター値にガウス分布を優先させることに似ています。頻繁に使用する人は、以前よりも「L2基準」を持っていると言いますが、彼らはそれを行うのが合理的なことだと考えます。私はこの論文をざっと読みましたが、それは早期停止と正則化の関係について述べており、より多くの情報にあなたを導くのに役立つかもしれません。しかし、短いバージョンは、はい、あなたが何をするかに応じて、早期停止は完全に立派なことです
abstol
すなわち、関数がゼロに「十分に近づく」ときに停止します。これはあなたには関係ないかもしれません(あなたはゼロを期待しているようには聞こえません)ので、私はそれをスキップします。
reltol
、これは2番目の提案のようなものです。改善がしきい値を下回ったときに停止します。これについて理論がどれだけあるかは実際にはわかりませんが、おそらく、反復の最大数が少ない場合よりもこの方法で最小値が低くなる傾向があります。それがあなたにとって重要である場合は、コードを繰り返し実行する価値があるかもしれません。
停止ルールの別のファミリーは、トレーニングデータではなく、検証データセット(または相互検証)でコスト関数を最適化することに関係しています。モデルを何に使用するかによっては、トレーニングデータのローカルミニマムに達する前に停止することをお勧めします。これは、過剰適合を伴う可能性があるためです。Trevor Hastieがこれを行う良い方法について書いていると確信していますが、引用を思い出せません。
妥当な時間内に最小値を見つけるためのその他の可能なオプションには、次のものがあります。
確率的勾配降下。一度にデータのごく一部の勾配を推定するだけで済みます(たとえば、「純粋な」SGDの1つのデータポイント、または小さなミニバッチ)。
より高度な最適化関数(ニュートン型法や共役勾配など)。目的関数の曲率に関する情報を使用して、下り坂を移動するときに適切な方向を示し、より良いステップサイズを取得します。
更新ルールの「モメンタム」用語。これにより、オプティマイザーは、目的関数でキャニオンの壁を区切るのではなく、下り坂でより良い仕事をします。
これらのアプローチはすべて、私がオンラインで見つけたこれらの講義ノートで説明されています。
お役に立てれば!
編集ああ、あなたはまた、それはあなたの「ウォームスタート」から近い最適に得るために、より少ない反復をとるように(例えば、問題の簡単なバージョンを解くことによって)開始値を良くしようとすることができます。