勾配降下の終了条件を定義する方法は?


24

実際、勾配降下の終了条件をどのように定義できるかを尋ねたいと思いました。

繰り返しの数に基づいて、たとえば100回の繰り返しのパラメーター値を考慮して停止できますか?

または、2つのパラメーター値「new」と「old」の違いがように非常に小さくなるまで待つ必要がありますか?これには間違いなく時間がかかります。106

最善の方法は何ですか?私の場合、1回の反復でもかなりの時間がかかります。この状況では、2番目の条件を待つと、数週間かかることもあります。

したがって、どのアプローチを使用する必要があります。このシナリオに取り組む方法は?


1
明示的には述べられていませんが、MLEを見つけようとしていると思います。結果は、パラメータ空間、尤度関数、およびニーズに完全に依存します(別名、ベストは十分に定義されていません)。漸近効率などの理論的正当性を探している場合。Le'Cam条件下では、1ステップのMLEを使用できます(さらに仮定すると、勾配降下にNewtonの方法とスコア関数を使用しているということです)。これはあなたの初期値は、そのようなことであることが必要です確率インチ n1/2θ^0θ
ジョナサンリジック

「新しい」-「古い」は十分に小さいと言ったときに、勾配降下の誤った終了条件ですか?(定理のような不動点が当てはまる場合、その条件は大丈夫ですか?)
チャーリーパーカー

ffバツ3×2ftolabs ftolrelxtolabs

回答:


19

いい質問です。文献には多くの停止ルールがありますが、コンテキストに応じてそれぞれに長所と短所があります。optimたとえば、R の関数には、少なくとも3つの異なる停止規則があります。

  • maxit、つまり、所定の最大反復回数。私が文献で見た別の同様の代替案は、タイムアウトまでの最大秒数です。必要なものがおおよそのソリューションである場合、これは非常に合理的です。実際、モデルのクラス(特に線形モデル)があり、早期停止はパラメーター値にガウス分布を優先させることに似ています。頻繁に使用する人は、以前よりも「L2基準」を持っていると言いますが、彼らはそれを行うのが合理的なことだと考えます。私はこの論文をざっと読みましたが、それは早期停止と正則化の関係について述べており、より多くの情報にあなたを導くのに役立つかもしれません。しかし、短いバージョンは、はい、あなたが何をするかに応じて、早期停止は完全に立派なことです

  • abstolすなわち、関数がゼロに「十分に近づく」ときに停止します。これはあなたには関係ないかもしれません(あなたはゼロを期待しているようには聞こえません)ので、私はそれをスキップします。

  • reltol、これは2番目の提案のようなものです。改善がしきい値を下回ったときに停止します。これについて理論がどれだけあるかは実際にはわかりませんが、おそらく、反復の最大数が少ない場合よりもこの方法で最小値が低くなる傾向があります。それがあなたにとって重要である場合は、コードを繰り返し実行する価値があるかもしれません。

停止ルールの別のファミリーは、トレーニングデータではなく、検証データセット(または相互検証)でコスト関数を最適化することに関係しています。モデルを何に使用するかによっては、トレーニングデータのローカルミニマムに達する前に停止することをお勧めします。これは、過剰適合を伴う可能性があるためです。Trevor Hastieがこれを行う良い方法について書いていると確信していますが、引用を思い出せません。

妥当な時間内に最小値を見つけるためのその他の可能なオプションには、次のものがあります。

  • 確率的勾配降下。一度にデータのごく一部の勾配を推定するだけで済みます(たとえば、「純粋な」SGDの1つのデータポイント、または小さなミニバッチ)。

  • より高度な最適化関数(ニュートン型法や共役勾配など)。目的関数の曲率に関する情報を使用して、下り坂を移動するときに適切な方向を示し、より良いステップサイズを取得します。

  • 更新ルールの「モメンタム」用語。これにより、オプティマイザーは、目的関数でキャニオンの壁を区切るのではなく、下り坂でより良い仕事をします。

これらのアプローチはすべて、私がオンラインで見つけたこれらの講義ノートで説明されています。

お役に立てれば!

編集ああ、あなたはまた、それはあなたの「ウォームスタート」から近い最適に得るために、より少ない反復をとるように(例えば、問題の簡単なバージョンを解くことによって)開始値を良くしようとすることができます。


固定数の反復を選択する際の問題は、コスト曲線を明確にプロットできない限り(そしてノイズが小さい場合)、特に最適化関数が複雑で誰が知っている場合、反復の数が多すぎるかを知ることが難しいことです最小値がいくつあるか、初期化をランダム化した場合、これは問題をさらに悪化させます。これは、反復の適切な「少ない」数を推測することをさらに困難にするためです。早期停止を実際に使用する場合、実際にこの問題にどのように対処しますか?オーバーシュートやアンダーシュートが多すぎないようにするにはどうすればよいですか?
チャーリーパーカー

私は何をreltol意味するのか(つまり、「改善」がなくなるとき)を明確にしたいと思います。最初の改善は、コスト関数の削減を意味します。つまり、コスト関数が十分に減少しなくなる(または増加し始める)と、1つが停止するということです。実際には「|古い-新しい|」を行いません 更新ルールの種類ですよね?
チャーリーパーカー

1
abstolあなたはコスト関数の勾配ではなく、コスト関数自体の許容値を取っている場合は、このパラメータにのみ意味があります。ローカルオプティマイザーでは、勾配の値はゼロです。ただし、関数の値ではありません。
マリオ・ベセラ

「ウォームスタート」は非常に巧妙なトリックです。おかげで
Mehdi LAMRANI
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.