0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

最急降下法(Gradient Descent) を解釈してみる

Last updated at Posted at 2024-12-31

最急降下法(Gradient Descent)とは

きちんとした定義は色々な文献で散見されるので、ここでは自分なりの理解を述べます。

最急降下法とは、①最適な位置(最小値)を探すために②勾配に従って降下する方法 です。

以下、詳しく見ていきます。

①最適な位置を探す

最急降下法は「最適化問題」と呼ばれる分野でも、特に関数の最小値を求める場合に使われます。

たとえば、誤差関数や消費エネルギーを表す関数があるとき、その最小値を見つけたい場合に活躍します。

②勾配に従って降下する

「勾配に従う」というのは、関数を微分して得られる傾きを利用することを意味します。

傾きが大きい(急)ほど大きく進み、傾きが小さいほどゆっくり進むというのが直感的なイメージです。
最小値付近では、勾配が 0 に近いので、ごく小さなステップで近づいていきます。

アルゴリズムを見ていきます。現在の値 $x^{(k)}$を次の値 $x^{(k+1)}$に更新するとき、以下の式を用います:

\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} 
- \alpha \frac{d}{d \mathbf{x}} f\!\bigl(\mathbf{x}^{(k)}\bigr)

※$\alpha$は学習率などと呼ばれ、更新量を調整するパラメータです

この更新式を繰り返すことで、目的の最小値へ近づいていくのが最急降下法です。

まさに英語名の通りで、 “Gradient(勾配)” に “Descent(降下)” することになります。

具体例

具体例として、二次関数$f(x)=\frac{1}{2}x^2$の最小値を考えてみましょう。
いま、

\frac{d}{dx}f(x)=x

なので$x_0=4$, $\alpha=0.5$とすると、

x_1= x_0-\alpha\frac{d}{dx}f(x_0)= 4 - \frac{1}{2}\times4=2

以上より、$x_0$から$x_1$は2進みます。

スクリーンショット 2024-12-31 16.19.43.png
$f(x)=\frac{1}{2}x^2$ の最急降下法

計算を繰り返すと、

2 -> 1 -> 0.5 -> 0.25 -> 0.125 -> ...

のように移動し、最終的には 0 に向かって収束していきます。

以下は簡単な MATLAB のコード例です。

x_k = 0;
alpha = 0.5;
maxIter = 

for k = 1:maxIter
    x_old = x_k;

    grad_f = x_old;
    
    x_k = x_k - alpha * grad_f;
end

終わり

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?