これはしばらくの間私を悩ませてきたものであり、満足のいく答えをオンラインで見つけることができなかったので、ここに行きます:
凸最適化に関する一連の講義をレビューした後、Newtonの方法は、勾配降下よりもはるかに優れたアルゴリズムであり、グローバルに最適なソリューションを見つけることができます。これは、Newtonの方法は、はるかに少ないステップ。ニュートン法などの2次最適化アルゴリズムが、機械学習問題で確率的勾配降下ほど広く使用されないのはなぜですか?
これはしばらくの間私を悩ませてきたものであり、満足のいく答えをオンラインで見つけることができなかったので、ここに行きます:
凸最適化に関する一連の講義をレビューした後、Newtonの方法は、勾配降下よりもはるかに優れたアルゴリズムであり、グローバルに最適なソリューションを見つけることができます。これは、Newtonの方法は、はるかに少ないステップ。ニュートン法などの2次最適化アルゴリズムが、機械学習問題で確率的勾配降下ほど広く使用されないのはなぜですか?
回答:
勾配降下法は、導関数の知識を使用して関数を最大化します。ルート検索アルゴリズムであるニュートンの方法は、2次導関数の知識を使用して関数を最大化します。2次導関数が既知で、計算が簡単な場合、これはより高速になります(ロジスティック回帰ではニュートンラプソンアルゴリズムが使用されます)。ただし、2次導関数の分析式は複雑で扱いにくい場合が多く、多くの計算が必要です。二次導関数を計算するための数値的手法も多くの計算を必要とします- 一次導関数を計算するために値が必要な場合、二次導関数にはが必要です。N 2
より多くの人々が機械学習*でニュートンの方法を使用する必要があります。過去数年にわたって機械学習に手を出してきた数値最適化のバックグラウンドを持つ人としてこれを言います。
ニュートンの方法を正しく使用すれば、ここでの回答(および文献でも)の欠点は問題になりません。さらに、問題となる欠点は、勾配降下を同じ量以上遅らせますが、メカニズムはそれほど明白ではありません。
Wolfe条件でlinesearchを使用するか、リージョンを使用または信頼すると、サドルポイントへの収束が防止されます。適切な勾配降下の実装もこれを行う必要があります。論文の中で参照Cam.Davidson.Pilonの答えは鞍点の存在下での「ニュートン法」の問題点を指摘し、彼らが提唱修正は、ニュートン法です。
ニュートンの方法を使用する場合、(密な)ヘシアン全体を作成する必要はありません。行列ベクトル積のみを使用する反復法(たとえば、共役勾配のようなクリロフ法)を使用して、ヘッセ行列の逆行列をベクトルに適用できます。たとえば、CG-Steihaug信頼領域法を参照してください。
勾配の計算に既に使用されている随伴方程式と同じ形式の2つの高次随伴方程式を解くことにより、ヘッセ行列ベクトル積を効率的に計算できます(たとえば、ニューラルネットワークトレーニングの2つの逆伝播ステップの作業)。
病気の条件付けは、反復線形ソルバーの収束を遅くしますが、勾配降下を等しくまたはさらに遅くします。勾配降下法の代わりにニュートン法を使用すると、難易度が非線形最適化段階(状況を改善するために多くのことができない場合)から線形代数段階(数値線形代数事前調整技術の兵器庫全体で攻撃できる)にシフトします。
また、計算は「多くの安価なステップ」から「いくつかの費用のかかるステップ」に移行し、サブステップ(線形代数)レベルでの並列処理の機会が増えます。
これらの概念に関する背景情報については、NocedalとWrightの著書「Numerical Optimization」をお勧めします。
*もちろん、Newtonの方法はペナルティ関数を促進するL1または他の同様の圧縮されたセンシング/スパース性には役立ちません。なぜなら、それらは必要な滑らかさを欠いているからです。
私は最近これを自分で学びました-問題は、ニュートン法が収束したい高次元空間でのproliferation点の増殖です。この記事を参照してください:高次元の非凸最適化における点問題の特定と攻撃。
実際、local点の数と局所的最小値の比は、次元Nとともに指数関数的に増加します。
勾配降下ダイナミクスは、負の曲率の方向に従うことでerror点から反発して誤差を小さくしますが、...ニュートン法は点を適切に処理しません。以下で議論するように、サドルポイントは代わりにニュートンのダイナミクスの下で魅力的になります。
2つの理由の組み合わせ:
関数見てください
対照的に、勾配降下法は点につながりません。勾配はサドルポイントではゼロですが、上記の勾配からわかるように、わずかなステップアウトで最適化が引き離されます。y変数の勾配は負です。
あなたは2つの質問をしました。ニュートンの方法を使用する人が増えないのはなぜですか、そしてなぜ多くの人が確率的勾配降下法を使用するのですか?これらの質問にはさまざまな答えがあります。これは、Newtonの方法の計算負荷を軽減するアルゴリズムが多く、多くの場合SGDよりも優れているためです。
計算します。したがって、ヘッセ行列の計算は高価ですが、それを逆にしたり、最小二乗を解くことは、しばしばさらに悪化します。(まばらな機能がある場合、漸近性はより良く見えますが、他の方法もより良く動作するため、スパース性はニュートンを比較的魅力的にしません。)
第二に、単なる勾配降下法ではなく、多くの方法がニュートンよりも頻繁に使用されます。それらは多くの場合、ニュートンの手法の模造品です。つまり、ステップあたりの計算コストは低くなりますが、収束するにはより多くの反復を必要とするという意味でニュートンのステップに近似します。いくつかの例:
2次導関数の近似をまったく扱いたくない場合、勾配降下法は1次情報のみを使用するため魅力的です。勾配降下は、学習率に単位行列を掛けたものとして、逆ヘッシアンを暗黙的に近似しています。私は個人的に、勾配降下法を使用することはめったにありません。L-BFGSは、目的関数と勾配を指定するだけでよいため、実装が簡単です。勾配降下法よりも優れた逆ヘッセ近似があります。勾配降下には学習率の調整が必要だからです。
非常に多数の観測値(データポイント)がある場合もありますが、少数の観測値からほぼ同様に学習できます。その場合、観測のサブセットを使用して循環する確率的勾配降下法のような「バッチ法」を使用できます。
勾配降下方向の計算はより安価であり、その方向でライン検索を実行することは、より信頼性が高く、最適な方向への着実な進歩の源です。要するに、勾配降下法は比較的信頼性が高い。
ニュートンの方法は、最初の反復でヘッセ行列を計算する必要があるという点で比較的高価です。その後、後続の各反復で、ヘッシアンを完全に再計算するか(ニュートンの方法のように)、または以前の反復のヘッシアンを(準ニュートンの方法で)単に「更新」することができます。
非常に適切に機能する関数、特に完全に2次関数の極端な場合、ニュートンの方法が明確な勝者です。完全に2次の場合、Newtonの方法は1回の反復で収束します。
動作が非常に不十分な関数の反対の極端な場合、勾配降下は勝つ傾向があります。検索方向を選択し、その方向を検索し、最終的には小さいが生産的なステップを実行します。対照的に、これらの場合、特に準ニュートン近似を使用しようとすると、ニュートンの方法は失敗する傾向があります。
勾配降下法とニュートン法の間には、Levenberg–Marquardtアルゴリズム(LMA)のような方法がありますが、名前が少し混乱しているのを見ました。要点は、物事が混oticとして混乱している場合は勾配降下型の情報に基づいた検索を使用し、物事がより線形で信頼できるものになった場合にはニュートン法に基づいた検索に切り替えることです。
ニュートンの方法は、解に近い場合、またはヘシアンがゆっくりと変化する場合にうまく機能しますが、収束の欠如と明確性の欠如に対処するためにいくつかのトリックが必要です。
多くの場合、正確な解決策ではなく改善が求められます。その場合、NewtonまたはNewtonのようなメソッドの追加コストは正当化されません。
可変メトリックまたは信頼領域メソッドなど、上記を改善するさまざまな方法があります。
サイドノートとして、多くの問題で重要な問題はスケーリングであり、ヘッセ行列は優れたスケーリング情報を提供しますが、コストはかかります。ヘッセ行列を近似できる場合、多くの場合、パフォーマンスが大幅に向上します。ニュートンの方法はある程度、アフィン不変であるという点で「最良の」スケーリングを提供します。
SGDでのニュートンの方法の使用に関しては、特に次のような多くの困難があります。
ヘッセ行列が必要です-ノイズの多い勾配から十分な精度で妥当なコストで推定する方法は?
完全なヘッセ行列はコストがかかりすぎます-例えば、部分空間(どの部分空間?)
ニュートンの方法は、勾配がゼロの近接点に直接引き付けます...これは通常、ここではサドルです。代わりにそれらを撃退する方法は?例えば、サドルフリーニュートンは負の曲率方向を反転しますが、固有値の符号を制御する必要があり、
オンラインで行うのは良いことです-単一のポイントで多くの計算を行う代わりに、より多くのローカル情報を活用する多くの小さなステップに分割してみてください。
1次から2次に小さなステップで進むことができます。たとえば、運動量法に平均3回の更新を追加するだけで、ステップサイズをよりスマートに選択できるように、その方向に放物線を同時にフィットできます。同時に勾配降下のために残りの座標を使用できます。