すべてのパラメーターについて偏微分によって得られた方程式を解くことによってコスト関数を微分し、パラメーターを見つけ、コスト関数が最小になる場所を見つけることができる場合。また、導関数がゼロである複数の場所を見つけることは可能であると思います。これにより、そのようなすべての場所をチェックして、グローバルな最小値を見つけることができます。
代わりに勾配降下法が実行されるのはなぜですか?
すべてのパラメーターについて偏微分によって得られた方程式を解くことによってコスト関数を微分し、パラメーターを見つけ、コスト関数が最小になる場所を見つけることができる場合。また、導関数がゼロである複数の場所を見つけることは可能であると思います。これにより、そのようなすべての場所をチェックして、グローバルな最小値を見つけることができます。
代わりに勾配降下法が実行されるのはなぜですか?
回答:
たとえば、線形モデルの場合でさえ、解析解がある場合でも、そのような反復ソルバーを使用するのが最善です。
例として、線形回帰を考える場合、明示的な解法では、複雑度行列を反転する必要があります。これは、ビッグデータのコンテキストでは法外になります。
また、機械学習の問題の多くは凸型であるため、勾配を使用すると、極値に到達することが保証されます。
すでに指摘したように、ニューラルネットワークのように、勾配法(逆伝播)が効率的なソルバーを提供する、関連する非凸問題がまだあります。繰り返しになりますが、これはディープラーニングの場合に特に関係があります。
勾配降下は必要ありません。多くの場合、勾配降下法は恐ろしく非効率的な最適化アルゴリズムです。反復法の場合、勾配が最も急な場所よりも移動する方向を見つけることがよくあります。
しかし、それは少し正解です。あなたの質問は、「なぜ反復法が必要なのですか?」例えば。問題が凸で、スレーターの条件が成立し、最適化のために1次条件が必要かつ十分な条件である場合は、直接解に進んでみませんか?つまり、解が連立方程式の解として説明できる場合、なぜその系を単純に解かないのでしょうか。答えはそれです:
微積分101では、「分析方法」を使用して関数を最適化する方法について学びました。コスト関数の導関数を取得し、導関数を0に設定して、方程式を解くだけです。これは本当におもちゃの問題であり、現実の世界ではほとんど起こりません。
現実の世界では、多くのコスト関数はどこでも導関数を持っているわけではありません(さらに、コスト関数は離散的であり、導関数をまったく持っていません)。さらに、導関数を計算することはできますが、方程式を分析的に解くことはできません(たとえば、を解く方法を考えてください分析的?数値的な答えはであると言えますが、分析的解法はわかりません)。いくつかの数値的手法を使用する必要があります(多項式の場合はここでなぜAbel Ruffin Theoremを確認するか)。
反復的な方法は使いやすく、非常に直感的に理解できます。方程式を解いて答えを得るのではなく、1つの関数を最適化したい場合、十分な反復の後、反復/ステップの数だけ答えを改善しようとすると、「真の答え」に近い答えが得られます。微積分を使用してを最小化すると、直接が得られますが、数値的な方法を使用すると、が得られる可能性があります。
ここで、これらの反復法がどのように機能するかを理解することが重要です。重要な概念は、より良いソリューションを得るために入力パラメーターを更新する方法を知ることです。を最小化するとします(このコスト関数はどこでも微分可能ではありませんが、「ほとんどの場所」で微分可能であることに注意してください。「ほとんどの場所」で更新する方法を知っているので、これで十分です。)、現在、あなたは、コストは、今度はを更新して目的関数を小さくします。どうしますか 両方を減らしたいと言うかもしれませんが、なぜですか?実際、あなたは暗黙的に 勾配の概念「少量の変化、で何が起こるか」。。で、誘導体である、その負の勾配回学習率と言う、である私たちは私たちのソリューションを更新して、により良いコストを持っています。1 、1 (0.997 、0.997 )
あなたが言及したアプローチは、例えば線形回帰の場合、一連の線形方程式を解くためにのみ使用できますが、シグモイド活性化を伴うニューラルネットワークなどの場合、非線形方程式のセットを解くために言うと、勾配降下がアプローチです行くために。したがって、勾配降下法はより一般的なアプローチです。
線形方程式の場合でも、線形方程式のセットによって与えられる行列のサイズは非常に大きく、メモリ要件を制約するのが難しい場合があります。