勾配降下法

深層学習、数学、勾配降下法
勾配降下法 cover image

## 導入

関数 f(x)f(x) があり、その最小値を見つけたいと想像してください。あなたならどうしますか ?

シンプルですよね?次の方程式を解くだけで済みます。

f(x)=0f'(x) = 0

問題は、ff' の式を見つけるのが必ずしも簡単ではないということです。特に、複雑な関数を扱う深層学習では、式は非常に複雑になる傾向があるためです。したがって、導関数 ff' の公式を見つける必要なく関数の最小値を提供できる別の方法を見つける必要があります。

直感を鍛えてみましょう

対応するグラフを持つ関数 f があると仮定しましょう。

Graph 1

ランダムな点 x0x_{0} から始めましょう。目標は、この点を移動して f(f'(x*)=0) = 0 になるように xx* にどんどん近づけることです。したがって、問題は 2 つの部分に分けることができます。

  • xx をどちらの方向に移動すればよいでしょうか?左か右 ?

  • どのくらい動かせばいいですか?

方向

最初の質問に答えるために、直感を養いましょう。次の点を見てください。

Graph 2

Graph 3

ご了承ください:

  • x0x_{0} が最適点 xx* の右側にある場合、その接線は上になります。

  • x0x_{0} が最適点 xx* の右側にある場合、その接線は下に下がります。

線の方向は、その傾きの符号によって決まります。

  • 線が上昇する \暗\暗示 傾き aaです。

  • 線が下に向かう \暗\暗示 する傾き aaです。

次の点に注意してください: \

特定の点 x0x_{0} における関数の接線の傾きは、その点 f(x0)f'(x_{0}) における導関数以上のものではありません。

tangent(x0):g(x)=f(x0).(xx0)+f(x0)tangent(x*{0}): g(x) = f'(x*{0}).(x-x*{0}) + f(x*{0})

x0x_{0} をどこに移動すればよいですか?」 という質問に対する答えとしては、次のようになります。

  • f(x0)<0f'(x_{0}) < 0     \implies x0x_{0}xx*     \implies の右側に x0x_{0} を左側に移動する必要があります。

  • f(x0)>0f'(x_{0}) > 0     \implies x0x_{0}xx*     \implies の左に x0x_{0} を右に移動する必要があります。

手順

次に 2 番目の質問です。x0x_{0} をどのくらい移動する必要がありますか?

次の例を見てください。

Graph 4

Graph 5

次のように結論付けることができます。

  • x0x_{0}xx* に近い => 接線の傾きが小さい => f(x0)f'(x_{0}) が小さい。

  • x0x_{0}xx* から遠い => 接線の傾きが大きい => f(x0)f'(x_{0}) が大きい。

両方の質問に答えることで、点 x0x_{0} の導関数を知ることによってのみ、最適な点 x0x_{0} の方向と距離について多くの洞察が得られるという結論に達しました。

勾配降下法

勾配降下法は、前の 2 つの質問の答えを定式化したものです。これは、ランダムな初期点 x0x_{0} から開始して関数の最小 xx* を近似する最適化反復アルゴリズムです。アルゴリズムは次のように記述されています。

xn+1=xnlr×dfdx_nx*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x\_{n}}

どこ:

  • dfdxn\frac{\mathrm{d} f}{\mathrm{d} x*{n}} は、点 xnx*{n} における ff の導関数にすぎません。

  • lrlr は、ステップの大きさを決定する正の定数です。

次の点に注意してください。

  • xnx_{n}xx* の右側 => dfdxn>0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 => xn+1=xn正のx_{n+ 1} = x_{n} - 正の => xnx_{n} は左に移動します。

  • xnx_{n}xx* の左側 => dfdxn<0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0 => xn+1=xn+正のx*{n +1} = x*{n} + 正の => xnx_{n} は右に移動します。

  • xnx_{n}xx* に近づく => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}}00 に近づく => xを小規模に更新nx_{ を小規模に更新n}

クイズ

  • 勾配降下法が反復を停止するのはいつですか:

  • xnx_{n} が十分に小さい場合。

  • xnx_{n}x0x_{0} に近いとき。

  • dfdx_n=0\frac{\mathrm{d} f}{\mathrm{d} x\_{n}} = 0 の場合。 XXX

  • x0x_{0} を選択するにはどうすればよいですか:

  • ランダムに選択します。 XXX

  • xnx{n} 付近で取得します。

  • それは問題によって異なります。

  • 勾配降下法が必要な理由:

  • コンピューターは微分を計算するほど強力ではないため。

  • 深層学習モデルの導関数式を見つけるのは非常に難しいため。 XXX

  • 関数には複数の極小値があるため。


Career Services background pattern

キャリアサービス

Contact Section background image

連絡を取り合いましょう

Code Labs Academy © 2025 無断転載を禁じます.