勾配降下法が必要なのはなぜですか?


9

すべてのパラメーターについて偏微分によって得られた方程式を解くことによってコスト関数を微分し、パラメーターを見つけ、コスト関数が最小になる場所を見つけることができる場合。また、導関数がゼロである複数の場所を見つけることは可能であると思います。これにより、そのようなすべての場所をチェックして、グローバルな最小値を見つけることができます。

代わりに勾配降下法が実行されるのはなぜですか?


2
関数の導関数を一般的に0に設定するにはどうすればよいですか?勾配降下法などのアルゴリズムを使用します。
クリフAB

3
勾配降下は、参照している方程式を解くために使用される方法と考えることができます。このような方程式を賢い代数操作で一般的に解くことができるという信念の下にいる場合は、ロジスティック回帰のためにそうすることをお勧めします。
Matthew Drury、2016年



すべてを分析的に解決することはできません。たとえ可能であれば、数え切れないほどの数のゼロがあったとしても、すべての重要なポイントをチェックするのに長い時間がかかります。
ピノキオ2016年

回答:


7

たとえば、線形モデルの場合でさえ、解析解がある場合でも、そのような反復ソルバーを使用するのが最善です。

例として、線形回帰を考える場合、明示的な解法では、複雑度行列を反転する必要があります。これは、ビッグデータのコンテキストでは法外になります。O(N3)

また、機械学習の問題の多くは凸型であるため、勾配を使用すると、極値に到達することが保証されます。

すでに指摘したように、ニューラルネットワークのように、勾配法(逆伝播)が効率的なソルバーを提供する、関連する非凸問題がまだあります。繰り返しになりますが、これはディープラーニングの場合に特に関係があります。


2
部分的なピボットを使用したQR分解の方がより正確で高速であるため、ここでは行列の反転は少し難解ですが、そうです、QRはまだです。問題になる可能性のある十分に大きなシステム(例:10,000を超える変数)の場合は同意します。現代のハイテクアプローチは、反復Krylov部分空間法(共役勾配法、GMRESなど)で解を近似することです。O(n3)
Matthew Gunn、

1
一部の人々が混乱を感じるかもしれない点は、線形システムをどのように解決することが最適化問題であるかです。もちろん答えは、線形システムを解くことは、二次の目的を最小化するようにリフレームできるということです。線形システムを解くいくつかの反復法は、2次目的関数を反復的に最小化しているという観点から理解するのが簡単です。(たとえば、クリロフ部分空間法の共役勾配のステップ方向は勾配に基づいています...勾配降下に緩やかに関連しています。)
Matthew Gunn

12

勾配降下は必要ありません。多くの場合、勾配降下法は恐ろしく非効率的な最適化アルゴリズムです。反復法の場合、勾配が最も急な場所よりも移動する方向を見つけることがよくあります。

しかし、それは少し正解です。あなたの質問は、「なぜ反復法が必要なのですか?」例えば。問題が凸で、スレーターの条件が成立し、最適化のために1次条件が必要かつ十分な条件である場合は、直接解に進んでみませんか?つまり、解が連立方程式の解として説明できる場合、なぜその系を単純に解かないのでしょうか。答えはそれです:

  • 二次最適化問題の場合、1次条件は線形方程式のシステムであり、線形システムを効率的に解くことができるため、ほとんど直接解に進むことができます。我々は行う(例えばQR分解、以下の警告で)一次条件を使用して、システムを解きます。
  • ただし、より一般的には、1次条件は非線形方程式系を定義し、非線形システムは解くのが非常に難しい場合があります。実際、非線形方程式のシステムを数値的に解く方法は、最適化問題として再定式化することです...
  • 以下のために非常に大きな線形システム、QR分解と部分枢軸と直接システムを解くことは実行不可能になります。人々は何をしますか?!反復法!(例えば、反復クリロフ部分空間法...)

7

微積分101では、「分析方法」を使用して関数を最適化する方法について学びました。コスト関数の導関数を取得し、導関数を0に設定して、方程式を解くだけです。これは本当におもちゃの問題であり、現実の世界ではほとんど起こりません。

現実の世界では、多くのコスト関数はどこでも導関数を持っているわけではありません(さらに、コスト関数は離散的であり、導関数をまったく持っていません)。さらに、導関数を計算することはできますが、方程式を分析的に解くことはできません(たとえば、を解く方法を考えてください分析的?数値的な答えはであると言えますが、分析的解法はわかりません)。いくつかの数値的手法を使用する必要があります(多項式の場合はここでなぜAbel Ruffin Theoremを確認するか)。x7+x352+ex+log(x+x2)+1/x=0x=1.4786

反復的な方法は使いやすく、非常に直感的に理解できます。方程式を解いて答えを得るのではなく、1つの関数を最適化したい場合、十分な反復の後、反復/ステップの数だけ答えを改善しようとすると、「真の答え」に近い答えが得られます。微積分を使用してを最小化すると、直接が得られますが、数値的な方法を使用すると、が得られる可能性があります。f(x)=x2x=0x=1.1234×1020

ここで、これらの反復法がどのように機能するかを理解することが重要です。重要な概念は、より良いソリューションを得るために入力パラメーターを更新する方法を知ることです。を最小化するとします(このコスト関数はどこでも微分可能ではありませんが、「ほとんどの場所」で微分可能であることに注意してください。「ほとんどの場所」で更新する方法を知っているので、これで十分です。)、現在、あなたは、コストは、今度はを更新して目的関数を小さくします。どうしますか 両方を減らしたいと言うかもしれませんが、なぜですか?実際、あなたは暗黙的にf(x1,x2)=x12+x22+|x1+x2|(1,1)4.0(x1,x2)x1 x2勾配の概念「少量の変化、で何が起こるか」。xy。で、誘導体である、その負の勾配回学習率と言う、である私たちは私たちのソリューションを更新して、により良いコストを持っています。(1,1)(3,3)α=0.0011 1 0.997 0.997 (0.003,0.003)1,1(0.997,0.997)



4

あなたが言及したアプローチは、例えば線形回帰の場合、一連の線形方程式を解くためにのみ使用できますが、シグモイド活性化を伴うニューラルネットワークなどの場合、非線形方程式のセットを解くために言うと、勾配降下がアプローチです行くために。したがって、勾配降下法はより一般的なアプローチです。

線形方程式の場合でも、線形方程式のセットによって与えられる行列のサイズは非常に大きく、メモリ要件を制約するのが難しい場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.